
Website Content Crawler
scrape.ly/store/querystone/website-content-crawlerAIDeveloper tools
1 monthly user

Scrape Hugging Face models, datasets and spaces: downloads, likes, trending score, task, library, license, parameters, tags, languages, base models, files and model card text. Search by keyword, author, task or tag, or paste Hub URLs. No login needed.
Export models, datasets and spaces from the Hugging Face Hub in seconds: downloads, likes, trending score, task, library, license, parameter count, base models, languages, tags, files and the full model card. Search by keyword, author, task, library or tag, or paste any Hub URL. No login, no API token, $0.50 per 1,000 repos.
llama, whisper), and/or paste Hugging Face URLs: repo pages, author pages, collections or filtered listing pages.| Field | What it does |
|---|---|
type | models, datasets or spaces (for searches, the author filter and plain repo ids) |
searchQueries | Keywords searched in repo names, one search each |
startUrls | Repo URLs or ids, author pages, collections, or listing URLs with filters |
maxResults | Max repos per search, author, listing or collection (0 = no limit) |
author, pipelineTag, library, language, license, tags | Hub-side filters |
minDownloads, minLikes, createdAfter, modifiedAfter | Extra filters (30 days style relative dates work) |
sort | Trending, most downloads, most likes, recently updated, recently created |
includeDetails, includeFiles, includeReadme | Extra data per repo |
{
"type": "models",
"searchQueries": ["llama"],
"startUrls": [
"https://huggingface.co/openai/gpt-oss-20b",
"https://huggingface.co/models?pipeline_tag=text-to-image&library=diffusers&sort=downloads"
],
"pipelineTag": "text-generation",
"license": "apache-2.0",
"sort": "downloads",
"maxResults": 20,
"includeDetails": false,
"includeReadme": false
}
Each repo is one row. Common fields come first, then the fields for that repo type.
| Field | Description |
|---|---|
type, id, name, author, url | What the repo is and where it lives |
likes, trendingScore, downloads, downloadsAllTime | Popularity (downloads for models and datasets) |
pipelineTag, libraryName, parameters, baseModels, baseModelRelation | Model task, library, size and lineage |
taskCategories, modalities, formats, sizeCategory, mainSizeBytes, description | Dataset facts |
title, emoji, shortDescription, sdk, runtimeStage, hardware, appUrl, models | Space facts |
license, languages, arxivIds, tags, gated, createdAt, lastModified, sha | Metadata |
files, filesCount, usedStorageBytes, architectures, spaces, spacesCount, childrenModelCount | With the details and file options |
cardData, readme | Card metadata and (optional) README Markdown |
source | The search query or URL that found the repo |
Example (trimmed):
{
"type": "model",
"id": "meta-llama/Llama-3.1-8B-Instruct",
"name": "Llama-3.1-8B-Instruct",
"author": "meta-llama",
"url": "https://huggingface.co/meta-llama/Llama-3.1-8B-Instruct",
"likes": 8415,
"trendingScore": 62,
"downloads": 6034692,
"downloadsAllTime": 189862190,
"pipelineTag": "text-generation",
"libraryName": "transformers",
"parameters": 8030261248,
"parametersByDtype": {"BF16": 8030261248},
"baseModels": ["meta-llama/Llama-3.1-8B"],
"baseModelRelation": "finetune",
"languages": ["en", "de", "fr", "it", "pt", "hi", "es", "th"],
"arxivIds": ["2204.05149"],
"license": "llama3.1",
"tags": ["transformers", "safetensors", "llama", "text-generation", "conversational", "license:llama3.1"],
"gated": "manual",
"createdAt": "2024-07-18T08:56:00.000Z",
"lastModified": "2024-09-25T17:00:57.000Z",
"source": "llama"
}
A space row looks like this:
{
"type": "space",
"id": "enzostvs/deepsite",
"title": "DeepSite v4",
"emoji": "🐳",
"shortDescription": "Generate any application by Vibe Coding it",
"sdk": "docker",
"runtimeStage": "RUNNING",
"hardware": "cpu-xl",
"appUrl": "https://enzostvs-deepsite.hf.space",
"likes": 16610,
"models": ["deepseek-ai/DeepSeek-V3.2", "Qwen/Qwen3-Coder-30B-A3B-Instruct"]
}
You pay $0.50 per 1,000 repos saved ($0.0005 per repo), plus a small amount of platform usage (compute and datacenter proxy traffic), which for this scraper is usually a fraction of a cent per run.
The detail, file list and README options cost nothing extra per repo; they only make the run take longer. You are never charged for repos that were not saved, and the run stops cleanly when it reaches your maximum charge.
Is it legal to scrape Hugging Face? The scraper reads only public data that the Hub serves to anyone without logging in, through its public API. Check the license of each model or dataset before you use the files themselves.
Do I need a Hugging Face account, token or proxy? No. It works without any account. Datacenter proxies are the default; the scraper switches to a fresh IP when the Hub's anonymous rate limit is reached.
How many results can I get? Up to 200,000 per search. The Hub's own search matches repo names, so broad words return many results; add filters to narrow them.
Why are some fields empty?
Fields only appear when the repo has them: spaces have no downloads, many models have no safetensors parameter count, and readme, files and the detail fields are only filled when you turn those options on.
Can I get private or gated files?
No. Private repos are not visible without an account. Gated repos (marked with gated) are listed with all public metadata, but their files stay behind the gate.
Can I schedule it or use it from code? Yes. Schedule runs in the console, or start runs and fetch results through the API and integrations.
Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
typeenumOptionaldefault "models"What to scrape
Repo type for search queries, the author filter and plain repo ids. Pasted URLs keep their own type (a /datasets/ URL is always a dataset).
searchQueriesarrayOptionalSearch queries
Words to search for in repo names, for example llama, whisper, stable diffusion. Each query is its own search. Leave empty (and add no URLs) to list the trending or top repos that match the filters.
startUrlsarrayOptionalHugging Face URLs or repo ids
Model, dataset or space pages (https://huggingface.co/openai/gpt-oss-20b, .../datasets/rajpurkar/squad, .../spaces/owner/name), repo ids like meta-llama/Llama-3.1-8B, author or organization pages (https://huggingface.co/google), collections, or listing pages copied from the website with their filters (https://huggingface.co/models?pipeline_tag=text-to-image&sort=downloads).
maxResultsintegerOptionaldefault 20Max results per search
Maximum repos to save for each search query, author, listing URL or collection. Single repo URLs are always saved. Use 0 for no limit (up to 200,000).
All filters are optional and combine with AND. They apply to search queries, author and listing URLs.
authorstringOptionalAuthor or organization
Only repos owned by this user or organization, for example meta-llama, google, mistralai.
pipelineTagstringOptionalTask
Task id as used on the website, for example text-generation, text-to-image, automatic-speech-recognition, image-classification. Models use it as the pipeline tag, datasets as the task category.
librarystringOptionalLibrary or SDK
For models: transformers, diffusers, gguf, mlx, sentence-transformers, peft... For datasets: datasets, pandas, polars... For spaces: gradio, streamlit, docker, static.
languagestringOptionalLanguage
Two-letter language code, for example en, de, ja.
licensestringOptionalLicense
License id, for example apache-2.0, mit, cc-by-4.0, llama3.1, openrail.
tagsarrayOptionalTags
Extra Hub tags that must all be present, for example conversational, region:us, format:parquet, modality:image.
minDownloadsintegerOptionalMin downloads (last 30 days)
Skip models and datasets with fewer downloads in the last 30 days. Spaces have no download count.
minLikesintegerOptionalMin likes
Skip repos with fewer likes.
createdAfterstringOptionalCreated after
Only repos created on or after this date, for example 2025-06-01, or a relative period like 30 days, 2 weeks, 6 months.
modifiedAfterstringOptionalUpdated after
Only repos updated on or after this date, for example 2025-06-01, or a relative period like 7 days.
Order of the results and how much to save for each repo.
sortenumOptionaldefault "trendingScore"Sort by
Order of search, author and listing results. A sort set in a pasted listing URL wins. Sorting by downloads, likes, created or updated also lets the matching Min / after filter stop early.
includeDetailsbooleanOptionaldefault falseInclude repo details
One extra request per repo for details the listing does not have: storage used, and for models the architecture, model type, spaces using the model, fine-tune count, inference status and GGUF info.
includeFilesbooleanOptionaldefault falseInclude file list
Save the list of files in each repo (weights, configs, data files).
includeReadmebooleanOptionaldefault falseInclude model / dataset card text
Save the README (model card, dataset card or space description) as Markdown, up to 50,000 characters. One extra request per repo.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy configuration
Datacenter proxies are the default. The scraper switches to a fresh IP when the Hub's per-IP rate limit is reached.
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| type | string | null | model, dataset or space |
| id | string | null | Repo id (author/name) |
| name | string | null | Repo name |
| author | string | null | Owner user or organization |
| url | string | null | Repo page |
| likes | number | null | Likes |
| trendingScore | number | null | Trending score |
| downloads | number | null | Downloads in the last 30 days (models, datasets) |
| downloadsAllTime | number | null | All-time downloads (models, datasets) |
| pipelineTag | string | null | Model task (pipeline tag) |
| libraryName | string | null | Model library |
| parameters | number | null | Model parameter count (safetensors) |
| parametersByDtype | object | null | Parameters per tensor dtype |
| baseModels | array | Base models this model derives from |
| baseModelRelation | string | null | finetune, quantized, adapter or merge |
| datasets | array | Datasets used (models) or loaded (spaces) |
| languages | array | Languages |
| arxivIds | array | Linked arXiv paper ids |
| description | string | null | Dataset card summary |
| taskCategories | array | Dataset task categories |
| taskIds | array | Dataset task ids |
| modalities | array | Dataset modalities |
| formats | array | Dataset file formats |
| libraries | array | Libraries that can load the dataset |
| sizeCategory | string | null | Dataset size category (number of rows) |
| mainSizeBytes | number | null | Dataset size in bytes |
| paperswithcodeId | string | null | Papers with Code id |
| citation | string | null | BibTeX citation |
| title | string | null | Space title |
| emoji | string | null | Space emoji |
| shortDescription | string | null | Space short description |
| sdk | string | null | Space SDK (gradio, streamlit, docker, static) |
| sdkVersion | string | null | Space SDK version |
| runtimeStage | string | null | Space status (RUNNING, SLEEPING, ...) |
| hardware | string | null | Space hardware |
| appUrl | string | null | Direct app URL (*.hf.space) |
| models | array | Models used by the space |
| pinned | boolean | string | null | Pinned space |
| license | string | null | License id |
| tags | array | All Hub tags |
| gated | boolean | string | null | Gated access: false, auto or manual |
| private | boolean | string | null | Private repo |
| disabled | boolean | string | null | Disabled repo |
| createdAt | string | null | Created at (ISO 8601) |
| lastModified | string | null | Last updated (ISO 8601) |
| sha | string | null | Latest commit sha |
| filesCount | number | null | Number of files (with Include file list) |
| files | array | File paths (with Include file list) |
| usedStorageBytes | number | null | Storage used in bytes (with details) |
| architectures | array | Model architectures (with details) |
| modelType | string | null | Model type (with details) |
| autoModel | string | null | transformers auto class (with details) |
| spacesCount | number | null | Spaces using the model (with details) |
| spaces | array | Up to 100 spaces using the model (with details) |
| childrenModelCount | number | null | Total fine-tunes, quantizations, adapters and merges built on the model (with details) |
| inferenceStatus | string | null | Inference status (with details) |
| gguf | object | null | GGUF info (with details) |
| cardData | object | null | Card metadata (YAML header of the README) |
| readme | string | null | README Markdown (with card text option) |
| source | string | null | Search query or URL that found the repo |
| childrenModelCounts | object | null | Child models by relation: finetune, quantized, adapter, merge (with details) |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| Repo | One Hugging Face model, dataset or space saved to the dataset | $0.0005 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('querystone/huggingface-scraper').call({
"type": "models",
"searchQueries": [
"llama"
],
"startUrls": [],
"maxResults": 20,
"tags": [],
"sort": "trendingScore",
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"DATACENTER"
]
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run querystone/huggingface-scraperPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=querystone/huggingface-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
Inputs the developer prepared for common jobs. Open one to see its input, then copy it to your account to run it as-is or adjust it.
Search Hugging Face models by keyword.
Datasets with their files and README.
Search Hugging Face Spaces by keyword.
Most downloaded models of an author.
Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.