Docker Hub images - search, tags, pulls (public API) avatar

Docker Hub images - search, tags, pulls (public API)

Pricing

from $5.00 / 1,000 records

Go to Apify Store
Docker Hub images - search, tags, pulls (public API)

Docker Hub images - search, tags, pulls (public API)

Docker Hub scraper on the public v2 API: search images or list named repositories, one row each - namespace, name, description, stars, pulls, official flag, last update, newest tags with size/digest/platforms, URL. No login. $5 per 1,000 rows + $0.10 per run.

Pricing

from $5.00 / 1,000 records

Rating

0.0

(0)

Developer

RetrainMap Data

RetrainMap Data

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 days ago

Last modified

Categories

Share

Returns: one row per Docker Hub repository (image): namespace, name, description, stars, pull count, official flag, last update, registration date, status, the newest N tags (name, last pushed, size, digest, platforms), Hub URL and docker pull command. Input: { "query": "nginx", "max_records": 50 } or { "repositories": ["postgres", "bitnami/redis"] } — a query, a list, or both. Price: $5.00 per 1,000 rows ($0.005 per repository row) plus $0.10 per run. Pay per event; no subscription.

Search Docker Hub the way the website does — by keyword — or look up a list of repositories you already know, and get a flat, normalised row per image, ready for CSV or JSON: which images exist for a technology, how popular they are (stars, pulls), when they were last pushed, which tags are current and how big they are. No Docker Hub login, no token: only the public hub.docker.com/v2 endpoints the Hub website itself uses.

The default input (query nginx, 50 rows, details + 10 newest tags) succeeds within 5 minutes and returns rows — Apify auto-tests it daily.

Data source and status

PublisherDocker, Inc. — Docker Hub (https://hub.docker.com)
APIGET /v2/search/repositories/?query=&page_size=&page= (search), GET /v2/repositories/{namespace}/{name}/ (detail), GET /v2/repositories/{namespace}/{name}/tags?page_size=&ordering=last_updated (tags). Public, no key. Reference: https://docs.docker.com/reference/api/hub/latest/
What this Actor readsPlain GET requests, at most one per request_interval_ms (default 500 ms), 1 search page per 100 results plus up to 2 requests per repository (detail, tags)
Refresh cadenceLive on every run — pull_count and last_updated are Docker Hub's current values; fetched_at on each row is the fetch time
Limits (measured 2026-09-06)Anonymous search paging stops at 200 results per query (page 3 of 100 answers HTTP 403 "pagination too large for anonymous requests"); the Actor stops there and flags stopped_by_anonymous_paging_cap in the run summary. Narrow the query, or pass explicit repositories, for more
TermsDocker's Terms of Service and the Docker Hub rate limits apply (https://www.docker.com/legal/docker-terms-service/). This Actor reads public repository metadata only, never image layers, and never pulls images
Known caveatsOfficial images live under the library namespace (nginx = library/nginx); last_updated, date_registered and status come from the detail request (empty when fetch_details is off); tags are the newest N by last_updated, tag_count is the repository's total; an unknown repository is skipped, counted in not_found and logged

Honesty note: the rows are Docker Hub's own fields renamed and flattened — nothing is inferred, summarised or classified by this Actor, and a run stops with an error rather than guess when the API's shape changes.

Identification: the requests carry a product-token User-Agent and the operator's contact address in the standard From: header (RFC 9110 §10.1.2).

Input

FieldTypeMeaning
querystringSearch term (Docker Hub search). Empty = no search
repositoriesarrayExplicit repositories: nginx, library/postgres, bitnami/redis, or a hub.docker.com/r/... URL
official_onlybooleanKeep only Docker Official Images (default false)
include_tagsbooleanFetch the newest tags per repository (default true)
tags_per_repointeger1-100, default 10
fetch_detailsbooleanFetch the repository detail (default true)
max_recordsintegerDefault 100, at most 5,000 (search itself yields at most 200 per query)
request_interval_msintegerDefault 500 (floor 200)
contact_emailstringSent in the From: header

Example — official Postgres and Redis images with their 5 newest tags, plus the top official postgres search hits:

{ "repositories": ["postgres", "library/redis"], "query": "postgres", "official_only": true, "tags_per_repo": 5, "max_records": 12 }

Output (dataset row)

namespace, name, repository (nginx or bitnami/redis), description, star_count, pull_count, is_official, is_automated, last_updated, date_registered, status, repository_type, full_description_chars, tag_count, tags (list of

{name, last_pushed, last_pulled, size, digest, platforms}
), url, pull_command, fetched_at, source.

A run summary (filters, Docker Hub's own match count, pages, requests, repositories not found, whether the paging cap or the pay-per-event budget stopped the run) is stored as RUN_SUMMARY in the run's key-value store.

Pricing (pay per event)

EventPrice
run-start — once per run$0.10
record — per row written$0.005

The default run (≤ 50 rows) costs at most $0.35; 1,000 repository rows cost $5.10. Rows stop when your run's maximum charge is reached; the run summary says so.

Operator

Steelyard Ventures LLC (RetrainMap) — info@steelyardclinical.com. Not affiliated with Docker, Inc. The Actor writes only to its own dataset and key-value store; it stores no credentials and sends nothing else.