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
Fetch Cat
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
11 days ago
Last modified
Categories
Security
Limited permissionsShare
Export public Docker Hub repositories from search terms, exact image names, or namespaces. Get pull and star counts, descriptions, update times, and optional tag digests and architectures as repository rows or a flat tag dataset—without Docker login.
Quick start
Paste this input into the Actor, run it, then open the Dataset to export JSON, CSV, or Excel:
{"repositories": ["library/postgres"],"includeTags": true,"maxRepositories": 1,"maxTagsPerRepository": 3,"outputMode": "repositories"}
Only public metadata is supported. This does not download container images, vulnerability reports, or SBOMs.
Prefer a video guide? This short Apify walkthrough shows you how to set up and run an Actor. It uses a different Actor, but the setup steps are the same.
What you get
Repository mode produces one row per repository with available descriptions, counts, timestamps and nested tags. Tag mode produces one row per fetched tag, with available digests, sizes and platform-image details. These are public metadata snapshots, without container-image downloads, vulnerability reports or SBOMs.
Who is it for?
- Platform engineers reviewing public image metadata before checking repository documentation.
- Dependency-inventory teams collecting available tag digests and platform-image details.
- Software researchers comparing public repository descriptions, counts and update times.
- Data teams adding bounded namespace or search exports to their own reporting.
How you can use the data
- Inspect a Postgres tag sample. Use
library/postgres, enable tags and choose flat tag output with a small tag cap. Keeprepository,tagName,imageDigest,fullSizeand availableimagesfields together for manual inventory review. - Compare available platforms. Inspect each tag's
imagesentries for architecture and operating-system details. Top-level architecture and OS describe only the first available image entry, so they do not establish all supported platforms. - Prepare a vendor-repository sheet. Use the existing
bitnaminamespace recipe with tags disabled. Export names,hubUrl, descriptions, pull and star counts, and update times without treating the capped sample as the complete namespace. - Review separate dated inventories downstream. Keep repository and tag identities with
scrapedAtwhen comparing your own exports. Counts and timestamps are snapshots rather than a built-in monitoring history, and digest metadata is not a security scan.
Input settings
Search for database images
{"queries":["postgres"],"includeTags":false,"maxRepositories":10,"outputMode":"repositories"}
Export a flat tag inventory
{"repositories":["library/postgres"],"includeTags":true,"maxRepositories":1,"maxTagsPerRepository":10,"outputMode":"tags"}
List a vendor's public repositories
{"namespaces":["bitnami"],"includeTags":false,"maxRepositories":20,"outputMode":"repositories"}
These are input recipes, not links to published tasks.
More input settings
Provide at least one non-empty queries, repositories, or namespaces list. You can combine them. Exact repositories are considered first, followed by queries and then namespaces, within the shared repository limit. No individual list is required for every run.
| Setting | JSON key | Purpose |
|---|---|---|
| Search queries | queries | Search public Docker Hub repositories. |
| Repositories | repositories | Exact namespace/name values or official image names such as postgres. |
| Namespaces | namespaces | Enumerate public repositories for a namespace. |
| Include tags | includeTags | Include tag metadata. Default true. |
| Output mode | outputMode | repositories (default) or tags. |
| Maximum repositories | maxRepositories | Shared unique-repository limit. Default 20. |
| Maximum tags per repository | maxTagsPerRepository | Tag limit. Default 5. |
| Description maximum length | descriptionMaxLength | Full-description character limit. 0 omits it. |
| Maximum runtime | maxRuntimeSeconds | Run budget from 31 to 270 seconds. Default 270. |
See the input form help for ranges and mode requirements. In tag mode, enable includeTags and set maxTagsPerRepository to at least 1.
Output data
Illustrative shape only—not a measured repository snapshot. This shortened example shows repository mode without tag enrichment:
{"type": "repository","repository": "library/postgres","namespace": "library","name": "postgres","hubUrl": "https://hub.docker.com/r/library/postgres","shortDescription": null,"starCount": null,"pullCount": null,"tagCount": null,"tags": []}
| Fields | Meaning |
|---|---|
type, repository, namespace, name, scrapedAt | Row type, repository identity, and collection time in both modes. |
hubUrl, shortDescription, fullDescription, fullDescriptionTruncated | Repository URL, available descriptions, and truncation flag. |
repositoryType, status, isPrivate, isOfficial, isAutomated, hubUser | Repository metadata when supplied by Docker Hub. |
starCount, pullCount, dateRegistered, lastUpdated, lastModified | Available repository counts and dates. |
sourceQueries, sourceInputs | Inputs associated with the repository record. |
tagCount, tagLimitReached, tags | Reported total, whether the fetched sample is smaller, and nested tag records. |
tagName, tagId, tagUrl, lastUpdated, lastPushed, lastPulled | Tag identity, URL, and available dates. |
fullSize, imageDigest, architecture, os, osVersion, variant, status, images | Tag metadata and available per-platform image details. |
Repository-only fields are absent from flat tag rows. Tag metadata appears inside tags in repository mode, or at the top level in tag mode. The top-level architecture and OS describe the first available image entry. Inspect images for other platforms. Missing source values remain null. When tags are disabled, tags is empty and tagCount is null.
Download your results
Open your run's dataset, choose Export and select JSON, CSV or Excel. JSON keeps nested fields together. CSV and Excel are useful when you want to review the records in a spreadsheet.
See Apify's download and export guide for the available formats and field options.
Pricing
Pay-per-event pricing uses a start event once when extraction begins. Each saved repository row in repository mode, or saved tag row in tag mode, produces one item event. Nested tags do not add item events to a repository row.
Failed requests and diagnostic records do not produce separate item events. A run can still incur its start event or charges for already-saved rows. Keep repository and tag caps small for exploration, and see the live Pricing tab for current rates and discounts.
Tips for best results
- Choose the row shape before collecting. Use repository mode for nested tags or tag mode for a flat tag inventory.
- Enable tags when using tag mode. Set a tag limit of at least one, then start with a small repository and tag sample.
- Inspect all available image entries. Top-level platform fields reflect only the first image, not the full architecture list.
- Keep exact repository names when combining sources. They are considered before queries and namespaces within the shared unique-repository limit.
- Read remaining-work diagnostics before continuing manually. Use available pending repository names in a later input rather than assuming recovery is automatic.
Limits and caveats
Search results, namespace inventories and tag lists are bounded samples rather than guaranteed complete catalogues. Results follow Docker Hub's returned order, with no popularity or newest-tag sorting option. Public access can be restricted or rate-limited.
Flags, dates, descriptions, digests and other metadata can be unavailable. Missing source values remain null. With tags disabled, tags is empty and tagCount is null. Repository-only fields are absent from flat tag rows.
Repository rows are saved progressively. Near the run budget, remaining names are written to PENDING_REPOSITORIES for use in a later input. Recovery is not automatic. RUN_SUMMARY is best-effort diagnostic information about completed work, skipped inputs and failures, and it can be unavailable if saving diagnostics fails.
A search with no matches can return an empty dataset. If selected repositories yield no exportable rows, the run may fail. Inspect run details rather than treating missing rows as proof that repositories are private or deleted.
Only public metadata is supported, without Docker login. The Actor does not download container images, vulnerability reports or SBOMs.
Automation and integrations
Save your settings for next time
Once you have an input that works for you, save it as an Apify task. This keeps your settings together so you can use them again without filling in the form from scratch.
Run on a schedule
Need fresh results regularly? You can schedule the Actor or a saved task to run at a time that suits you.
Each scheduled run collects the data again. If you want to compare results or highlight changes, add that step in your own workflow.
Send results to your other tools
Use n8n, Make or Zapier to connect this scraper to the rest of your workflow. For example, you could pass its results to an AI assistant or add records to a spreadsheet. Follow the Apify integration guides for your chosen tool.
For a custom connection, an Apify webhook can notify your app when a run finishes or fails. Your app can then fetch the results or handle the failure.
API usage
Want to collect this data from your own app or automation? The examples below send input to the scraper and show how to collect its results.
The Node.js and Python examples wait for the run to finish before reading its results. The cURL example starts the run and returns its details. Wait for that run to finish, then use its defaultDatasetId to fetch the results.
For setup instructions, see Apify's JavaScript client guide, Python client guide and Actor runs API reference.
cURL
curl -X POST 'https://api.apify.com/v2/acts/fetch_cat~docker-hub-repositories-scraper/runs' \-H "Authorization: Bearer $APIFY_TOKEN" \-H 'Content-Type: application/json' \--data @- <<'JSON'{"repositories": ["library/postgres"],"includeTags": true,"maxRepositories": 1,"maxTagsPerRepository": 3,"outputMode": "repositories"}JSON
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,"maxRepositories": 1,"maxTagsPerRepository": 3,"outputMode": "repositories"});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Python
import osfrom apify_client import ApifyClientclient = ApifyClient(os.environ['APIFY_TOKEN'])run = client.actor('fetch_cat/docker-hub-repositories-scraper').call(run_input={'repositories': ['library/postgres'], 'includeTags': True, 'maxRepositories': 1, 'maxTagsPerRepository': 3, 'outputMode': 'repositories'})print(client.dataset(run['defaultDatasetId']).list_items().items)
MCP and AI agents
You can ask your AI assistant to collect data with Docker Hub Repositories Scraper and help you work with the results. The scraper returns the data, and your assistant can then summarize it, compare records or prepare notes.
Connect your assistant through the Apify MCP server. MCP gives your assistant a way to find this scraper, run it and read the results. Follow the official setup and sign-in guide for your app.
Easier setup with an Apify plugin
If you use a supported coding assistant, the official Apify plugin can set up the connection for you. It connects your assistant to Apify and includes instructions for common tasks. Follow the guide for your particular app.
Use Apify AI in Console
Prefer to keep everything in Apify? Open Apify AI in Console and ask it to find Fetch Cat's Docker Hub Repositories Scraper. You can describe the data you want and ask questions about the results.
Apify AI is currently in beta. It asks for confirmation before starting an Actor, and normal run charges apply.
Choose your assistant
- Claude and Claude Code (Anthropic): Apify setup guide.
- ChatGPT and Codex (OpenAI): Apify setup guides.
- Grok Bot (xAI): Apify plugin guide.
- Gemini CLI (Google): MCP server setup guide. Use the server URL below with the HTTP configuration supported by Gemini CLI.
Connect just this scraper
To keep your setup focused on this scraper, add this server configuration to a compatible MCP client:
{"mcpServers": {"apify": {"url": "https://mcp.apify.com?tools=fetch_cat/docker-hub-repositories-scraper"}}}
Sign in to Apify when your client asks. If your client uses a Bearer token instead, follow its setup guide and keep the token in its secure configuration. Configuration formats vary by app, so use the linked guide if your client needs a different format.
Use Apify's general server
Already connected to the general Apify MCP server at https://mcp.apify.com? You can use it to find this scraper without adding another server. Ask your assistant to use Docker Hub Repositories Scraper by Fetch Cat, or give it the identifier fetch_cat/docker-hub-repositories-scraper.
Your assistant can check the available settings and retrieve the results from the returned run. If the run is still working, it should follow that run rather than start it again. Both connection options use Apify's hosted service.
Example requests
- “Use Fetch Cat’s Docker Hub Repositories Scraper to collect up to 3 tags from library/postgres as flat tag rows. Show available digests, sizes and all returned platform-image details without downloading images.”
- “Collect up to 5 public repositories from the bitnami namespace with tags disabled. Show source links, descriptions, pull counts, stars and update times, marking missing values.”
- “Retrieve up to 5 public repository results for postgres with tags disabled. Keep repository identities and collection times so I can compare the sample with my own earlier export, without calling it a popularity ranking.”
Normal Apify charges apply. Check the live Pricing tab before asking your assistant to run a larger batch.
Pay with x402
If your AI agent has a funded wallet, it can pay for Apify usage through x402. This experimental option lets an agent use Apify without a conventional account.
Apify AGI provides a prepaid API token with a spending cap after payment. Your agent can use that token to run this scraper through the Apify API or an authenticated MCP connection.
Some MCP setups also support paying for each request directly. That is a different payment option, so check the official guide for its availability.
Follow the official guide for wallet setup, supported payment options and current terms. Apify handles the payments. Keep wallet keys and payment tokens in your agent's secure configuration.
Other ways for agents to pay
Apify also supports MPP for prepaid access through AGI and Skyfire for eligible Actors. If your agent already uses one of these, see the agentic payment guide to choose the right setup.
FAQ
Can I export Docker Hub repositories to CSV or JSON?
Yes. Run the Actor and export its Dataset in Apify Console, or retrieve rows through the API.
Can it inspect private images or security scans?
No. It needs no Docker login and exports public repository and tag metadata only. It is not an official Docker product.
Why is a tag digest or architecture empty?
Docker Hub does not supply every field for every tag. For multi-platform tags, check images as well as the top-level values.
Does a tag limit select the most popular tags?
No. It limits the number returned in source order, without an additional sort.
Can I use this as an API alternative?
The Actor provides bounded batch exports through Apify API and MCP. It is not a replacement for authenticated Docker registry operations or image downloads.
Related Actors
- GitHub Repositories Search Scraper — find public source repositories.
- GitHub Trending Scraper — discover projects gaining attention.
- GitHub Issues and Pull Requests Scraper — inspect public project activity.
- NPM Packages Search Scraper — research JavaScript dependencies.
- BuiltWith Domain Tech Stack Scraper — examine technologies used by websites.
Support and feedback
For custom additions or integrations, email hello@fetchcat.dev.
Found an error or have a feature request? Open an issue with the run URL, a non-sensitive input example and what you expected.
Need help sharing it? See Apify’s guide to sharing a run when reporting an issue. Sharing a run can give the developer access to its input, logs and results, so use a run that contains no sensitive data. Please leave out API tokens, passwords, cookies, private documents and personal data. Use a public sample URL or a redacted example instead.
Tried this scraper? We'd love to hear how it worked for you. Leave a review to help others choose the right tool and help us improve it. Your feedback means a lot to us.
Made with care for curious people, AI agents and the possibilities in data. ♥