๐ฟ Netflix Search Scraper
Pricing
from $15.00 / 1,000 results
๐ฟ Netflix Search Scraper
Netflix Search Scraper extracts Netflix movies and series with IMDb ratings, votes, genres, cast, episodes, posters, plot details, and full country-by-country streaming availability, including added and expiry dates. Perfect for streaming research, licensing, and AI pipelines.
Pricing
from $15.00 / 1,000 results
Rating
0.0
(0)
Developer
Data Minds
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
๐ฟ Netflix Search Scraper โ Movies, Series, IMDb Ratings & Country Availability
Netflix Search Scraper is a production-grade Apify Actor for Netflix catalogue data extraction โ no Netflix account, login or API key needed. Type a search term (or paste a title link) and it returns movies and series with IMDb ratings, votes, awards and plot, genres, cast & crew, season/episode breakdowns, posters and artwork, plus the feature nobody else gives you: full region-by-region streaming availability with added and expiry dates โ streamed to your Apify Dataset in real time.
๐ก Need a custom version, private integration, or a tailored pipeline? Email hello.dataminds@gmail.com.
Built for streaming analysts, content acquisition & licensing teams, media researchers, film/TV databases and recommendation apps, market-entry research and AI/LLM data pipelines โ anyone who needs clean, structured Netflix catalogue data without an official API that does not exist.
๐ Table of contents
- What is Netflix Search Scraper?
- Main features
- Who is this Actor for?
- What the scraper does
- Inputs it accepts
- Filtering configuration
- Output format (Dataset)
- Output fields reference
- Example output (JSON)
- Quick start
- Input parameters reference
- Migrating from another Netflix scraper
- Reliability & anti-blocking
- Integrations & automation
- Pricing & how to control cost
- Frequently asked questions (FAQ)
- Troubleshooting
- Help, support & custom builds
- Is scraping Netflix data legal?
- SEO keywords targeted
๐ฟ What is Netflix Search Scraper?
Netflix publishes no public API. Its own search box shows you a poster and a title and nothing else โ no IMDb score, no cast list, no way to ask "which countries is this actually streaming in, and when does it leave?", and no way to export anything.
This Actor closes that gap:
- Search the whole Netflix catalogue by keyword โ
fashion,true crime,korean thrillerโ each term searched separately, exactly like typing it into the search box. - Or paste links โ a Netflix search URL, or a link to one specific title. Bulk input and file upload supported.
- Filter like a professional โ movies vs series, release-year range, IMDb rating range, region, audio language, subtitle language, sort order, and "leaving soon" / "added in the last 24 hours".
- Get the full title record โ title, type, release year, runtime, synopsis, poster and large artwork, Netflix rating, maturity rating, and a direct
netflix.com/title/โฆwatch link. - Get the IMDb layer for free โ rating, vote count, metascore, genres, awards, full plot, IMDb id and link, plus Top-250 flags.
- Get the availability layer nobody else exposes โ every region a title streams in, the date it was added there, its expiry date, the audio and subtitle languages carried in that region, and which seasons are available. Netflix's own pages never show this, and most scrapers cap it at the first handful of countries.
- Get cast, crew, genres and full season/episode breakdowns โ opt-in, one toggle each.
- Stream every finished title to your Dataset โ export to JSON, CSV, Excel, XML, or pull them through the Apify API.
If you have ever needed "every Netflix thriller from 2018 onward rated 7+, with the countries it streams in and when it expires, as clean rows" โ this is the Actor.
โจ Main features
- ๐ Plain-text catalogue search โ type terms exactly as you would in Netflix's search box; each line is searched separately.
- ๐ Links accepted too โ Netflix search URLs and links to individual titles, in one bulk input field with file upload.
- ๐ฌ ๐บ Movies and series โ collect both, or restrict to one with a single toggle.
- ๐งฐ Rich filters โ release-year range, IMDb rating range, region + region-match mode (any / all / only these / not in these), audio language, subtitle language, sort order, and availability filters.
- ๐ Full region-by-region availability โ the headline feature: every streaming region with added date, expiry date, audio & subtitle languages and season coverage, not a truncated first-ten list.
- โญ Complete IMDb layer โ rating, votes, metascore, genres, awards, full plot, IMDb link, Top-250 film and TV flags.
- ๐ญ Cast & crew โ actors, directors, writers and producers, grouped by role.
- ๐บ Season & episode breakdown โ every season with its episode list, numbers, titles, synopses and stills.
- ๐ผ๏ธ Posters & artwork โ thumbnail, poster and large artwork URLs for every title.
- ๐ฆ Automatic network fallback โ direct โ datacenter โ residential, sticky after the first switch.
- ๐ Automatic source fallback โ if the main catalogue index is unreachable, the run switches to a backup index and still returns data instead of failing.
- ๐ฆ Live dataset writes and nine prebuilt table views โ Overview, Ratings & IMDb, Where it streams, Cast & genres, Seasons & episodes, Artwork & story, Links & ids, Source & quality, Errors.
- ๐ Run summary stored in the key-value store, with per-run totals.
- ๐ Drop-in compatible with the input field names other Netflix scrapers on the Store use.
๐ฅ Who is this Actor for?
- ๐ Streaming & media analysts โ track what is on Netflix in each market and how it changes.
- ๐ค Content acquisition and licensing teams โ see exactly which regions carry a title and when the licence expires.
- ๐ฌ Film & TV databases, recommendation apps โ bulk-populate a catalogue with ratings, genres, cast and artwork.
- ๐ Market-entry and competitive research โ compare catalogue depth across 37 regions.
- ๐ฐ Journalists & researchers โ back a "what's leaving Netflix" story with real dates.
- ๐ค AI / LLM pipelines โ clean, structured, typed rows ready for embedding or fine-tuning.
- ๐ Growth & SEO teams โ build "what to watch" content from live catalogue data.
โ๏ธ What the scraper does
- Reads your search terms and links, and works out what each one is asking for.
- Runs every search against the catalogue with your filters applied.
- Walks the result pages until your per-search limit is filled or the results run out.
- For each title, collects the extra detail the search results never show โ IMDb layer, region availability, genres, cast, episodes.
- Writes each finished title to your Dataset the moment it is ready, so an aborted or migrated run keeps everything collected so far.
- Reports what it could not find as explicit error rows, never as silent gaps.
๐ฅ Inputs it accepts
| Input | Example | What you get |
|---|---|---|
| ๐ Search term | fashion | Every matching movie and series, up to your limit |
| ๐ Search term | korean thriller | Same, searched separately from the other terms |
| ๐ Netflix search URL | https://www.netflix.com/search?q=documentary | Treated as a search for documentary |
| ๐ Title link | a link that contains the title name | That one title, matched by name |
| ๐ Netflix title URL | https://www.netflix.com/title/81002370 | That one title, looked up by its catalogue id |
Search terms go in ๐ Search terms, links go in ๐ Netflix / catalogue links. Use either, or both โ they run in the same pass.
๐ฏ Filtering configuration
| Filter | Values | Notes |
|---|---|---|
| ๐๏ธ Movies or series | both / movies / series | |
| ๐ Released from / until | any year | Enter them backwards and they are swapped for you |
| โญ Min / max IMDb rating | 0โ10 | Titles with no rating are excluded when a minimum is set |
| ๐ Regions | 37 Netflix regions | Leave empty to search every region |
| ๐งฉ Region match | any / all / only these / not in these | How several selected regions combine |
| ๐ฃ๏ธ Audio language | e.g. English, Korean | Pick from the list or type your own |
| ๐ฌ Subtitle language | e.g. Spanish | Same |
| ๐งฉ Audio & subtitle match | either / both | |
| ๐ Sort by | relevance, newest, rating, title, year, runtime โฆ | |
| โณ Availability | everything / leaving soon / added in the last 24 hours |
Every filter is optional. Leave one blank to skip it.
๐ค Output format (Dataset)
Each title is written as one Dataset row, the moment it is finished โ not batched at the end of the run. The Console shows nine prebuilt views, so you can jump straight to the section you need:
| View | What it shows |
|---|---|
| โจ Overview | Poster, title, type, year, ratings, runtime, region count, watch link |
| โญ Ratings & IMDb | Every score, vote count, metascore, genres, awards, IMDb link |
| ๐ Where it streams | Region count and the full per-region breakdown with dates |
| ๐ญ Cast & genres | Genres plus actors, directors, writers and producers |
| ๐บ Seasons & episodes | Series only โ every season with its episode list |
| ๐ผ๏ธ Artwork & story | Poster, artwork, synopsis, full IMDb plot, maturity rating |
| ๐ Links & ids | Netflix id, IMDb id, and every link for the title |
| ๐งญ Source & quality | Which search produced the row and how completely it was filled |
| โ ๏ธ Errors | Inputs that returned nothing, and why |
A run summary record is also written to the key-value store under run-summary.
๐ Output fields reference
| Field | Type | Description |
|---|---|---|
keyword | string | The search term or title name this row came from |
source | string | Which index answered โ catalogue or backup-index |
id | string / number | Record id in that index |
title | string | Title name |
slug | string | URL-friendly title slug |
type | string | movie or series |
netflixId | number | Netflix's own catalogue id |
netflixUrl | string | Direct netflix.com/title/โฆ watch link |
img / poster | string | Artwork and poster URLs |
largeImage | string | High-resolution artwork |
synopsis | string | Short description |
avgrating | number | Catalogue rating |
year | number | Release year |
runtimeSeconds / runtimeMinutes | number | Runtime in both units |
maturityRating | string | Age/maturity label |
imdbid / imdbUrl | string | IMDb id and link |
imdbRating | number | IMDb rating |
imdbVotes | number | IMDb vote count |
imdbMetascore | string | Metascore |
imdbGenre | string | IMDb genre string |
imdbAwards | string | Awards summary |
imdbPlot | string | Full IMDb plot |
tmdbScore | number | TMDb score, when available |
top250 / top250tv | number | Top-250 film / TV flags |
genres | array | Catalogue genre labels |
cast | array | { role, names[] } per role |
seasons | array | { season, episodeCount, episodes[] } |
availableCountries | array | Per-region: code, name, added date, expiry date, audio, subtitles, seasons |
countryCount | number | How many regions carry the title |
addedDate | string | When the title was added |
lastCheckedDate | string | When availability was last verified |
titledate | string | Catalogue date for the title |
enrichmentStatus | string | complete or partial |
enrichmentErrors | array | Anything that could not be collected, spelled out |
Fields the catalogue does not publish for a given title are simply absent from that row rather than filled in with a guess โ check
enrichmentErrorsto see exactly what was missing and why.
๐งพ Example output (JSON)
{"keyword": "fashion","source": "catalogue","id": 4877,"title": "Emily in Paris","slug": "emily-in-paris","type": "series","netflixId": 81037371,"netflixUrl": "https://www.netflix.com/title/81037371","img": "https://occ-0-1433-1432.1.nflxso.net/dnm/api/v6/โฆjpg","poster": "https://occ-0-1433-1432.1.nflxso.net/dnm/api/v6/โฆjpg","synopsis": "After landing her dream job in Paris, Chicago marketing executive Emily embraces a new life while juggling work, friends and romance.","avgrating": 6.9,"year": 2020,"runtimeSeconds": 1800,"runtimeMinutes": 30,"imdbid": "tt8962124","imdbUrl": "https://www.imdb.com/title/tt8962124","imdbRating": 6.9,"imdbVotes": 128441,"imdbMetascore": "60","imdbGenre": "Comedy Drama Romance","imdbAwards": "Nominated for 4 Primetime Emmys","imdbPlot": "A young American woman moves to Paris for an unexpected job opportunityโฆ","maturityRating": "TV-MA","largeImage": "https://occ-0-1433-1432.1.nflxso.net/dnm/api/v6/โฆjpg","top250": 0,"top250tv": 0,"genres": ["TV Comedies", "Romantic TV Comedies"],"cast": [{ "role": "Actor", "names": [{ "fullname": "Lily Collins" }, { "fullname": "Philippine Leroy-Beaulieu" }] },{ "role": "Director", "names": [{ "fullname": "Andrew Fleming" }] }],"seasons": [{ "season": 1, "episodeCount": 10, "episodes": [{ "epnum": 1, "title": "Emily in Paris", "synopsis": "โฆ" }] }],"availableCountries": [{"countryId": 78,"code": "FR","name": "France","addedDate": "2020-10-02","expiresDate": null,"audioLanguages": "English [Original],French","subtitleLanguages": "English,French,Spanish","seasonsAvailable": "S1(10), S2(10)"}],"countryCount": 31,"addedDate": "2020-10-02","lastCheckedDate": "2026-09-01","titledate": "2020-10-02","enrichmentErrors": [],"enrichmentStatus": "complete"}
๐ Quick start
Apify Console
- Log in at console.apify.com โ Actors.
- Open Netflix Search Scraper.
- Type a search term under ๐ Search terms โ or paste links under ๐ Netflix / catalogue links.
- Set ๐ฌ Max titles per search, and add any filters you want.
- Click Start and watch the run log โ every title appears as it is saved.
- Open the Output tab and pick a view, then export to JSON / CSV / XLSX.
API
curl -X POST "https://api.apify.com/v2/acts/<ACTOR_ID>/run-sync-get-dataset-items" \-H "Authorization: Bearer $APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"keywords": ["fashion"],"maxItems": 25,"type": "movie","minRating": 6.5,"countries": ["US", "GB"]}'
Python client
from apify_client import ApifyClientclient = ApifyClient("<APIFY_TOKEN>")run = client.actor("<ACTOR_ID>").call(run_input={"keywords": ["true crime"],"maxItems": 50,"type": "series","startYear": 2018,"includeCast": True,"includeEpisodes": True,})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["title"], item.get("imdbRating"), item.get("countryCount"))
More input examples
Everything leaving Netflix soon in the UK
{ "keywords": ["drama"], "countries": ["GB"], "filterBy": "Expiring", "maxItems": 100 }
Highly-rated Korean series with English subtitles
{ "keywords": ["korean"], "type": "series", "minRating": 7.5, "subtitle": "English", "orderBy": "Rating" }
One specific title, with everything switched on
{ "urls": [{ "url": "https://www.netflix.com/title/81037371" }], "includeCast": true, "includeEpisodes": true }
A market-comparison run across three regions
{ "keywords": ["documentary"], "countries": ["US", "DE", "JP"], "countryMatch": "and", "maxItems": 200 }
โ๏ธ Input parameters reference
๐ Start here
| Field | Type | Default | Description |
|---|---|---|---|
urls | array | [] | Netflix search URLs or links to individual titles. Bulk input & file upload |
keywords | array | [] | Plain search terms, one per line |
๐ฌ How much to collect
| Field | Type | Default | Description |
|---|---|---|---|
maxItems | integer | 50 | Max titles per search term (1โ10 000) |
maxScanned | integer | 20000 | Safety cap on how deep a single search digs |
๐๏ธ Filter the catalogue
| Field | Type | Default | Description |
|---|---|---|---|
type | string | "" | "" / movie / series |
startYear / endYear | integer | โ | Release-year range |
minRating / maxRating | number | โ | IMDb rating range, 0โ10 |
orderBy | string | Relevance | Sort order |
filterBy | string | "" | "" / Expiring / New last 24 hours |
๐ Regions & languages
| Field | Type | Default | Description |
|---|---|---|---|
countries | array | [] | Region codes; empty = all regions |
countryMatch | string | or | or / and / unique / notin |
audio / subtitle | string | "" | Language names |
audioSubtitleMatch | string | or | or / and |
๐งฉ Extra details per title
| Field | Type | Default | Description |
|---|---|---|---|
includeImdbExtras | boolean | true | IMDb rating, votes, metascore, awards, plot, artwork |
includeCountryAvailability | boolean | true | Full per-region availability with dates |
includeGenres | boolean | true | Catalogue genre labels |
includeCast | boolean | false | Actors, directors, writers, producers |
includeEpisodes | boolean | false | Seasons and episodes for series |
๐ฌ Advanced
| Field | Type | Default | Description |
|---|---|---|---|
genreIds | string | "" | Comma-separated catalogue genre ids |
personId | string | "" | Catalogue person id |
๐ Network & โก Speed
| Field | Type | Default | Description |
|---|---|---|---|
proxyConfiguration | object | no proxy | Pin your own route, or leave it automatic |
backupCountry | string | US | Region used if the run falls back to the backup index |
maxConcurrency | integer | 2 | Titles collected in parallel |
maxRequestRetries | integer | 8 | Attempts per request before giving up |
๐ Migrating from another Netflix scraper
Inputs saved for other Netflix Actors on the Store run here unchanged โ these field names are all accepted and mapped automatically:
| Their field | Maps to | Notes |
|---|---|---|
query | keywords | |
actor_query | keywords | Added as an extra search term |
genre_query | keywords | Added as an extra search term |
startUrls / searchUrls | urls | |
limit / maxResults / resultsLimit | maxItems | |
type (Movie / Series) | type | Case-insensitive |
start_year / end_year | startYear / endYear | |
min_rating / max_rating | minRating / maxRating | |
filter_by / order_by | filterBy / orderBy | Same values |
genre_ids / person_id | genreIds / personId |
Paste your old input JSON straight in โ nothing needs renaming.
๐ก๏ธ Reliability & anti-blocking
This Actor starts every run on a direct connection โ no proxy overhead unless it is actually needed. If the catalogue pushes back, the run automatically and transparently escalates:
Direct connection โ datacenter proxy โ residential proxy (3 retries)
Once the run escalates it stays on the new route for every remaining request, and every switch is logged clearly in the run log. You can also pin your own proxy group in Proxy configuration to skip the automatic ladder entirely.
On top of the network ladder there is a second, independent safety net: if the main catalogue index stops answering altogether, the run switches to a backup index and still returns data rather than failing. Backup rows carry a smaller field set โ every one of them says so in its own enrichmentErrors column, and no field is ever filled in with a guess.
Other reliability behaviour worth knowing:
- Requests are paced, not just capped by concurrency โ the run limits how fast requests are launched, which is what actually triggers rate limits.
- Every result is written to the Dataset the moment it is finished, so an aborted, timed-out or migrated run keeps everything collected so far.
- Abort and migration are handled gracefully โ the run wraps up and writes its summary instead of dying mid-write.
- Inputs that return nothing become explicit error rows with a plain-English reason.
๐ Integrations & automation
- Schedules โ run daily/weekly with
filterBy: "New last 24 hours"to capture new Netflix additions automatically. - Webhooks โ fire
ACTOR.RUN.SUCCEEDEDto your own endpoint when a run finishes. - Zapier / Make / n8n โ feed dataset items straight into a spreadsheet, database or Slack alert.
- MCP / AI agents โ call this Actor as a tool from Claude, Cursor or any MCP-compatible client via mcp.apify.com.
- REST API โ pull dataset items directly:
GET https://api.apify.com/v2/datasets/{datasetId}/items?format=json.
๐ฐ Pricing & how to control cost
This Actor runs on Apify's pay-per-usage pricing โ you pay for the platform compute, proxy and storage your run consumes. To control cost:
- Start with a low
maxItemsto sample a search before a full harvest. - Leave
includeCastandincludeEpisodesoff unless you need them โ each adds one request per title. - Turn
includeCountryAvailabilityoff if you only want ratings and metadata. - Leave Proxy configuration on automatic โ it only escalates to a paid proxy route when actually needed.
- Narrow with filters rather than collecting everything and filtering afterwards.
โ Frequently asked questions (FAQ)
Do I need a Netflix account or an API key? No. Nothing is logged into, and there is no key or quota to manage. Only publicly available catalogue data is read.
Can I see which countries a title streams in?
Yes โ that is the headline feature. Keep ๐ Full region-by-region availability on and every row carries a availableCountries array with the region, the date it was added, its expiry date, the audio and subtitle languages there, and which seasons are carried.
Can I find out what is leaving Netflix soon? Yes โ set โณ Availability filter to Leaving soon, optionally with a region selected.
Does it return IMDb ratings?
Yes โ rating, vote count, metascore, genres, awards and the full plot, with includeImdbExtras on (the default).
Can I get every episode of a series? Yes โ turn on ๐บ Seasons & episodes. Each series row then carries every season with its episode list, numbers, titles, synopses and stills.
Why does maxItems sometimes return fewer titles?
Because there genuinely were fewer matches, or your filters removed some. Widen the year/rating range, clear the region filter, or use a broader search term.
Why do some rows have fewer fields than others?
Netflix does not publish the same metadata for every title, and if the run had to use the backup index that index carries less. enrichmentStatus and enrichmentErrors on each row tell you exactly what was and was not collected โ nothing is ever invented to fill a gap.
Can I look a title up by its Netflix id?
Yes โ paste https://www.netflix.com/title/<id>. If the main catalogue index is unavailable at that moment, an id on its own cannot be resolved and you get a clear error row saying so; paste the title name instead.
Is there a limit on how many titles I can collect? Up to 10 000 per search term, and you can run as many search terms as you like in one run.
๐ ๏ธ Troubleshooting
| Symptom | Fix |
|---|---|
| A search comes back as an error row | Check the โ ๏ธ Errors view โ usually the term was too narrow or the filters excluded everything |
Fewer titles than maxItems | Widen the year/rating range, clear the region filter, or use a broader term |
TITLE_ID_UNRESOLVABLE on a title link | The link only carried a numeric id and the main index was unavailable โ paste the title name instead |
| Rows are missing IMDb fields | Turn on โญ IMDb ratings, votes, awards & plot, or the title simply has no IMDb entry |
No seasons on a series | Turn on ๐บ Seasons & episodes โ it is off by default because it makes records large |
| Region filter returns nothing | Try countryMatch: "or" โ and requires the title to stream in every selected region |
| Run seems slow | Lower maxRequestRetries, reduce maxItems, or turn off cast/episodes |
๐ Help, support & custom builds
Something not working, or need a custom field, private integration or a bespoke pipeline built on top of this Actor? Email hello.dataminds@gmail.com โ we read every message.
โ๏ธ Is scraping Netflix data legal?
This Actor only reads publicly available catalogue information โ the same title, rating and availability data any anonymous visitor can see. It does not log into Netflix, bypass any paywall, or touch private account data, viewing history or video streams. You are responsible for how you use the collected data โ respect the applicable terms of service, copyright law, and privacy regulations (GDPR, CCPA, etc.) for your jurisdiction and use case.
๐ SEO keywords targeted
netflix scraper, netflix search scraper, netflix api, netflix data scraper, netflix catalogue scraper, netflix movies scraper, netflix series scraper, netflix availability by country, what's leaving netflix, netflix expiring titles, netflix new releases scraper, netflix imdb ratings, netflix title metadata, netflix streaming availability api, unofficial netflix api, netflix content database, netflix region availability, netflix cast and crew data, netflix episode list scraper, streaming catalogue data, apify netflix actor, scrape netflix without api key, netflix market research data, netflix licensing data.