Docker Hub Scraper — Search, Repos & Tags
Pricing
from $1.50 / 1,000 results
Docker Hub Scraper — Search, Repos & Tags
Scrape Docker Hub by keyword search, namespace, or repo detail. Extract image name, pull count, star count, tags, description, official status. No API key, no login required.
Pricing
from $1.50 / 1,000 results
Rating
0.0
(0)
Developer
Logiover
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Docker Hub Scraper — Search, Namespace Repos, Details & Tags
Scrape Docker Hub at scale: search container images by keyword, list all repos in any namespace/org, fetch full repo metadata, and extract complete tag lists — no API key, no login required.
What does Docker Hub Scraper do?
Docker Hub Scraper connects directly to Docker Hub's official public REST API (hub.docker.com/v2/) to extract container image metadata at scale. It supports four distinct modes: search (keyword-based discovery across Docker Hub's full index of 10+ million images), namespaceRepos (crawl every repository owned by a user or organization), repoDetail (fetch comprehensive metadata for specific repos), and tags (retrieve all available tags for any image, including architecture and digest info).
The actor paginates automatically through all available results using Docker Hub's cursor-based API, collecting up to 100 items per request. It handles retries with exponential backoff, supports Apify datacenter proxies for high throughput, and outputs clean structured rows — one per repository or tag. Because Docker Hub's /v2/ API is fully public and keyless, anyone can run this actor immediately without creating Docker credentials or configuring auth.
Who is it for?
- DevOps engineers who want to audit which images their team relies on, check pull counts, and verify official image freshness.
- Security researchers scanning Docker Hub for outdated or vulnerable base images across large namespaces.
- Data analysts building datasets of container ecosystem trends — which images are rising, star counts, pull volumes.
- Platform teams monitoring a vendor namespace (e.g. bitnami, grafana, nginx) for new releases and tag changes.
- Developers and architects benchmarking image popularity before choosing a base image for their stack.
Use cases
- Image discovery: Search "machine learning" or "rust" to find the most-pulled container images in any technology category.
- Org/vendor auditing: List all 200+ repositories published by
bitnamiorgrafanato track their full offering. - CI/CD due diligence: Fetch full tag history for
library/nodeorlibrary/pythonto understand release cadence and verify digest integrity. - Competitive analysis: Compare pull counts and star counts for competing database images (postgres vs mysql vs mariadb).
- Security scanning: Extract image digests for all tags of a repo to correlate against CVE databases or internal scanners.
Why use Docker Hub Scraper?
- Keyless: No Docker account, no API token, no login — works out of the box for anyone.
- 15+ fields per repo: name, namespace, description, star count, pull count, official status, automation flag, last updated timestamp, and more.
- Bulk pagination: Fetches up to 10,000 results per run with automatic page-by-page iteration.
- Four modes in one: switch between search, org crawl, detail fetch, and tag listing without switching actors.
- Export ready: Download results as CSV, JSON, Excel, XML via Apify's built-in dataset export.
- Pay-per-result: Charged only for what you actually scrape — cost-efficient for small and large runs alike.
What data can you extract?
The actor outputs one row per repository (in search/namespaceRepos/repoDetail modes) or one row per tag (in tags mode).
| Field | Type | Description |
|---|---|---|
name | String | Repository name (e.g. postgres) |
namespace | String | Owner namespace or org (e.g. library, bitnami) |
fullName | String | Full slug: namespace/name |
description | String | Short description shown on Docker Hub |
isOfficial | String | "true" if Docker official image |
isAutomated | String | "true" if built automatically from a VCS |
isPrivate | String | "true" if private repo (only visible if accessible) |
starCount | String | Number of stars |
pullCount | String | Total lifetime pull count |
lastUpdated | String | ISO 8601 timestamp of last push |
repoUrl | String | Direct Docker Hub URL |
tagName | String | Tag name (tags mode only, e.g. latest, 17-alpine) |
tagDigest | String | SHA256 digest of tag's primary image |
tagLastUpdated | String | When this tag was last pushed |
tagSize | String | Combined image size in bytes |
architectures | String | Comma-separated platform list (e.g. amd64, arm64) |
Sample JSON output (search/repo mode):
{"name": "postgres","namespace": "library","fullName": "library/postgres","description": "The PostgreSQL object-relational database system provides reliability and data integrity.","isOfficial": "true","isAutomated": "false","isPrivate": "false","starCount": "14955","pullCount": "10943948884","lastUpdated": "2026-07-08T13:09:12.432256Z","repoUrl": "https://hub.docker.com/_/postgres","tagName": "","tagDigest": "","tagLastUpdated": "","tagSize": "","architectures": ""}
How to use
Option A — Search images by keyword
Use mode search to find all Docker Hub images matching a term.
- Open the actor and set Mode to
search. - Enter your Search Query (e.g.
"nginx","pytorch","kafka"). - Set Max Results (default 200, up to 10,000).
- Click Start.
{"mode": "search","query": "postgres","maxResults": 200}
Option B — List all repos in a namespace
Use mode namespaceRepos to crawl every public repository under a user or organization.
- Set Mode to
namespaceRepos. - Set Namespace to the Docker Hub username or org (e.g.
bitnami,grafana,library). - Set Max Results as needed.
{"mode": "namespaceRepos","namespace": "bitnami","maxResults": 500}
Option C — Fetch detail for specific repos
Use mode repoDetail to pull full metadata for a known list of images.
{"mode": "repoDetail","namespace": "library","repos": ["postgres", "redis", "nginx", "node", "python"]}
Option D — Extract all tags for a repo
Use mode tags to get every available tag (version, digest, architecture) for one or more images.
{"mode": "tags","namespace": "library","repos": ["postgres"],"maxResults": 1000}
Input parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
mode | String | "search" | Operation mode: search, namespaceRepos, repoDetail, tags |
query | String | — | Search keyword (required for mode=search) |
namespace | String | — | Docker Hub username/org (required for namespaceRepos, repoDetail, tags) |
repos | Array | [] | List of repo names (required for repoDetail and tags) |
maxResults | Integer | 200 | Maximum number of results to return (1–10,000) |
proxy | Object | datacenter | Apify proxy configuration |
Full input example:
{"mode": "search","query": "machine learning","maxResults": 500,"proxy": {"useApifyProxy": true,"apifyProxyGroups": []}}
Output example
{"name": "redis","namespace": "library","fullName": "library/redis","description": "Redis is an open source key-value store that functions as a data structure server.","isOfficial": "true","isAutomated": "false","isPrivate": "false","starCount": "12847","pullCount": "4912033571","lastUpdated": "2026-07-05T08:22:10.123456Z","repoUrl": "https://hub.docker.com/_/redis","tagName": "","tagDigest": "","tagLastUpdated": "","tagSize": "","architectures": ""}
Tips for best results
- Use broad search terms first: Start with a category keyword (
"database","monitoring") to discover what's available, then narrow down. - Set maxResults conservatively: A limit of 200–500 covers most research needs; increase only if you need exhaustive datasets.
- Combine modes: Run search first to find namespaces, then use namespaceRepos to crawl them fully.
- Official images: The
librarynamespace holds all Docker official images — usenamespaceReposwithnamespace: "library"to get all 179 of them. - Tag crawling: Large images like
library/nodehave 1,000+ tags. Set maxResults high enough to capture all versions. - Datacenter proxies are sufficient: Docker Hub does not block datacenter IPs; residential proxies are unnecessary.
- Export to CSV for spreadsheet analysis: After the run, use Apify's dataset export button to download CSV and open in Google Sheets or Excel.
- Schedule regular runs: Use Apify Scheduler to track pull count trends or catch new tag releases weekly.
- Use the repoDetail mode for enrichment: If you have a list of known images (from a lockfile or Docker Compose), feed them directly with mode=repoDetail for quick bulk enrichment.
- Namespaces are case-sensitive: Docker Hub uses lowercase namespace slugs; match exactly (e.g.
bitnaminotBitnami).
Integrations
Docker Hub Scraper integrates with any tool that connects to Apify datasets:
- Google Sheets: Use the Google Sheets integration to automatically sync results to a spreadsheet.
- Slack: Send notifications when new results appear via the Slack webhook integration.
- Zapier: Connect to 5,000+ apps via Zapier — trigger a workflow whenever a run completes.
- Make (Integromat): Build automation pipelines that process Docker Hub data and push it to databases or CRMs.
- Webhooks: Configure Apify webhooks to POST run results to your own backend as soon as data is ready.
- Scheduler: Run automatically on a daily or weekly schedule to monitor image updates without manual intervention.
API usage
cURL:
curl -X POST "https://api.apify.com/v2/acts/logiover~docker-hub-scraper/runs?token=YOUR_TOKEN" \-H "Content-Type: application/json" \-d '{"mode":"search","query":"postgres","maxResults":200}'
Node.js (Apify client):
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_TOKEN' });const run = await client.actor('logiover/docker-hub-scraper').call({mode: 'search',query: 'postgres',maxResults: 200,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Python:
from apify_client import ApifyClientclient = ApifyClient("YOUR_TOKEN")run = client.actor("logiover/docker-hub-scraper").call(run_input={"mode": "search","query": "postgres","maxResults": 200,})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item)
Use with AI agents (MCP)
Docker Hub Scraper is compatible with the Apify MCP Server, which exposes all actors as tools to AI agents. Connect it to Claude, GPT-4, or any MCP-compatible agent and ask:
"Search Docker Hub for all official machine learning images, get their pull counts and last-updated dates, and give me a ranked table."
The agent will call Docker Hub Scraper automatically and process the results in context.
FAQ
Does this actor require a Docker Hub account or API key?
No. Docker Hub's public /v2/ API is fully open. No account, no token, no login is needed to run this actor.
How many images does Docker Hub have?
Docker Hub hosts over 10 million repositories as of 2026. The search API indexes all public images; namespace crawling covers the full catalog of any org.
What is the maximum number of results I can get in one run?
Up to 10,000 (configurable via maxResults). For larger datasets, run multiple times with different queries or namespace segments.
Why am I getting zero results?
- For
mode=search: check that yourqueryfield is not empty and that the term exists on Docker Hub. - For
mode=namespaceRepos: verify the namespace exists and is spelled correctly (lowercase). - For
mode=tags: confirm the namespace and repo name are correct. - Check the actor logs for HTTP errors; retry on transient failures.
Some fields are empty — is that normal?
Yes. The search endpoint returns fewer fields than the detail endpoint (e.g. lastUpdated is empty for search results). Use mode=repoDetail to enrich specific repos with full metadata.
How do I export results to Excel?
After the run, open the Dataset tab, click Export and choose Excel or CSV. Results are also available via the Apify API in JSON format.
How fast does it run?
Each page of 100 results takes roughly 1–3 seconds. A 200-result search run finishes in under 30 seconds. A 10,000-result namespace crawl typically takes 5–15 minutes.
Is it legal to scrape Docker Hub?
Yes. Docker Hub's public API is designed for programmatic access. The data extracted (image names, descriptions, pull counts) is publicly visible to anyone visiting hub.docker.com. This actor only reads public endpoints and does not require authentication or bypass any security measures.
How often is Docker Hub data updated?
Pull counts and star counts are near-real-time. Tag pushes appear within minutes of a new image push. Run the actor on a schedule to track changes over time.
Which namespaces are most useful to crawl?
library (Docker official images, 179 repos), bitnami (production-ready app images), grafana (monitoring stack), linuxserver (home server images), and major cloud vendor namespaces like amazon, google, microsoft.
Does this work for private repositories?
No. The actor only accesses public Docker Hub API endpoints. Private repositories are not accessible without authentication.
Can I get image layer digests?
Digests are available in tags mode — each tag includes the SHA256 digest for its primary architecture. Full manifest/layer details would require the Docker Registry API (v2), which is separate from Docker Hub's web API.
Is it legal?
Docker Hub Scraper accesses only the public, unauthenticated endpoints of Docker Hub's official REST API (hub.docker.com/v2/). All data extracted — repository names, descriptions, pull counts, star counts, tag lists — is freely and publicly visible to anyone on hub.docker.com without logging in. This actor does not bypass authentication, circumvent rate limits aggressively, or access any private or user-specific data. Use of this actor is subject to Docker Hub's Terms of Service and the Apify platform Terms of Service. The operator is solely responsible for ensuring their use complies with applicable laws and the terms of the data source.
Related scrapers
- GitHub Scraper — scrape GitHub repos, stars, contributors, and issues.
- NPM Package Scraper — extract NPM registry package metadata and download stats.
- Tech Stack Detector — detect frameworks, CMSes, and infrastructure tech for any website.
- CVE Advisory Scraper — pull CVE data from NVD and OSV for security monitoring pipelines.
📝 Changelog
2026-08-01
- Completed the August 2026 full health check: verified empty/programmatic default, Console UI default, and two source-informed alternative inputs on Apify.
- Confirmed successful live execution, non-empty structured output, dataset-field/type integrity, and logical sample quality within the 5-minute quality window.
- Declared 16 dataset fields from typed live cloud samples so the output contract is no longer an empty placeholder.
- Declared 16 nullable dataset fields from typed live cloud samples so the output contract is no longer an empty placeholder or brittle to sparse modes.