Blog

How to Access Netflix Catalog Data Programmatically

Netflix has no public API. Their catalog data -- titles, genres, ratings, cast, and availability by region -- is served through internal APIs that power the Netflix web interface. Unbrowse discovers these endpoints from real browsing sessions.

Lewis Tham
April 3, 2026

How to Access Netflix Catalog Data Programmatically

Netflix shut down its public API in November 2014. For over a decade, there has been no official way to programmatically access Netflix's catalog. No title search, no genre browsing, no availability checking, no rating data. The API is gone and Netflix has shown zero interest in bringing it back.

This has not stopped the demand. Streaming analytics platforms, content recommendation engines, media research firms, and entertainment industry tools all need Netflix catalog data. The workarounds -- unofficial databases like Unogs, manual data collection, and fragile web scrapers -- are all compromised in different ways.

But Netflix's web application still fetches all of this data through internal APIs. Every time you browse Netflix in a web browser, structured JSON responses deliver the catalog information that the interface renders. These shadow APIs are the most comprehensive source of Netflix catalog data available today.

The Problem with Current Approaches

There Is No Official API

This is not a case of limited access or restrictive terms. Netflix's public API was completely decommissioned in 2014. There is no developer portal, no API key signup, no partner program for catalog data access. The endpoint is gone.

Third-Party Databases Are Incomplete

Services like Unogs (Unofficial Netflix Online Global Search) maintain crowd-sourced catalogs, but they have significant gaps:

  • Delayed updates: New titles may not appear for days after launch
  • Missing metadata: Cast, crew, and detailed genre tags are often incomplete
  • Regional gaps: Coverage varies significantly by country
  • No engagement data: No way to see what is trending or popular
  • Rate limits: API access on free tiers is heavily throttled

Scraping Netflix Requires Authentication

Unlike most websites, Netflix does not have publicly accessible content pages. Every page on netflix.com requires an active subscription and login session. Scraping Netflix means maintaining paid accounts and managing authenticated sessions, which adds cost and complexity while violating their terms of service.

Shadow APIs: The Alternative

Netflix's web player is a sophisticated JavaScript application that communicates with dozens of internal API endpoints. These endpoints deliver:

  • Complete title metadata (name, year, rating, synopsis, cast, crew)
  • Genre categorization and micro-genre tags
  • Availability windows and regional catalog differences
  • Trending and popularity rankings
  • Recommendation data and similarity scores
  • Audio and subtitle language availability

When you browse Netflix in your browser, these API calls happen in the background. Unbrowse captures them during your normal browsing session and makes the endpoint patterns available for programmatic access.

What Unbrowse Discovers on Netflix

When Unbrowse indexes Netflix through a logged-in browsing session, it captures endpoints like:

Endpoint Pattern Data Returned Format
/pathEvaluator (Falcor API) Title metadata, episodes, artwork JSON (Falcor)
/api/shakti/*/search Search results with relevance ranking JSON
/api/shakti/*/genres Genre listings with title counts JSON
/api/shakti/*/billboard Featured/trending titles JSON
/api/shakti/*/preflight Region and plan availability JSON

Netflix uses Falcor (their open-source data fetching library) for most internal API calls. The Falcor JSON Graph format is well-documented and straightforward to work with once you understand the path syntax.

How It Works

# Install Unbrowse
npx unbrowse setup

# Browse Netflix while logged in to discover APIs
npx unbrowse go "https://www.netflix.com/browse"

# Resolve catalog data
npx unbrowse resolve "netflix trending titles this week"

After the initial browse session captures the API patterns:

import Unbrowse from 'unbrowse';

const ub = new Unbrowse();

const result = await ub.resolve(
  'netflix search for sci-fi movies released in 2025'
);

console.log(result.data);
// {
//   titles: [
//     {
//       id: 81234567,
//       title: "Example Sci-Fi Film",
//       year: 2025,
//       type: "movie",
//       maturityRating: "TV-MA",
//       synopsis: "...",
//       genres: ["Sci-Fi", "Thriller"],
//       cast: ["Actor A", "Actor B"],
//       runtime: 7200,
//       availableAudio: ["en", "es", "fr"],
//       availableSubtitles: ["en", "es", "fr", "de", "ja"]
//     }
//   ]
// }

Performance: Browser vs Shadow API

Metric Browser Automation Shadow API (Unbrowse)
Latency per request 5-10 seconds 300-600ms
Memory usage 500MB+ (headless Chrome) ~5MB
Cost per 1,000 requests $5.30 (compute + proxy) $0.05
Authentication handling Complex session management Cookie-based (automatic)
Data format HTML/React DOM Structured JSON (Falcor)
Catalog completeness Limited by scroll/navigation Full query access

For a streaming analytics dashboard that needs to track catalog changes across regions, shadow APIs can query thousands of titles in minutes versus the hours required for browser-based navigation.

When to Use This Approach

Shadow APIs via Unbrowse are appropriate when:

  • You need current catalog data. No third-party database is as up-to-date as Netflix's own internal APIs.
  • You are building streaming analytics. Track new additions, removals, and trending patterns across Netflix's catalog.
  • You need rich metadata. Internal APIs provide micro-genres, similarity scores, and content tags that no external source offers.
  • You already have a Netflix subscription. The initial discovery requires a logged-in session from your own account.

This approach requires an active Netflix subscription for the initial endpoint discovery phase. The shadow APIs use session authentication, so you need valid credentials from your own account. This is not a way to access Netflix content without a subscription.

Getting Started

# 1. Install
npm install -g unbrowse

# 2. Set up
unbrowse setup

# 3. Browse Netflix (must be logged in)
unbrowse go "https://www.netflix.com/browse"

# 4. Query the catalog
unbrowse resolve "netflix new releases this month"

The initial browse session uses your existing Netflix cookies to authenticate and discover API patterns. After indexing, catalog queries resolve through direct API calls using the captured session context.

FAQ

Is this legal?

You are accessing data from your own Netflix subscription through the same endpoints your browser uses. The data access does not bypass any authentication -- it uses your existing session credentials. However, Netflix's Terms of Service restrict automated access to their service. Use this approach for personal research and analysis, and be mindful of their terms.

How is this different from scraping?

Scrapers render Netflix pages in a headless browser, navigate through the UI, and parse DOM elements. Shadow APIs call Netflix's internal Falcor endpoints directly, receiving structured JSON graphs without rendering any UI. This is faster, more reliable, and returns richer data.

Does this require a Netflix subscription?

Yes. Netflix's content is behind authentication, and the shadow APIs use session-based authentication from your browsing session. You need an active subscription for the initial discovery and for ongoing API access.

Can I access catalog data for other regions?

Netflix's internal APIs include region-aware endpoints. The catalog data returned depends on the region associated with your account and connection. VPN-based region switching during the browse session can expose different regional catalogs.