Ranked opportunities
Score = demand signal (downloads, likes, freshness) ÷ competition inside the sampled niche. Higher = more room for a new entrant.
How the score works
Transparent heuristic, not an HF metric:
All components are normalised against the biggest value in the current sample, so scores are only comparable within one scan.
Sample detail
Click any column header to sort. Data comes straight from GET /api/models.
| Repo | Task | Downloads | Likes | Updated | Comp. | Score | |
|---|---|---|---|---|---|---|---|
| No data yet. | |||||||
Niche gap matrix
For each task we pull the top 50 repos by downloads (one GET /api/models?filter=<task> call each) and compare demand against crowding.
| Task | Repos in top-50 | Σ downloads | Median dl | Avg likes | Leader dl | Gap index |
|---|---|---|---|---|---|---|
| Not run yet. | ||||||
Reading the gap index
Gap index = mean(log₁₀(downloads+10)) across the top-50 ÷ (1 + log₁₀(50)). It rewards tasks whose leaders get heavy traffic, and is blunt on purpose: every task is measured on the same 50-repo window, so a task with 5,000 repos and one with 40 repos look the same size. Treat it as a shortlist generator, then check the real repo counts in the Hub UI.
Revenue & cost model
Arithmetic on your inputs. Only three numbers are prefilled from HF documentation: private storage at $18/TB/month beyond the included 1 TB, the documented example GPU rate of $0.00012/second (≈ $0.43/hour), and the fact that HF adds no markup on Inference Providers usage. Everything else is yours to set.
Monthly P&L
Headline
Credits you already have
Every account gets monthly compute credits that are applied before pay-as-you-go billing — they lower your own bills, they do not create revenue:
Free $0.10/mo, PRO $2.00/mo, Team/Enterprise $2.00 per seat/mo, spendable on Inference Providers, Inference Endpoints, upgraded Spaces hardware and Jobs. Team/Enterprise credits are pooled and require specifying the org to bill (X-HF-Bill-To).
What actually pays on the Hub today
Ranked from "works now, documented" to "announced-but-not-shipped". Sources linked at the bottom of the page.
1 · Sell a product that runs on HF compute
works todayYou keep the margin between what your customers pay and what your Space / Endpoint / Job costs. HF explicitly does not add a markup on routed Inference Providers usage — "Hugging Face charges you the same rates as the provider" — so reselling raw inference at a spread is a losing plan; the margin must come from packaging, data your users can't get elsewhere, or workflow.
2 · Gate a repo and invoice access yourself
works todayThis is the closest thing to first-party monetization: gate a model or dataset, then manage who gets in through the documented access-request endpoints — POST /api/{repo}/ask-access, GET /{namespace}/{repo}/user-access-report, POST /api/{repo}/user-access-request/grant|handle|batch. HF brokers the access, not the payment: invoices, licences and tax are on you.
3 · Enterprise / consulting work around open models
works todayIndependent reporting on HF's own business says the money concentrates at the enterprise layer — private hosting, SSO/audit/compliance, deployment and advisory contracts — while the huge free community mostly does not pay (reported ~97% of users free; ~$100M ARR announced mid-2026). Same shape applies to individuals selling deployment expertise.
4 · Paid Spaces / app-store revenue share
not availableAs of May 2026 the Reachy Mini App Store launched with ~200 apps all free: "creators currently earn nothing from their contributions", with a revenue-sharing model (possible subscription / royalty) only described as under exploration and without a timeline. Don't build a plan that depends on a Spaces payout that does not exist yet.
Reality check
free tier is hugeDownloads and likes are attention metrics — they produce zero revenue on their own, and the opportunity score above only measures attention. Use it to pick a niche, not to project income. The Hub also applies account-wide rate limits to all API calls; a PRO subscription raises them.
API surface this app uses
Base URL is https://huggingface.co. Docs note that the reference now lives in the OpenAPI playground; the Markdown/JSON specs are at /.well-known/openapi.md and /.well-known/openapi.json.
| Endpoint | Used for | Auth | Try it |
|---|---|---|---|
| GET /api/models | Scan & rank models | optional | open JSON |
| GET /api/datasets | Same scan for datasets | optional | open JSON |
| GET /api/spaces | Supply check: how crowded is the demo layer | optional | open JSON |
| GET /api/trending | "Load /api/trending" button | optional | open JSON |
| GET /api/daily_papers | Fresh research to build on | optional | open JSON |
| GET /api/papers/{arxiv_id} | Look up a single paper | optional | open JSON |
| GET /api/whoami-v2 | Resolve your namespace ("Scan my namespace") | token | needs token |
| GET /{namespace}/{repo}/user-access-report | Who requested gated access | token | needs token |
Query parameters for GET /api/models
search · author · filter (repeatable tag, e.g. a pipeline_tag) · sort (lastModified, downloads, likes, likes30d, trendingScore, createdAt, num_parameters, mainSize, id) · direction (-1 descending) · limit · full · config. Results are paginated with a Link header. The JS client caps a page at 500 and the Python client exposes the same knobs through list_models().
Token handling in this app
The optional token is held in a JavaScript variable only — this page runs in a sandboxed frame with no local/session storage, so nothing is persisted and it is sent only to huggingface.co when you press a scan that needs it. Use a fine-grained read token, and prefer creating a fresh one you can revoke.