Hugging Face Hub: Models and Datasets With Download Counts avatar

Hugging Face Hub: Models and Datasets With Download Counts

Pricing

from $1.40 / 1,000 repository rows

Go to Apify Store
Hugging Face Hub: Models and Datasets With Download Counts

Hugging Face Hub: Models and Datasets With Download Counts

Public Hugging Face Hub repositories as rows: model or dataset id, owner, task tag, library, licence, languages, 30-day and all-time downloads, likes, trending score, gated status, parameter count and commit dates. Filter by task, licence, owner, size or update window; sort as you need.

Pricing

from $1.40 / 1,000 repository rows

Rating

0.0

(0)

Developer

Samat Makatov

Samat Makatov

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

Turn the public Hugging Face Hub catalogue into a table. One run lists model or dataset repositories through the Hub's own public API and writes one row per repository: id, owner, task tag, library, licence, languages, downloads in the last 30 days and all time, likes, trending score, gated status, parameter count and precision, base models, creation and last-commit dates. Filter by task, licence, owner, language, size band or update window, sort the way the Hub sorts, and keep only the columns you need. For engineers choosing a model, teams reviewing licences, and agents that need today's shortlist. No API key, no proxy and no browser — only public metadata, never model or dataset files.

Need it tailored to your workflow? Missing a field, a filter, another source or a different output format? Open an issue and describe what you need — we read every request and adapt the actor.

Use cases

  • Shortlist a model for one task under a licence and a size limit: text-generation models of at most 8B parameters under Apache 2.0, ranked by downloads — the list a self-hosting decision starts from.
  • Watch what one lab ships: every public repository of google, Qwen, meta-llama or your own vendor list, with sizes, licences and commit dates, re-run on a schedule.
  • Today's trending repositories: the Hub's own short-term ranking as rows, for a newsletter, a dashboard or an AI-watch agent.
  • Release tracking: everything published or committed in the last 24 hours or 7 days in one field, with onlyNew so a scheduled run reports only what moved.
  • Find evaluation or training data: datasets by task category, language, size band and format, with stored bytes and download counts next to each other.
  • Keep a catalogue table fresh: one dataset that joins models and datasets in the same row shape, exported to a sheet, a warehouse or an agent's context.

Input

Every field is optional. The keyword and the filters are combined with AND: a repository must satisfy all of them.

FieldTypeDefaultAllowed values / notes
repoTypestring (strict list)modelsmodels or datasets. One run reads one index. An off-list value is refused by the platform before the run starts, with the allowed values in the message.
searchstring—Keyword handed to the Hub's own search (matched against id and owner). Travels exactly as typed; no correction.
repoIdsstring[]—Up to 50 exact ids (Qwen/Qwen3-0.6B, cais/mmlu) or Hub addresses. When set, the actor looks these up instead of searching, and each row carries the detail columns. An id the Hub does not serve anonymously becomes one row with found: false.
pipelineTagstring (free text + suggestions)—Models only. One Hub task id, e.g. text-generation. Case, spaces and separators are read the same; the aliases below are accepted; any other spelling stops the run and names the closest ids. See Tasks.
librarystring (free text + suggestions)—One library or weight format (transformers, gguf, diffusers, mlx, polars …), checked against the vocabulary of the chosen index. See Libraries.
licensesstring[]—Up to 5 Hub licence ids (apache-2.0, mit, …), with or without the license: prefix. One request per value. See Licences.
languagesstring[]—Up to 5 language codes (en, ru, zh). Lower-cased and passed through unchanged — no correction and no suggestions, because the Hub carries thousands of language tags.
taskCategoriesstring[]—Datasets only. Up to 5 dataset task categories (question-answering, text-generation, …). See Dataset task categories.
tagFiltersstring[]—Up to 10 raw Hub tags, all of which a repository must carry (size_categories:1K<n<10K, modality:text, format:parquet, base_model:Qwen/Qwen3-0.6B, conversational). Passed through unchanged.
authorsstring[]—Up to 25 owners. The Hub matches an owner case-sensitively; another case is looked up once on the Hub's own user or organisation record and re-queried in the canonical spelling, which the run status reports. One request per owner and page.
minDownloadsinteger—Drop repositories with fewer 30-day downloads. Applied by the actor after reading the rows.
minLikesinteger—Drop repositories with fewer likes.
minParametersMillionsinteger—Models only. 7000 = 7B. Repositories without a safetensors weight index have no count and drop out as soon as a bound is set.
maxParametersMillionsinteger—Models only. 1000 = up to 1B. Set both for a band.
gatedAccessstring (strict list)anyany, open (files downloadable by anyone) or gated (access must be requested). Off-list values are refused by the platform before the run.
createdSincestring (date)—Keep repositories first published on or after this date (2026-01-31).
updatedSincestring (date)—Keep repositories whose last commit is on or after this date.
sinceHoursinteger—1–8760. Rolling commit window counted in UTC from the run start; combined with the dates above, the later floor wins.
onlyNewbooleanfalseRemember what this input delivered and write only repositories that are new or whose commit changed since the last run.
includeParameterCountbooleantrueModels: add parameterCount and parameterPrecisions. Costs no extra request.
includeCardMetadatabooleantrueAdd license, baseModels and the dataset prettyName from the card header. Costs no extra request.
includeModelConfigbooleanfalseModels: add modelType and architectures from the configuration file. No extra request, but a much larger response.
includeRepoDetailsbooleanfalseAdd sha, fileCount, spacesCount, inferenceStatus and, for models, repoSizeBytes — one extra request per row.
sortstring (strict list)downloadsdownloads (rolling 30 days), likes, trendingScore, createdAt, lastModified. All-time downloads cannot be sorted on. Off-list values are refused by the platform before the run.
sortDirectionstring (strict list)descdesc works with every key. asc is served by the Hub for createdAt only; with any other key the run stops at once and the message names the two ways forward.
maxItemsinteger251–1000. Hard cap on the rows written, and so on the cost. The Hub serves up to 100 repositories per request.
fieldsstring[]allKeep only these columns, in this order. id, repoType, found, url and fetchedAt are always kept — the ones you do not list come first, a listed one stays where you put it. An unknown name is reported in the run status.
hfTokenstring (secret)—Your own read-only Hugging Face token. Raises the Hub's quota for this run from 500 to 1,000 requests per 5 minutes and counts it against your account. Sent to the Hub only; never written to the dataset, the log or SUMMARY. It does not unlock gated or private repositories.

Strict lists vs free text. repoType, gatedAccess, sort and sortDirection are closed lists: Apify refuses an off-list value with HTTP 400 before the run starts and the error names the allowed values, so there is nothing for the actor to correct. pipelineTag, library, licenses and taskCategories are free text with a dropdown of suggestions: case, spaces, separators, accents and the aliases listed below are accepted, and any other spelling stops the run with the closest ids named — never a wider result set. search, languages and tagFilters travel exactly as typed.

Reference

Tasks (pipelineTag, models)

52 ids on 2026-10-21, and the Hub keeps adding them — this field accepts any id the Hub publishes, not only the list below:

any-to-any, audio-classification, audio-text-to-text, audio-to-audio, automatic-speech-recognition, depth-estimation, document-question-answering, feature-extraction, fill-mask, graph-ml, image-classification, image-feature-extraction, image-segmentation, image-text-to-image, image-text-to-text, image-text-to-video, image-to-3d, image-to-image, image-to-text, image-to-video, keypoint-detection, mask-generation, object-detection, question-answering, reinforcement-learning, robotics, sentence-similarity, summarization, table-question-answering, tabular-classification, tabular-regression, text-classification, text-generation, text-ranking, text-to-3d, text-to-audio, text-to-image, text-to-speech, text-to-video, time-series-forecasting, token-classification, translation, unconditional-image-generation, video-classification, video-text-to-text, video-to-video, visual-document-retrieval, visual-question-answering, voice-activity-detection, zero-shot-classification, zero-shot-image-classification, zero-shot-object-detection

Accepted aliases: llm, textgen, causal-lm → text-generation; txt2img, text2image, image-generation → text-to-image; vlm, vision-language, multimodal-chat → image-text-to-text; asr, speech-to-text, speech2text, transcription → automatic-speech-recognition; embeddings, embedding → feature-extraction; qa → question-answering; tts, speech-synthesis → text-to-speech; ner, named-entity-recognition → token-classification; sentiment-analysis → text-classification; masked-lm → fill-mask; summarisation → summarization.

Dataset task categories (taskCategories)

The dataset index uses its own 52-value list, mostly the same words: question-answering, text-generation, text-classification, token-classification, summarization, translation, automatic-speech-recognition, audio-classification, image-classification, image-to-text, text-to-image, text-retrieval, text-ranking, table-question-answering, table-to-text, tabular-classification, tabular-regression, multiple-choice, feature-extraction, sentence-similarity, object-detection, image-segmentation, depth-estimation, video-classification, video-text-to-text, visual-question-answering, visual-document-retrieval, zero-shot-classification, zero-shot-image-classification, zero-shot-object-detection, reinforcement-learning, robotics, time-series-forecasting, graph-ml, mask-generation, any-to-any, text-to-3d, image-to-3d, text-to-audio, text-to-speech, text-to-video, image-to-image, image-to-video, image-text-to-text and a few more. The task aliases above work here too.

Libraries

Models: transformers, pytorch, tf, jax, safetensors, gguf, diffusers, peft, sentence-transformers, timm, onnx, openvino, mlx, transformers.js, keras, tf-keras, sklearn, spacy, flair, nemo, espnet, speechbrain, fastai, setfit, coreml, tflite, executorch, stable-baselines3, ml-agents, llamafile, paddlepaddle, open_clip, fasttext and about 20 more. Datasets: datasets, pandas, polars, dask, mlcroissant, webdataset, distilabel, argilla, fiftyone, lerobot, lance and a few newer ones. Accepted aliases: llama.cpp, llamacpp, ollama → gguf; scikit-learn, scikit → sklearn; sbert → sentence-transformers; hf-transformers, huggingface-transformers → transformers; core-ml → coreml; open-vino → openvino; hf-datasets → datasets.

Licences

82 ids. The frequent ones: apache-2.0, mit, other, openrail, openrail++, creativeml-openrail-m, cc-by-4.0, cc-by-sa-4.0, cc-by-nc-4.0, cc-by-nc-sa-4.0, cc-by-nc-nd-4.0, cc0-1.0, cc, gemma, llama2, llama3, llama3.1, llama3.2, llama3.3, llama4, bsd-3-clause, bsd-2-clause, bsd, gpl-3.0, gpl-2.0, agpl-3.0, afl-3.0, artistic-2.0, unlicense, wtfpl, odc-by, cdla-permissive-2.0, bigscience-bloom-rail-1.0, bigcode-openrail-m, c-uda. Accepted aliases: apache, apache2, apache-2 → apache-2.0; mit-license → mit; cc0, public-domain → cc0-1.0; bsd3 → bsd-3-clause; gpl3 → gpl-3.0; open-rail → openrail.

Dataset facets for tagFilters

GroupValues
size_categories:n<1K, 1K<n<10K, 10K<n<100K, 100K<n<1M, 1M<n<10M, 10M<n<100M, 100M<n<1B, 1B<n<10B, 10B<n<100B, 100B<n<1T, n>1T
modality:text, image, audio, video, tabular, timeseries, geospatial, document, 3d
format:parquet, json, csv, text, arrow, webdataset, imagefolder, audiofolder, optimized-parquet, agent-traces
language:any Hub language code (language:en); on the model index the same filter is the bare code (en) — the actor writes the right form for the index you chose
library:dataset libraries, e.g. library:polars
otherarxiv:2505.09388, base_model:<id>, region:us, conversational, synthetic, code, medical, legal, finance

Sort keys

ValueOrderNotes
downloads30-day downloadsThe Hub's downloads is a rolling 30-day figure, not a total
likesall-time likes
trendingScorethe Hub's short-term rankingMoves through the day
createdAtfirst publicationThe only key that also accepts asc
lastModifiedlast commit

All-time downloads are written in every row but cannot be sorted on: the Hub answers HTTP 400 for that order, and for asc with anything but createdAt.

Examples

Trending repositories right now

{ "repoType": "models", "sort": "trendingScore", "sortDirection": "desc", "maxItems": 25 }

The most used text-generation models

{ "repoType": "models", "pipelineTag": "text-generation", "sort": "downloads", "sortDirection": "desc", "maxItems": 25 }

Apache 2.0 weights for a product review

{ "repoType": "models", "licenses": ["apache-2.0"], "sort": "likes", "sortDirection": "desc", "maxItems": 25 }

Small language models that fit a laptop

{ "repoType": "models", "pipelineTag": "text-generation", "maxParametersMillions": 1000, "sort": "downloads", "maxItems": 20 }

Everything one organisation ships, trimmed to seven columns

{ "repoType": "models", "authors": ["google"], "sort": "downloads", "includeModelConfig": true, "maxItems": 20,
"fields": ["id", "author", "downloads30Days", "likes", "parameterCount", "license", "gatedMode"] }

Question-answering datasets, most used first

{ "repoType": "datasets", "taskCategories": ["question-answering"], "sort": "downloads", "sortDirection": "desc", "maxItems": 25 }

English corpora for text generation

{ "repoType": "datasets", "taskCategories": ["text-generation"], "languages": ["en"], "sort": "downloads", "maxItems": 20 }

A keyword watch list for a schedule

{ "repoType": "models", "search": "llama", "sort": "lastModified", "sinceHours": 168, "onlyNew": true, "maxItems": 20 }

Output

One row per repository. A real row from a cloud run (sort: trendingScore, long arrays trimmed with "…"):

{
"id": "deepseek-ai/DeepSeek-V4.1-Flash-1017",
"repoType": "model",
"name": "DeepSeek-V4.1-Flash-1017",
"author": "deepseek-ai",
"url": "https://huggingface.co/deepseek-ai/DeepSeek-V4.1-Flash-1017",
"found": true,
"fetchedAt": "2026-10-21T21:13:07.622Z",
"pipelineTag": "image-text-to-text",
"libraryName": "transformers",
"license": "mit",
"languages": [],
"tags": [
"transformers",
"safetensors",
"deepseek_v41",
"text-generation",
"image-text-to-text",
"…"
],
"downloads30Days": 42122,
"downloadsAllTime": 42122,
"likes": 2143,
"trendingScore": 1897,
"gated": false,
"gatedMode": "open",
"parameterCount": 763205315794,
"parameterPrecisions": [
"BF16",
"F32",
"F8_E4M3",
"I8"
],
"baseModels": [],
"createdAt": "2026-10-17T02:40:38.000Z",
"lastModified": "2026-10-17T05:46:55.000Z",
"daysSinceUpdate": 4.6,
"sha": null
}
FieldTypeWhen it is filled
idstringAlways — owner/name as the Hub writes it
repoTypestringAlways — model or dataset
namestringAlways — the part after the owner
authorstringAlways — the owner handle
urlstringAlways — the repository page on the Hub
descriptionstringDatasets: the first 400 characters of the card, plain text
prettyNamestringDatasets with includeCardMetadata, when the card declares one
pipelineTagstringModels, when the owner declared a task
libraryNamestringModels, when the owner declared a library
licensestringWhen the card header or a license: tag has one
languagesstring[]When the owner declared languages (often empty)
taskCategoriesstring[]Datasets, from the card and the tags
tagsstring[]Always — every Hub tag of the repository
sizeCategorystringDatasets, e.g. 1K<n<10K
modalitiesstring[]Datasets, e.g. text, image
formatsstring[]Datasets, e.g. parquet
downloads30DaysnumberAlways for list rows — downloads of the last 30 days
downloadsAllTimenumberList rows; the per-repository record does not carry it
likesnumberAlways
trendingScorenumberList rows
gatedbooleanAlways
gatedModestringAlways — open, auto (instant click-through) or manual (owner approval)
parameterCountnumberModels with includeParameterCount, when the Hub publishes a safetensors weight index
parameterPrecisionsstring[]Same — e.g. ["BF16"], ["F32","I8"]
baseModelsstring[]Models with includeCardMetadata, when the card or the tags name one
modelTypestringModels with includeModelConfig
architecturesstring[]Models with includeModelConfig
repoSizeBytesnumberDatasets always; models with includeRepoDetails
fileCountnumberWith includeRepoDetails or an exact-id lookup
spacesCountnumberSame — how many Hub demos use the repository
inferenceStatusstringSame — e.g. warm, cold
createdAtstringAlways — ISO 8601 UTC
lastModifiedstringAlways — last commit, ISO 8601 UTC
daysSinceUpdatenumberAlways — days between the last commit and the run
shastringWith includeRepoDetails or an exact-id lookup — the commit hash
foundbooleanAlways — false on a marker row for an id the Hub will not serve
notFoundReasonstringMarker rows only
fetchedAtstringAlways — when the run read the Hub, ISO 8601 UTC

Dataset views: Repositories (overview), Size and lineage, New and recently changed, Datasets.

Use it from code / agents

curl -X POST "https://api.apify.com/v2/acts/yadroo~huggingface-hub-models/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"repoType":"models","pipelineTag":"text-generation","sort":"downloads","maxItems":25}'
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('yadroo/huggingface-hub-models').call({ repoType: 'models', licenses: ['apache-2.0'], sort: 'likes', maxItems: 25 });
const { items } = await client.dataset(run.defaultDatasetId).listItems();
from apify_client import ApifyClient
client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("yadroo/huggingface-hub-models").call(run_input={"repoType": "datasets", "taskCategories": ["question-answering"], "maxItems": 25})
items = client.dataset(run["defaultDatasetId"]).list_items().items

MCP: add https://mcp.apify.com to Claude / Cursor / any MCP client and call the yadroo/huggingface-hub-models tool with the same JSON input. One row per repository; use fields to trim the row to what the model needs (["id","pipelineTag","parameterCount","downloads30Days","license"] keeps the answer short).

Pricing

Pay per event: $0.001 per run start + $0.002 per dataset row. Every run pays the start event, also a run that writes nothing; every row written to the dataset is paid, marker rows with found: false included. On a paid Apify plan the row price falls with the Store tier (Bronze $0.0018, Silver $0.0016, Gold and above $0.0014); the start event stays $0.001.

Worked examples at the full price:

  • the default run, 25 rows: $0.001 + 25 × $0.002 = $0.051
  • a typical shortlist, 50 rows: $0.001 + 50 × $0.002 = $0.101
  • a full catalogue page of 500 rows: $0.001 + 500 × $0.002 = $1.001

Rows dropped by minDownloads, minLikes or the parameter band are never written and never billed — they only cost the requests that read them. The run also stops at the "Maximum cost per run" you set when starting it: it then ends successfully, keeps every row you already paid for and says so in its status ("Stopped at your spending limit: N rows delivered").

Limits & FAQ

  • Speed. Measured in the Apify cloud on 2026-10-21. A list page of up to 100 repositories costs one request, so the default 25-row run takes about 4 seconds and a 1,000-row run about 15 seconds (ten pages at one request per second). With includeRepoDetails every row costs one more request: 300 models with their own records took 306 seconds (304 requests, 59.5 rows per minute), and a run given only 60 seconds wrote 43 complete rows and stopped itself. So the default run timeout of 15 minutes covers the largest input the schema allows (1,000 rows) in list mode, while in detail mode about 750 rows fit; past that the run stops before the timeout, keeps and bills only the rows it finished, and says so in its status.
  • The Hub's rate limit. The API allows 500 requests per 5-minute window per IP address for anonymous callers (1,000 with a free account's token). This actor paces itself at 1 request per second — 300 per window — reads the RateLimit header the Hub returns and slows down further when the window runs low. Apify servers share their IP addresses between customers, so a run can meet a window that other traffic has already used: the actor then waits and continues more slowly, and a run that is refused from its very first request stops at once with a message telling you to start again in a few minutes or to add your own token (hfToken).
  • The run stops before its timeout, with the rows kept. When the run timeout or your maximum cost per run is reached, the actor stops starting new work, keeps every row already written and ends successfully with "Stopped before the run timeout: N rows saved" or "Stopped at your spending limit: N rows delivered".
  • downloads is a 30-day figure. The Hub's downloads counts the last 30 days; downloadsAllTime is the total. Only the 30-day figure can be sorted on, and the trending score moves through the day, so two runs hours apart legitimately differ.
  • Parameter counts are not universal. They come from the safetensors weight index the Hub publishes. A repository shipped only as GGUF, as pickled PyTorch or as external files has parameterCount: null and drops out of a parameter band; the run status says how many rows were dropped for a missing count.
  • Owner-declared metadata is often missing. Languages, licences and task tags exist only where the owner wrote them into the card. A language filter therefore finds fewer repositories than exist, especially on the model index.
  • A hidden repository answers 401, not 404. Deleted, renamed, private and misspelt ids are indistinguishable from outside, so an exact-id lookup that fails is written as one row with found: false and a reason — never a failed run.
  • Several filter values cost several requests. Repeated Hub filters are ANDed, so each licence, language, task category and owner needs its own request per page; the rows of the combinations are merged in the order you listed them, each combination in the order you chose. A 25-owner watch list makes at least 25 requests.
  • Gated repositories are listed with their metadata; their files are never read. No model or dataset files are downloaded at all — only metadata.
  • Private repositories are invisible: the actor reads the Hub without a login, and a token you supply raises the quota only.
  • Questions or problems: open an issue on the Issues tab of this actor.

Made by Yadroo. Sibling actors: openalex-works, arxiv-papers, github-repo-intel, pypi-package-intel, npm-package-intel.