Crawling API / Kaggle

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.

99% success rate140M residential IPs30 geographies
Kaggle URLHTML or JSONkaggle.com/datasets?search=...CrawlbaseRouteRenderExtractRendered HTMLDataset searchDatasetNotebook searchNotebookcrawling-apikaggle-dataset-serpkaggle-datasetkaggle-notebook-serpkaggle-notebookkaggle.com · rendered + parsed · 200
Live crawl feed · Kaggle1.24M req/minStreaming
200kaggle.com/datasets?search=weather&page=2JP107ms
200kaggle.com/code?searchQuery=xgboost&language=PythonSG129ms
200kaggle.com/datasets/zynicide/wine-reviewsCA166ms
200kaggle.com/code/startupsci/titanic-data-science-solutionsFR73ms
200kaggle.com/datasetsGB163ms
200kaggle.com/codeES131ms
200kaggle.com/datasets?search=image+classificationGB139ms
301kaggle.com/codeES109ms
200kaggle.com/datasets?search=heart+diseaseGB174ms
200kaggle.com/datasets/uciml/irisSG75ms
200kaggle.com/datasets/uciml/irisCA54ms
200kaggle.com/code?searchQuery=xgboost&language=PythonES97ms
200kaggle.com/datasetsAU177ms
200kaggle.com/code?searchQuery=nlp&page=2CA73ms
200kaggle.com/datasets/zynicide/wine-reviewsCA115ms
200kaggle.com/code?searchQuery=titanicSG120ms
200kaggle.com/datasets/uciml/irisBR162ms
200kaggle.com/datasets/johnsmith88/heart-disease-datasetNL142ms
200kaggle.com/datasets/zynicide/wine-reviewsFR192ms
200kaggle.com/datasets?search=heart+diseaseAU161ms
200kaggle.com/code/startupsci/titanic-data-science-solutionsGB152ms
200kaggle.com/code?searchQuery=titanicCA119ms
200kaggle.com/code?searchQuery=xgboost&language=PythonFR71ms
200kaggle.com/code?searchQuery=xgboost&language=PythonJP76ms
200kaggle.com/datasets/zynicide/wine-reviewsFR97ms
200kaggle.com/code/ldfreeman3/a-data-science-framework-to-achieve-99-accuracyGB105ms
200kaggle.com/datasets?search=weather&page=2JP107ms
200kaggle.com/code?searchQuery=xgboost&language=PythonSG129ms
200kaggle.com/datasets/zynicide/wine-reviewsCA166ms
200kaggle.com/code/startupsci/titanic-data-science-solutionsFR73ms
200kaggle.com/datasetsGB163ms
200kaggle.com/codeES131ms
200kaggle.com/datasets?search=image+classificationGB139ms
301kaggle.com/codeES109ms
200kaggle.com/datasets?search=heart+diseaseGB174ms
200kaggle.com/datasets/uciml/irisSG75ms
200kaggle.com/datasets/uciml/irisCA54ms
200kaggle.com/code?searchQuery=xgboost&language=PythonES97ms
200kaggle.com/datasetsAU177ms
200kaggle.com/code?searchQuery=nlp&page=2CA73ms
200kaggle.com/datasets/zynicide/wine-reviewsCA115ms
200kaggle.com/code?searchQuery=titanicSG120ms
200kaggle.com/datasets/uciml/irisBR162ms
200kaggle.com/datasets/johnsmith88/heart-disease-datasetNL142ms
200kaggle.com/datasets/zynicide/wine-reviewsFR192ms
200kaggle.com/datasets?search=heart+diseaseAU161ms
200kaggle.com/code/startupsci/titanic-data-science-solutionsGB152ms
200kaggle.com/code?searchQuery=titanicCA119ms
200kaggle.com/code?searchQuery=xgboost&language=PythonFR71ms
200kaggle.com/code?searchQuery=xgboost&language=PythonJP76ms
200kaggle.com/datasets/zynicide/wine-reviewsFR97ms
200kaggle.com/code/ldfreeman3/a-data-science-framework-to-achieve-99-accuracyGB105ms
01 Live demo

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.

ready
keys 1-4 switch · click to pauserun your own URL
Run your first request in minutes. Up to 20,000 free requests, no credit card.Start free
02 Capabilities

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.

dataset search

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.

datasets

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 search

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.

notebooks

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.

proxies

140M residential IPs

Every request rotates a residential IP across 30 geographies and clears bot checks automatically. Nothing to solve, nothing to maintain.

one token

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.

03 Output

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.

{ "url": "https://www.kaggle.com/datasets/uciml/iris", "id": "19", "title": "Iris Species", "subtitle": "Classify iris plants into three species in this classic dataset", "description": "The famous Iris flower data set, first used by Sir R.A. Fisher.", "version": 2, "keywords": [ "subject", "earth and nature", "biology" ], "owner": { "name": "UCI Machine Learning", "url": "https://www.kaggle.com/organizations/uciml" }, "license": { "name": "CC0: Public Domain", "url": "https://creativecommons.org/publicdomain/zero/1.0/" }, "files": [ { "format": "zip", "sizeBytes": 3687, "downloadUrl": "https://www.kaggle.com/api/v1/datasets/download/uciml/iris", "requiresSubscription": true } ], "downloads": 907784, "views": 3131083, "votes": 4861, "commentCount": 33, "lastUpdated": "2016-09-27T07:38:05.44Z", "isAccessibleForFree": true }

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

04 How it works

From URL to data in one call.

Every Kaggle request moves through the same path. You send a URL, we operate everything in between.

01

Send the URL

Pass any public Kaggle URL with your token: a dataset search page, a dataset, a notebook listing or a single notebook.

02

Rotate a proxy

A residential IP and geography that reach the site cleanly, drawn from 140M IPs across 30 regions.

03

Render the page

A real browser loads the page so search results, dataset cards and notebook sidebars render before capture.

04

Clear anti-bot

The site's bot checks and rate limits are handled automatically. Nothing to solve, nothing to maintain.

05

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.

05 Use cases

What teams build on Kaggle data.

USE / 01Discovery

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.

USE / 02Catalog

Data catalog sync

Mirror dataset titles, subtitles, descriptions, keywords, versions, file formats and byte sizes into an internal catalog and keep it current.

USE / 03Licensing

License and access checks

Read the license name and URL, isAccessibleForFree and the per-file requiresSubscription flag before a dataset enters a pipeline.

USE / 04Research

Notebook and method research

Collect notebook listings and single notebooks to see which languages, runtimes and competition contexts the community actually works in.

USE / 05Ranking

Popularity tracking

Track downloads, views, votes, copies and comment counts over time to see which datasets and notebooks are gaining traction.

USE / 06Coverage

Any URL, one API

Crawl dataset search, datasets, notebook search and single notebooks, plus any other site you need.

06 Notes

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.

07 Why Crawlbase

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.

99%
Average request success rate
140M
Residential IPs, plus 98M datacenter
30
Geographies for accurate local results
20/s
Requests per second by default, more on request

One token, official SDKs for Python, Node and Ruby, and a 99.99% uptime network underneath.

08 FAQ

Kaggle scraping questions.

Send any Kaggle URL to the Crawlbase Crawling API with your token. Crawlbase rotates a residential proxy, renders the page in a real browser, clears bot checks, and returns the fully rendered HTML. Add a dedicated scraper (scraper=kaggle-dataset-serp, kaggle-dataset, kaggle-notebook-serp or kaggle-notebook) to get structured JSON instead.
Yes. By default the Crawling API returns rendered HTML; add a dedicated scraper to receive structured JSON: kaggle-dataset-serp for a dataset search page, kaggle-dataset for a single dataset, kaggle-notebook-serp for a notebook listing, and kaggle-notebook for a single notebook.
Dataset search and listing pages, single dataset pages, notebook search and listing pages, and single notebook pages on kaggle.com. The same API works on any other site too.
Crawlbase routes each request through rotating residential IPs across 30 geographies and clears bot checks automatically, so access stays consistent and there is nothing to maintain when the site changes its setup.
kaggle-dataset-serp returns a dataset search page with totalCount, pagination and a card per result. kaggle-dataset returns one dataset with its description, keywords, owner, license, files and counters. kaggle-notebook-serp returns a notebook listing with author, coauthors, context, votes and medal per row. kaggle-notebook returns a single notebook with its language, runtime, versions, views, votes, copies, license and inputs.
The kaggle-notebook scraper returns the notebook metadata: author, language, runtime, version count, views, votes, copies, comments, medal, license and inputs. The executed notebook body is served in a separate iframe, so it is not in the page document; the scraper returns contentUrl, which addresses that frame and carries a short-lived signed token you can fetch straight after the crawl.
Start free with up to 20,000 requests and no credit card. Paid plans scale with usage, and the same token works across the Crawling API and every Crawlbase scraper.

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.