Scrapers / Developer & File Tools

Docker Hub Scraper
hipersoft/docker-hub-scraper
Search Docker Hub or look up exact repositories and get description, star count, pull count, official/automated flags, last updated, categories and tags.
Total users
1Monthly users
1Total runs
118Per repository scraped
$0.0012Last rebuilt
Oct 26, 2026Overview
Search Docker Hub or look up exact repositories and get back clean, structured JSON: short and full description, star count, pull count, official and automated flags, last-updated date, categories, storage size and (optionally) tags with sizes and push dates. It pulls from the public Docker Hub API — no login, no API key. Built for DevOps engineers, security teams and OSS researchers who need reliable image metadata at scale.

Features
- 🔎 Free-text search — run any Docker Hub query (
postgres,machine learning) and collect matching repositories in bulk. - 🎯 Exact lookups — pass official images like
nginxor namespaced repos likebitnami/postgresql, combined with search results. - 📊 Popularity metrics — capture
starCountandpullCountfor every repository. - 🏷️ Official & automated flags —
isOfficialandisAutomatedto filter trusted images. - 🗂️ Full details — optional
fullDescription,categories,storageSize,lastUpdatedanddateRegistered. - 🔖 Tags on demand — optional
tagsarray with name,fullSize,lastUpdatedanddigest, capped bymaxTags. - 🔗 Ready to use — every record includes
dockerHubUrland a copy-pastepullCommand.
What you get

Each repository becomes one clean JSON record:
{
"repoName": "library/nginx",
"name": "nginx",
"namespace": "library",
"isOfficial": true,
"isAutomated": false,
"starCount": 19876,
"pullCount": 10500000000,
"shortDescription": "Official build of Nginx.",
"fullDescription": "# What is Nginx?\n\nNginx is an open source reverse proxy server...",
"categories": ["Web Servers"],
"storageSize": 67108864,
"lastUpdated": "2024-05-29T18:44:12.000000Z",
"dateRegistered": "2014-06-05T21:31:04.000000Z",
"dockerHubUrl": "https://hub.docker.com/_/nginx",
"pullCommand": "docker pull library/nginx",
"tags": [
{ "name": "latest", "fullSize": 72401234, "lastUpdated": "2024-05-29T18:44:12.000000Z", "digest": "sha256:abc123..." }
]
}
Output schema
| Field | Type | Description |
|---|---|---|
repoName |
string | Full repository path, e.g. library/nginx. |
name |
string | Repository name without the namespace. |
namespace |
string | Owner namespace (e.g. library for official images). |
isOfficial |
boolean | Whether this is an official Docker image. |
isAutomated |
boolean | Whether the repository uses automated builds. |
starCount |
integer | Number of stars on the repository. |
pullCount |
integer | Total number of pulls for the repository. |
shortDescription |
string | One-line repository summary. |
fullDescription |
string | Full repository description / README text. |
categories |
array | Category labels assigned to the repository. |
storageSize |
integer | Storage size of the image in bytes. |
lastUpdated |
string (ISO date) | When the repository was last updated. |
dateRegistered |
string (ISO date) | When the repository was first created. |
dockerHubUrl |
string (URL) | Link to the repository page on Docker Hub. |
pullCommand |
string | Ready-to-paste docker pull command for the repository. |
When includeTags is on, each record also carries a tags array of objects (name, fullSize, lastUpdated, digest).
Input
{
"queries": ["postgres"],
"repositories": ["nginx", "bitnami/postgresql"],
"maxPerQuery": 50,
"includeDetails": true,
"includeTags": false,
"maxTags": 20
}
| Field | Description |
|---|---|
queries |
Free-text Docker Hub searches (repository name and description). Each is scraped separately. |
repositories |
Exact repos by name, e.g. nginx (official) or bitnami/postgresql, combined with search results. |
maxPerQuery |
Maximum repositories to collect per search query (1–1000). |
includeDetails |
Fetch each repo's detail (full description, last updated, categories, storage size). |
includeTags |
Fetch each repository's tags (name, size, last pushed). |
maxTags |
Maximum tags to fetch per repository when tags are included (1–100). |
Use cases
- Compare pull and star counts across competing images before choosing a base.
- Inventory the tags and sizes available for a set of images in your stack.
- Filter for official images to harden a supply-chain security review.
- Build a catalog of images for a topic (e.g. databases) for research or docs.
Pricing
Pay-per-event: you're billed a small amount per run and per item scraped — you only pay for what you get. See the Pricing tab for current rates.
FAQ
Do I need a Docker Hub account or API key? No. The actor reads from the public Docker Hub API, so no login or API key is required.
How many repositories can I scrape per run?
Each free-text query can return up to 1000 repositories (maxPerQuery), and you can add exact repos — official images like nginx or namespaced repos like bitnami/postgresql — in the repositories field.
Is scraping Docker Hub allowed? This actor only reads publicly available repository metadata through Docker Hub's own public API; it does not pull image layers or access private repos. Review Docker's terms before large-scale or commercial reuse.
What's the output format?
Structured JSON — one record per repository with fields such as starCount, pullCount, isOfficial, shortDescription, categories, storageSize, a ready-to-use pullCommand and optional tags. Export as JSON, CSV, Excel or via the API.
Can I get the tags for each image?
Yes. Set includeTags to attach a tags array (name, fullSize, lastUpdated, digest) and use maxTags (1–100) to cap how many tags are fetched per repository.
Can I connect this to other apps and services? The Docker Hub Scraper can be connected with almost any cloud service or web app thanks to integrations on the Apify platform. It works with Make, Zapier, Slack, Airbyte, GitHub, Google Drive and many more, plus the Apify API, JavaScript/Python clients and MCP. Or use webhooks to trigger an action whenever a run finishes.
Building a supply-chain or DevOps data set? Combine this with our other developer-data scrapers:
- GitHub Scraper — repositories and user profiles with stars, topics, licenses and leads.
- npm Package Scraper — search and look up npm packages with metadata, dependencies and downloads.
- PyPI Package Scraper — metadata, dependencies, licenses and downloads for Python packages.
- crates.io Scraper — Rust crate metadata, versions, licenses and download trends.
Notes
This actor uses the public Docker Hub API and reads only publicly available repository data. It is an independent tool and is not affiliated with, endorsed by, or sponsored by Docker, Inc.; "Docker" and "Docker Hub" are trademarks of Docker, Inc.
Input
| Field | Type | Description |
|---|---|---|
queriesSearch queries | array | Free-text Docker Hub searches (matches repository name and description). Each is scraped separately. |
repositoriesExact repositories | array | Look up specific repos by name, e.g. "nginx" (official) or "bitnami/postgresql". Combined with any search results. |
maxPerQueryMax results per query | integer | Maximum repositories to collect per search query. Default: 50 |
includeDetailsInclude full details | boolean | Fetch each repository's detail (full description, last updated, categories, storage size). Default: true |
includeTagsInclude tags | boolean | Fetch each repository's tags (name, size, last pushed). Default: false |
maxTagsMax tags per repo | integer | Maximum tags to fetch per repository when tags are included. Default: 20 |
API
curl -X POST "https://api.apify.com/v2/acts/hipersoft~docker-hub-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"queries": [
"postgres"
],
"repositories": [
"nginx",
"bitnami/postgresql"
]
}'from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("hipersoft/docker-hub-scraper").call(run_input={
"queries": [
"postgres"
],
"repositories": [
"nginx",
"bitnami/postgresql"
]
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('hipersoft/docker-hub-scraper').call({
"queries": [
"postgres"
],
"repositories": [
"nginx",
"bitnami/postgresql"
]
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);Pricing
| Event | Price | Paid plans from |
|---|---|---|
| Repository scraped One Docker Hub repository with stars, pull count, description, categories and last-updated | $0.0012 | $0.0006 |
| Search request One Docker Hub search page (up to 100 results) | $0.001 | $0.001 |
| API request One repository detail or tags fetch | $0.0005 | $0.0005 |
You pay only for what the run returns. Set a maximum cost per run and it stops cleanly at that limit.
Related scrapers
Bulk Image Downloader
Download thousands of images from a list of URLs and store each in the key-value store with a public link. Returns content type, size, dimensions and SHA-256 per image. Bulk-ready. Great for datasets, backups and media pipelines.
8,102 runs · 103 users · $0.056 / url processedText to Speech
Convert any text to natural-sounding speech as an MP3 download. 300+ premium neural voices across 70+ languages, adjustable rate, pitch and volume. Great for voiceovers, videos, accessibility and audio content. No setup.
278 runs · 22 users · $0.01 / audio generatedGoogle Maps Email Extractor
Search Google Maps for businesses, then crawl each business website to extract emails, social profiles and extra phone numbers. Turns any Maps search into a ready lead list. No setup.
159 runs · 8 users · $0.006 / business lead scrapedWebsite Screenshot
Capture full-page or viewport screenshots of any URL as PNG or JPEG, at any device size. For monitoring, previews, thumbnails and automation workflows.
156 runs · 3 users · $0.004 / screenshot capturedBulk URL Status Checker
Check thousands of URLs over plain HTTP: status codes, broken links (404/410/5xx), full redirect chains, response time, content type, page title and SSL certificate expiry.
154 runs · 13 users · $0.002 / url checkedGoogle Search Scraper
Scrape Google Search results (organic listings) for any query: title, URL, displayed URL, snippet and position. Multi-query, per-country/language, pagination. Uses Google SERP proxy — reliable, no captcha, no setup.
121 runs · 8 users · $0.001 / result scrapedSend the site and the fields. We build it and you get it first.