Tubi TV APItubitv.com ↗
Access Tubi TV's free streaming catalog via API. Browse 100+ categories to retrieve movies and TV series with titles, cast, ratings, watch URLs, and more.
What is the Tubi TV API?
The Tubi TV API exposes the full free streaming catalog across 100+ content categories through 2 endpoints. Use list_categories to retrieve every available genre and collection slug, then pass those slugs to list_content to get up to 50 movies or TV series per page — each record including title, description, direct watch URL, cast, directors, ratings, duration, and release year.
curl -X GET 'https://api.parse.bot/scraper/3b4482fa-50a4-475d-a612-75d5c78654eb/list_content?limit=10&cursor=0&category=featured' \ -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 tubitv-com-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: Tubi TV Content API — browse free streaming catalog by category."""
from parse_apis.tubi_tv_content_api import Tubi, Category, CategoryNotFound
client = Tubi()
# Discover available categories (genres, collections, curated lists)
for cat in client.categories.list(limit=5):
print(cat.title, cat.slug)
# Construct a category by slug and browse its content with pagination
horror = client.category(slug="horror")
for item in horror.content(limit=3):
print(item.title, item.year, item.watch_url)
# Drill into one item from a different category
featured = client.category(slug="featured")
movie = featured.content(limit=1).first()
if movie:
print(movie.title, movie.duration_seconds, movie.actors)
# Typed error handling for a bad category
try:
bad = client.category(slug="nonexistent_category_xyz")
bad.content(limit=1).first()
except CategoryNotFound as exc:
print(f"Category not found: {exc.category}")
print("exercised: categories.list / category.content / typed error catch")
List movies and series for a given category on Tubi TV. Returns content with titles, descriptions, direct watch URLs, cast, ratings, and metadata. Use list_categories to discover available category slugs. Supports pagination via integer cursor; each page returns up to 50 items and a next_cursor value for the subsequent page (null when exhausted).
| Param | Type | Description |
|---|---|---|
| limit | integer | Maximum number of items to return per page (max 50). |
| cursor | integer | Pagination cursor. Use next_cursor from a previous response to fetch the next page of results. |
| category | string | Category slug identifying which genre or collection to retrieve. Use list_categories to discover all available slugs. |
{
"type": "object",
"fields": {
"items": "array of content objects with id, title, description, type, year, duration_seconds, watch_url, actors, directors, tags, ratings, poster_url, thumbnail_url, has_subtitle, language",
"cursor": "integer - Current cursor position",
"category": "string - Category display name",
"description": "string - Category description",
"next_cursor": "integer or null - Next cursor for pagination, null if no more results",
"category_slug": "string - Category slug identifier",
"total_in_page": "integer - Number of items returned in this page"
}
}About the Tubi TV API
Endpoints and Core Data
The list_categories endpoint returns the complete list of available categories on Tubi TV — over 100 in total — with each entry carrying an id, title, description, slug, and type. The slug field is what you pass as the category parameter to list_content. Categories span genres like horror, documentary, and comedy as well as curated thematic collections.
Content Records from list_content
Each item returned by list_content includes structured metadata: id, title, description, type (movie or series), year, duration_seconds, watch_url (a direct link to the title on Tubi), actors, directors, tags, and ratings. The endpoint accepts a category slug, a limit (max 50), and an integer cursor for pagination. The response also returns next_cursor — set to null when there are no further pages — along with total_in_page, the category display name, and the category description.
Pagination
Pagination is cursor-based using integers. Pass the next_cursor value from one response as the cursor input on the next call. When next_cursor is null, you have reached the end of that category's results. Each page returns at most 50 items, controlled by the limit parameter.
Coverage Notes
The API covers Tubi TV's catalog as served to the US/Mexico regional surface (tubitv.com/es-mx). Content availability varies by region, so catalog results reflect what is accessible in that locale. User-specific data — watchlists, viewing history, and account details — is not exposed.
The Tubi TV API is a managed, monitored endpoint for tubitv.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when tubitv.com 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 tubitv.com 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 searchable index of Tubi's free catalog organized by genre using category slugs and title metadata
- Populate a content recommendation engine with cast, directors, tags, and ratings from list_content
- Aggregate watch URLs to create a cross-platform free streaming guide
- Track catalog changes over time by periodically fetching category pages and comparing item IDs
- Enrich a media database with Tubi-specific release year, duration, and content type fields
- Generate genre-specific content lists with descriptions for editorial or discovery tools
| 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.