Docker Hub Repositories Scraper
Pricing
from $0.03 / 1,000 item extracteds
Docker Hub Repositories Scraper
Export public Docker Hub repository and tag metadata including pulls, stars, digests, architectures, timestamps, and descriptions.
Pricing
from $0.03 / 1,000 item extracteds
Rating
0.0
(0)
Developer
Hanna Nosova
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
an hour ago
Last modified
Categories
Share
Docker Hub Repositories Scraper helps teams turn public container image pages into clean datasets. Use it to compare popular base images, audit release cadence, inventory tag digests, and monitor public repository metadata without manual copying.
Who is this for
- DevOps and platform teams tracking base image popularity, pulls, and tag freshness.
- Security and supply-chain teams exporting image digests, architectures, and timestamps for public dependencies.
- Product and market researchers comparing public container repository adoption across vendors.
What data can it export
- Public repository identity, namespace, Docker Hub URL, descriptions, type, status, and trust flags.
- Pull counts, star counts, registration and update timestamps.
- Bounded tag metadata including tag names, IDs, digests, architecture, OS, image size, and push/pull timestamps.
- Namespace inventories for public Docker Hub organizations.
Example input
{"repositories": ["library/postgres", "library/redis"],"includeTags": true,"maxRepositories": 10,"maxTagsPerRepository": 5,"outputMode": "repositories"}
Example output
{"type": "repository","repository": "library/postgres","namespace": "library","name": "postgres","hubUrl": "https://hub.docker.com/r/library/postgres","shortDescription": "The PostgreSQL object-relational database system...","starCount": 14962,"pullCount": 10980699991,"isOfficial": true,"tagCount": 1379,"tagLimitReached": true,"tags": [{"tagName": "latest","imageDigest": "sha256:...","architecture": "amd64","os": "linux","lastPushed": "2026-07-01T00:00:00Z"}],"scrapedAt": "2026-07-14T00:00:00.000Z"}
Input settings
| Field | Type | Description |
|---|---|---|
queries | string[] | Docker Hub search terms such as postgres or redis. |
repositories | string[] | Exact repositories as namespace/name; official images like postgres resolve to library/postgres. |
namespaces | string[] | Public namespaces to enumerate, such as library or bitnami. |
includeTags | boolean | Fetch tag metadata for each repository. |
outputMode | string | repositories for one row per repository with nested tags, or tags for one row per tag. |
maxRepositories | integer | Maximum unique repositories to output. |
maxTagsPerRepository | integer | Maximum tags to fetch per repository. |
descriptionMaxLength | integer | Maximum characters kept from full descriptions. |
maxRuntimeSeconds | integer | Optional self-imposed cap (31–270 seconds). Before it is reached, the Actor stops taking new repositories, writes PENDING_REPOSITORIES, and leaves time to shut down cleanly. |
Output fields
Repository mode includes repository, namespace, name, hubUrl, shortDescription, fullDescription, repositoryType, status, isPrivate, isOfficial, isAutomated, starCount, pullCount, dateRegistered, lastUpdated, lastModified, hubUser, sourceQueries, sourceInputs, tagCount, tagLimitReached, tags, and scrapedAt.
Tag mode includes repository, tagName, tagId, tagUrl, lastUpdated, lastPushed, lastPulled, fullSize, imageDigest, architecture, os, osVersion, variant, status, images, and scrapedAt.
Input recipes
Search popular database images
{"queries":["postgres","mysql","redis"],"includeTags":true,"maxRepositories":30,"maxTagsPerRepository":3,"outputMode":"repositories"}
Export tag digest inventory
{"repositories":["library/postgres"],"includeTags":true,"maxRepositories":5,"maxTagsPerRepository":25,"outputMode":"tags"}
Enumerate a vendor namespace
{"namespaces":["bitnami"],"includeTags":false,"maxRepositories":50,"outputMode":"repositories"}
Pricing
This Actor uses pay-per-event pricing:
- Start event:
$0.005per run. Each saved repository row in repository mode, or each saved tag row in tag mode, is one paid item. Failed requests and diagnostic records are not charged.
| Apify usage tier | Price per saved item | Approx. price per 1,000 saved items |
|---|---|---|
| Free | $0.000057346 | 5.7346 cents |
| Starter / Bronze | $0.000049866 | 4.9866 cents |
| Scale / Silver | $0.000038895 | 3.8895 cents |
| Business / Gold | $0.000029919 | 2.9919 cents |
| Platinum | $0.000019946 | 1.9946 cents |
| Diamond | $0.000013962 | 1.3962 cents |
Tips and limits
- Keep
maxTagsPerRepositorybounded for official images with thousands of tags. - Use
outputMode: "tags"when you need a flat export of tag digests and architecture metadata. - Use repository mode when you want one row per image with a compact nested tag sample.
- The Actor only exports public Docker Hub metadata and does not access private repositories or vulnerability scan data.
- Every repository is saved progressively. If the run approaches its time limit,
PENDING_REPOSITORIESrecords the unprocessed work andRUN_SUMMARYexplains what completed and why. - Use
maxRuntimeSecondswhen you need a predictable bounded run. The pending-work record lists canonical repository names so you can run those names again in a later job; it never silently changes your search or namespace filters.
API usage
Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('fetch_cat/docker-hub-repositories-scraper').call({repositories: ['library/postgres'],includeTags: true,maxTagsPerRepository: 10,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Python
from apify_client import ApifyClientclient = ApifyClient('YOUR_APIFY_TOKEN')run = client.actor('fetch_cat/docker-hub-repositories-scraper').call(run_input={'repositories': ['library/postgres'],'includeTags': True,'maxTagsPerRepository': 10,})items = client.dataset(run['defaultDatasetId']).list_items().itemsprint(items)
cURL
curl -X POST 'https://api.apify.com/v2/acts/fetch_cat~docker-hub-repositories-scraper/runs?token=YOUR_APIFY_TOKEN' \-H 'Content-Type: application/json' \-d '{"repositories":["library/postgres"],"includeTags":true,"maxTagsPerRepository":10}'
MCP and agents
Use this Actor from AI agents through Apify MCP:
$claude mcp add apify https://mcp.apify.com/?tools=fetch_cat/docker-hub-repositories-scraper
JSON config:
{"mcpServers": {"apify": {"url": "https://mcp.apify.com/?tools=fetch_cat/docker-hub-repositories-scraper"}}}
Example prompts:
- "Export the latest public tags for library/postgres from Docker Hub."
- "Find Docker Hub repositories matching redis and summarize pull counts."
- "Create a CSV of image digests and architectures for library/nginx."
FAQ
Can it scrape private repositories? No. It only exports public Docker Hub metadata.
Does it return vulnerability or SBOM data? No. Those fields are not publicly available for arbitrary repositories.
Why are tag counts capped? Popular official images can have thousands of tags. The cap keeps runs fast and predictable.
Related Actors
Support
Questions or issues? Open the Issues tab on the Actor page and include:
- The input JSON you used.
- The expected output.
- The actual output or error message.
- A reproducible public URL from Docker Hub, such as a repository or namespace page.
- Your Apify run ID.