Kaggle Scraper.
Datasets and notebooks, fully rendered.
Send any Kaggle URL and get the fully rendered HTML back, through residential proxies with anti-bot handling built in.
Or pull structured JSON with the kaggle-dataset-serp, kaggle-dataset, kaggle-notebook-serp and kaggle-notebook scrapers.
Four Kaggle scrapers. One clean JSON each.
The four Kaggle scrapers, typed live. kaggle-dataset-serp reads a dataset search page, kaggle-dataset pulls one dataset with its files and license, kaggle-notebook-serp reads a notebook listing, and kaggle-notebook returns a single notebook with its stats and inputs. Switch tabs, or hover to pause and read.
One API, every corner of Kaggle.
Four dedicated scrapers cover the pages that matter: dataset search, single datasets, notebook search and single notebooks. The Crawling API renders each page in a real browser, reaches it through residential IPs, and hands you clean HTML or JSON.
Every dataset listing
kaggle-dataset-serp turns a dataset search page into JSON: totalCount, page and hasNextPage, plus every card with its position, title, slug, owner, usability rating, file count and format, size, downloads, notebook count, votes and medal.
Full dataset metadata
kaggle-dataset returns one dataset with its title, subtitle, Markdown description, version, keywords, owner, license, file list with formats and byte sizes, and its download, view, vote and comment counters.
Notebook listings
kaggle-notebook-serp returns a notebook search page, each row with its position, title, slug, author and coauthors, last update, comment count, competition or dataset context, votes and medal.
Single notebooks
Add scraper=kaggle-notebook to return one notebook with its author, language, runtime, version history, views, votes, copies, comments, medal, license and inputs.
140M residential IPs
Every request rotates a residential IP across 30 geographies and clears bot checks automatically. Nothing to solve, nothing to maintain.
One API for every page
The Crawling API works on any URL, so the same token covers every Kaggle dataset and notebook and everything else you crawl. See the live demo.
Every dataset field, as clean JSON.
Send a dataset URL with scraper=kaggle-dataset and the dataset comes back as typed JSON, files and license included. Swap in kaggle-dataset-serp, kaggle-notebook-serp or kaggle-notebook for listings and notebooks.
Dataset
url · string id · string title · string subtitle · string
Owner & license
owner.name · string owner.url · string license.name · string license.url · string
Files
files[].format · string files[].sizeBytes · number files[].downloadUrl · string files[].requiresSubscription · boolean
Engagement
downloads · number views · number votes · number commentCount · number
Metadata
description · string keywords · array lastUpdated · string isAccessibleForFree · boolean
From URL to data in one call.
Every Kaggle request moves through the same path. You send a URL, we operate everything in between.
Send the URL
Pass any public Kaggle URL with your token: a dataset search page, a dataset, a notebook listing or a single notebook.
Rotate a proxy
A residential IP and geography that reach the site cleanly, drawn from 140M IPs across 30 regions.
Render the page
A real browser loads the page so search results, dataset cards and notebook sidebars render before capture.
Clear anti-bot
The site's bot checks and rate limits are handled automatically. Nothing to solve, nothing to maintain.
Return HTML or JSON
The fully rendered HTML comes back, or typed JSON when you add kaggle-dataset-serp, kaggle-dataset, kaggle-notebook-serp or kaggle-notebook.
What teams build on Kaggle data.
Dataset discovery
Walk dataset search pages by keyword and page to build a searchable index of what exists, who owns it, and how it is licensed.
Data catalog sync
Mirror dataset titles, subtitles, descriptions, keywords, versions, file formats and byte sizes into an internal catalog and keep it current.
License and access checks
Read the license name and URL, isAccessibleForFree and the per-file requiresSubscription flag before a dataset enters a pipeline.
Notebook and method research
Collect notebook listings and single notebooks to see which languages, runtimes and competition contexts the community actually works in.
Popularity tracking
Track downloads, views, votes, copies and comment counts over time to see which datasets and notebooks are gaining traction.
Any URL, one API
Crawl dataset search, datasets, notebook search and single notebooks, plus any other site you need.
Good to know when scraping Kaggle.
HTML by default, JSON on request
You get the full rendered HTML. Add scraper=kaggle-dataset-serp, kaggle-dataset, kaggle-notebook-serp or kaggle-notebook for parsed JSON, or parse the HTML yourself.
Notebook listings report a label, not a count
Kaggle only renders Results (100+) on the notebook listing, so totalCountLabel comes back as that string verbatim rather than an invented number. The dataset listing does expose a real numeric totalCount.
Notebook bodies live in an iframe
The executed notebook is served from a separate origin inside an iframe, so it is not part of the page document. contentUrl addresses that frame and carries a short-lived signed token, so fetch it soon after the crawl.
Listing stats come as displayed
On a dataset card, size is the string Kaggle shows with its units, such as 6 kB, and the abbreviated download count is expanded back to a plain integer, so 362K comes back as 362000.
Built to crawl Kaggle at scale.
The Crawling API runs on the same network that serves 46,000+ paying customers and 70,000+ developers. No proxies to buy, no browsers to run, nothing to patch when the site changes.
One token, official SDKs for Python, Node and Ruby, and a 99.99% uptime network underneath.
Kaggle scraping questions.
Start scraping Kaggle.
Skip the proxies and rate limits.
Free to begin with up to 20,000 requests. One token for the Crawling API and every scraper.