Quay.io Container Tags Scraper avatar

Quay.io Container Tags Scraper

Pricing

from $7.50 / 1,000 results

Go to Apify Store
Quay.io Container Tags Scraper

Quay.io Container Tags Scraper

Scrapes Quay.io container tags by repository slug and returns each tag as a flat row with name, manifest digest, size, and last modified date.

Pricing

from $7.50 / 1,000 results

Rating

0.0

(0)

Developer

Acquisition Automation Co.

Acquisition Automation Co.

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

23 days ago

Last modified

Share

Acquisition Automation Co. Search less. Close more.

πŸ“¦ Quay.io Container Tags Scraper

List every tag in a Quay.io repository as a row: tag name, manifest digest, size, last modified date and whether it is still current. Give it a namespace/name slug and it pages the tag list for you. No login, no API token.

Quay.io hosts the container images a great deal of infrastructure runs on, including coreos/etcd and prometheus/prometheus. The tag list is shown a page at a time in a web console, and the digests, timestamps and expiry flags that matter live behind it. If you keep a record of what you deploy, audit which tags are still live, or want release history for an image, you end up clicking through pages. This Actor reads the tag list and writes each tag into a dataset.

Who uses itWhat they use the tag list for
πŸ›  Platform and DevOps engineersKeeping an inventory of the image tags in use, with digests pinned
πŸ” Security and supply chain teamsAuditing which tags are still current and which have expired
πŸ§ͺ Release engineersReading an image's release cadence from lastModified across tags
πŸ” Technical diligence teamsChecking what a target company ships publicly and how often it ships it

πŸ“‹ What it does

πŸ’‘ Why it matters: a tag moves, a digest does not. Pulling both in one row is what turns "we run v3.7.1" into something you can verify later.

  • 🏷 Pages the full tag list for any public namespace/name repository.
  • πŸ” Returns the manifest digest alongside the tag name, so a pin is reproducible.
  • πŸ“… Keeps the last modified date as a readable string and as a Unix timestamp.
  • 🎯 Single tag mode. Pass specificTag for an exact name and skip the pagination entirely.
  • 🧹 Active only, by default. Expired and hidden tags are excluded unless you ask for them.
  • πŸ“¦ One row per tag, the same 14 fields every run, exportable as CSV, Excel, JSON or XML.

πŸ“Š Output

Every tag is one flat row. null means Quay publishes no value for that field on that tag.

FieldTypeDescription
πŸ“š repositorystringThe repository slug the row came from, for example coreos/etcd
🏷 namestringTag name, for example v3.7.1
πŸ” manifestDigeststringThe sha256: digest the tag points at
πŸ“ sizeintegerCompressed size in bytes. null on multi architecture tags, where size lives on each child manifest
πŸ“… lastModifiedstringLast modification date as Quay formats it, for example Thu, 23 Jul 2026 19:36:01 -0000
πŸ• startTsintegerUnix timestamp the tag became current
πŸ•” endTsintegerUnix timestamp the tag stopped being current. null while it is still current
⏳ expirationstringExpiry set on the tag, null when none is set
πŸ†” dockerImageIdstringLegacy Docker v1 image id, null for images built without it
πŸ” reversionbooleantrue when the tag was restored to an earlier manifest
🧩 isManifestListbooleantrue when the tag points at a multi architecture manifest list
βœ… isCurrentbooleantrue when this is the live version of the tag
πŸ•’ scrapedAtstringISO timestamp of collection
⚠️ errorstringnull on a normal row

Example rows

{
"repository": "coreos/etcd",
"name": "v3.7.1",
"manifestDigest": "sha256:3c66a5191d37a11af19f50ad49beed162a988bd1752eabc9fe6b164f7ee443e5",
"size": null,
"lastModified": "Thu, 23 Jul 2026 19:36:01 -0000",
"startTs": 1784835361,
"endTs": null,
"expiration": null,
"dockerImageId": null,
"reversion": false,
"isManifestList": true,
"isCurrent": true,
"scrapedAt": "2026-09-14T16:21:20.610Z",
"error": null
}
{
"repository": "coreos/etcd",
"name": "v3.7.1-s390x",
"manifestDigest": "sha256:ea087ea6d67ae1eb9637c180aeebed86dd5e9e0f5d658eda230f767b03447a61",
"size": 21655013,
"lastModified": "Thu, 23 Jul 2026 19:35:42 -0000",
"startTs": 1784835342,
"endTs": null,
"expiration": null,
"dockerImageId": null,
"reversion": false,
"isManifestList": false,
"isCurrent": true,
"scrapedAt": "2026-09-14T16:21:20.714Z",
"error": null
}

✨ Why choose this Actor

What you get
Digest and tag on one rowPin by digest without a second lookup per tag.
Timestamps in both formslastModified for reading, startTs for sorting and differencing.
The lifecycle flagsisCurrent, endTs, expiration and reversion say whether a tag is still real.
No credentialsPublic repositories are read without a Quay account or token.
$0.0085 a rowA thousand tags costs $8.50, and a repository with no tags costs nothing.

πŸš€ How to use it

  1. Create a free Apify account. New accounts start with $5 of credit.
  2. Open the Actor and select Try for free.
  3. Put the repository slug in repository, in namespace/name form.
  4. Set maxItems to cap the run. Leave onlyActiveTags on true unless you want expired tags too.
  5. Select Start, then export from the Dataset tab as CSV, Excel, JSON or XML.

A first run:

{
"repository": "coreos/etcd",
"maxItems": 10,
"onlyActiveTags": true
}

One exact tag:

{
"repository": "prometheus/prometheus",
"specificTag": "v2.53.0"
}

Everything, including expired tags:

{
"repository": "coreos/etcd",
"maxItems": 1000,
"onlyActiveTags": false
}

βš™οΈ Input

FieldRequiredDescription
repositoryNoRepository slug in namespace/name form, for example coreos/etcd. Defaults to coreos/etcd
maxItemsNoMaximum tags to collect in a run
onlyActiveTagsNotrue excludes expired and hidden tags. Defaults to true
specificTagNoExact tag name. Set it and the Actor returns that tag only, ignoring pagination

πŸ’° Pricing

Pay per result. No subscription, and no Apify platform usage on top.

Apify planFreeBronzeSilverGoldPlatinumDiamond
Per tag row$0.0085$0.00817$0.00783$0.0075$0.0075$0.0075
Rows collectedCost on the Free plan
100$0.85
1,000$8.50
10,000$85.00

Free plan runs return a small preview. Any paid Apify plan lifts the cap.

πŸ”Œ Integrate with any app

The dataset is available through the Apify API as soon as the run finishes. Use run-sync-get-dataset-items for a one-shot call, webhooks to trigger what happens next, or the Make, Zapier, Airbyte and LangChain integrations listed on the Actor page. On a schedule, it becomes a tag history for the repositories you depend on.

πŸ€– Use with an AI agent

Give an agent live access to Quay.io tag lists over the Model Context Protocol:

$claude mcp add --transport http apify "https://mcp.apify.com?tools=acquistion-automation/quay-io-tags-scraper"

Then ask it in plain language for the newest tag of an image and read the digest back.

❓ Frequently asked questions

Why is size null on some tags? Multi architecture tags point at a manifest list rather than a single image, and Quay reports no single size for them. Those rows have isManifestList set to true. The per architecture tags beside them carry a size.

Can it read a private repository? No. It reads public repositories only, with no token.

How do I get just one tag? Set specificTag to the exact name. Pagination is skipped and the run returns that tag.

What does reversion mean? Quay sets it when a tag has been moved back to an earlier manifest, so the current digest is one the tag pointed at before.

Why is dockerImageId empty? It is a legacy Docker v1 identifier. Images built with modern tooling do not carry one, and Quay returns nothing for it.

What can I export? CSV, Excel, JSON and XML from the run page, or JSON straight from the API.

πŸ”— More from Acquisition Automation Co.

About Acquisition Automation Co.

We build automation for people buying businesses. The repetitive part of an acquisition search, checking listings, pulling public records, tracking owners and assets, is work a machine should do, so the buyer's time goes into judging deals instead of collecting them.

We add new Actors regularly. If there is a source you need and do not see here, tell us.

πŸ†˜ Support

Open an issue in the Issues tab of this Actor with your run ID, the input you used, and what you expected to get back.

⚠️ Disclaimer

This Actor is independent and is not affiliated with, endorsed by, or sponsored by Quay.io or Red Hat, Inc. It collects only publicly available data. You are responsible for using that data in compliance with the source's terms of service and applicable law.