Fishtank APIfishtank.live ↗
Access Fishtank.live clips, episodes, leaderboard, Stox prices, and live stream status via a structured JSON API. 9 endpoints covering all major site data.
What is the Fishtank API?
This API exposes 9 endpoints covering the full breadth of Fishtank.live data — clips, episodes, contestants, leaderboard rankings, stock prices, and live stream status. get_clips lets you search and paginate through the clip library with filters for room, season, and text query, while get_live_streams returns real-time online/offline status and playback IDs for every active stream.
No input parameters required.
curl -X GET 'https://api.parse.bot/scraper/79e8fcda-585e-4e22-8df0-4ab1af838604/get_initial_data' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace fishtank-live-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: Fishtank.live SDK — browse clips, check stocks, view site state."""
from parse_apis.fishtank_live_api import Fishtank, ClipSort, ClipNotFound, Episode
client = Fishtank()
# Get current site state (announcement, contestants, feature toggles)
state = client.sitestates.get()
print(state.announcement)
for contestant in state.contestants[:3]:
print(contestant.name, contestant.season, contestant.freeloader)
# Search for hot clips sorted by views, capped at 3 results
for clip in client.clips.search(sort=ClipSort.VIEWS, limit=3):
print(clip.name, clip.views, clip.likes)
# Drill into the first clip's comments
clip = client.clips.search(sort=ClipSort.HOT_SCORE, limit=1).first()
if clip:
for comment in clip.comments.list(limit=3):
print(comment.profile.displayName, comment.message[:60])
# Check contestant stock prices
for stock in client.stocks.list(limit=5):
print(stock.tickerSymbol, stock.currentPrice, stock.ipoPrice)
# Typed error handling: fetch a clip that might not exist
try:
detail = client.clips.get(id="999999999")
print(detail.name)
except ClipNotFound as exc:
print(f"Clip not found: {exc.clip_id}")
# Browse episode catalog
catalog = client.episodecatalogs.get()
for season_name in list(catalog.episodes)[:2]:
print(season_name)
print("exercised: sitestates.get / clips.search / clip.comments.list / stocks.list / clips.get / episodecatalogs.get")
Retrieve site metadata including active contestants, current poll state, recent TTS messages, feature toggles, and the current site announcement. Returns all bootstrap data needed to render the site's initial state.
No input parameters required.
{
"type": "object",
"fields": {
"initialData": "object containing announcement, contestants, poll, ttsMessages, featureToggles, and other site state"
}
}About the Fishtank API
Clips and Episodes
get_clips returns paginated clip results with fields including id, name, views, likes, liveStream, and source. You can filter by room (e.g. 'Bedroom 1', 'Bar', 'Laundry Room'), season, and a text search query, and sort by engagement (hot_score) or view count. get_clip_detail accepts a numeric clip_id and returns the full clip object plus a paginated comments array — each comment includes user profile data, message, likes, and nested replies. get_random_clip returns one clip from the full library with no inputs required. For episodes, get_episodes returns all content organized by season/category with id, title, thumbnail, duration, and createdAt per entry. get_episode_detail takes a UUID and returns the episode's comment thread in the same structure as clip comments.
Contestants, Leaderboard, and Stox
get_initial_data returns the full bootstrap payload used to initialize the site: active contestants, current poll state, recent ttsMessages, featureToggles, and the current site announcement. This is the most complete snapshot of current site state in a single call. get_leaderboard returns the top 30 users ranked by XP, with displayName, xp, tokens, and medals per entry. get_stox returns contestant-linked stock data including tickerSymbol, currentPrice, ipoPrice, averagePrice, totalShares, and order book entries — note the orders array is empty without authentication.
Live Streams
get_live_streams returns each stream's id, name, playbackId, season, access level, and interactive flag, alongside a loadBalancer map from stream ID to streaming server hostname and a liveStreamStatus map indicating which streams are currently online or offline. This makes it straightforward to determine which rooms are broadcasting at any moment.
The Fishtank API is a managed, monitored endpoint for fishtank.live — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when fishtank.live changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official fishtank.live API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a clip discovery tool that surfaces trending Fishtank.live content sorted by hot_score or view count
- Display a real-time dashboard showing which rooms are live using liveStreamStatus and playbackId fields
- Track contestant Stox price movements over time using currentPrice, ipoPrice, and averagePrice from get_stox
- Render a leaderboard widget showing top 30 users by XP, tokens, and medal counts
- Archive episode comments per season by iterating get_episodes UUIDs through get_episode_detail
- Monitor site announcements and active poll state by polling get_initial_data periodically
- Filter clip archives by specific room names (e.g. 'Director Mode') to analyze room-specific content
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.