Wayback Machine CDX Snapshot List Scraper
parseforge/wayback-cdx-scraper
Developer toolsAutomationOther
Queries the Wayback Machine CDX index for a URL or domain and returns each snapshot as a flat row with timestamp, original URL, snapshot URL, HTTP status, MIME type, and content digest. Filter by date, status, and MIME type server-side.
- Total users
- 63
- Monthly active
- 13
- Total runs
- 274
- Bookmarked
- 0
- Rating
- Not rated yet
- Last modified
- 12 days ago
Overview
Wayback Machine CDX Snapshot List Scraper
Scrape Wayback Machine CDX snapshot lists for any URL or domain, up to a million per run. Every row returns the timestamp, original URL, snapshot URL, HTTP status, MIME type, and content digest. Filter by date, status code, or MIME type. Export to CSV, JSON, Excel, or XML.
The Wayback Machine holds billions of historical page captures, but browsing them one at a time is slow. This Actor queries the CDX index directly, so you get a complete, filterable list of snapshots for a domain, host, or exact URL in seconds. No browser, no pagination tricks, the raw index data.
| Who uses it | What they scrape Wayback Machine for |
|---|---|
| SEO analysts | Audit how a competitor's page content and status codes changed over years. |
| OSINT researchers | Map every capture of a domain to find deleted pages or hidden redirects. |
| Digital forensics teams | Collect a full timeline of a site's HTTP responses and content hashes as evidence. |
| Brand protection managers | Monitor historical use of a trademark across domains and subdomains. |
What it does
This Actor queries the Wayback Machine CDX index for a URL or domain and returns each matching snapshot as a flat row with timestamp, original URL, snapshot URL, status code, MIME type, and digest.
- ๐ฏ Match type control: exact URL, path prefix, host only, or entire domain including all subdomains.
- ๐ Timestamp range filter: set a From and To date in yyyyMMddHHmmss format to narrow the window.
- ๐ MIME type filter: regex on the mimetype field, with an optional ! prefix to invert the match.
- ๐ฆ HTTP status filter: regex on the status code, so you can pull only 200s, all 4xx errors, or exclude 404s.
- ๐งน Collapse duplicates: deduplicate adjacent captures by timestamp:8 (daily), digest (content-identical), or urlkey.
Results export to CSV, JSON, Excel, or XML, or straight from the API.
What you can do with Wayback Machine data
๐ Audit competitor site history.
An SEO analyst runs the Actor on a competitor's domain with a status filter of 200 and a MIME filter of text/html to chart every successful page capture over five years.
๐ Find deleted or hidden pages.
An OSINT investigator queries a domain with match type set to domain and no status filter, then sorts the output to spot URLs that later returned 404 or 301.
๐งพ Build an evidence timeline.
A forensics analyst sets a narrow date range and collapses by digest to collect one capture per content change, producing a lightweight change log for a legal hold.
๐ก๏ธ Monitor trademark use.
A brand manager runs the Actor monthly on a set of domains, filtering for text/html snapshots, and reviews new captures for unauthorized use of brand terms.
Why choose this scraper
| What you get | |
|---|---|
| Full index access | Query the CDX API directly instead of scraping the calendar UI, so you get every capture the index knows about. |
| Up to 1M rows | Collect as many as a million snapshots per run, far beyond the browser-based calendar view. |
| Server-side filters | MIME type, status code, and timestamp filters run on the CDX server, so you download only matching rows. |
| Fixed flat schema | Every snapshot arrives with the same columns: timestamp, original, snapshot URL, status, MIME, and digest. |
How it compares
This Actor focuses on high-volume CDX index queries with server-side filtering, while other Wayback Machine scrapers often emphasize page content retrieval or browser-based calendar scraping.
| Feature | ParseForge | Wayback Machine Scraper - Track Website Changes Over Time | Wayback Machine Archive Scraper | Wayback Machine Scraper - Archived Snapshots |
|---|---|---|---|---|
| Queries the CDX index directly | Yes | Not listed | Not listed | Yes |
| Up to 1,000,000 snapshots per run | Yes | Not listed | Not listed | Not listed |
| Server-side MIME type regex filter | Yes | Not listed | Not listed | Not listed |
| Server-side HTTP status regex filter | Yes | Not listed | Not listed | Not listed |
| Collapse adjacent duplicates by field | Yes | Not listed | Not listed | Yes |
| Downloads archived page content | Not listed | Not listed | Yes | Not listed |
Configure the run
Drive the Actor with a single URL or domain, choose how broadly to match it, and apply server-side filters for date range, MIME type, HTTP status, and duplicate collapsing so only the snapshots you need reach your dataset. The Input tab lists every parameter.
A first run with the defaults:
{
"urlOrDomain": "apify.com",
"maxItems": 10
}
A larger pull:
{
"urlOrDomain": "apify.com",
"maxItems": 200
}
Pricing
Pay-per-result: $0.011 per result collected. You pay only for the results written to your dataset.
| Results collected | Approximate cost |
|---|---|
| 100 results | $1.10 |
| 1,000 results | $11.00 |
| 10,000 results | $110.00 |
New Apify accounts start with $5 in free credit.
Free users
Free-plan runs return up to 10 results as a preview. Upgrade your Apify plan to collect up to 1,000,000 results per run.
Run it
- Create a free Apify account with $5 in credit.
- Open the Wayback Machine CDX Snapshot List Scraper.
- Set your inputs and any filters, then click Start.
- Export the results as CSV, Excel, JSON, or XML from the Dataset tab.
Run it programmatically through the Apify API (run-sync-get-dataset-items) or the ApifyClient for JavaScript and Python.
Use with AI agents (MCP)
Give an AI agent live access to Wayback Machine through the Model Context Protocol. Add the Actor to Claude, Cursor, or any MCP client:
claude mcp add --transport http apify "https://mcp.apify.com?tools=parseforge/wayback-cdx-scraper"
Then prompt it in plain language to run the scraper and read back the results.
Troubleshooting
Why am I getting no results?
Check that the domain or URL was ever captured by the Wayback Machine. Try broadening the match type to domain and removing all filters. Also verify the URL format: include the scheme only for exact or prefix matches.
Why are my results capped at a lower number than I set?
The CDX index may have fewer captures than your maxItems value for that query. Try removing the From and To filters or broadening the match type to see if more snapshots exist.
The collapse filter is not reducing rows as expected.
Collapse removes only adjacent duplicates in the CDX result order. If identical captures are not adjacent, they will not be collapsed. Try sorting externally or using a more specific collapse field.
My MIME type regex is not matching anything.
The filter is a regex applied to the full mimetype string. Use ^text/ to match any text type, or ^image/ for images. Test your regex with a tool first, and remember to escape special characters.
The run times out on a very large domain.
Lower the maxItems value or add date range filters to reduce the result set. The CDX API can be slow for domains with millions of captures.
FAQ
| Question | Answer |
|---|---|
| What is the CDX index? | The CDX index is the Internet Archive's searchable catalog of every snapshot stored in the Wayback Machine. It returns metadata about each capture, not the page content itself. |
| Does this Actor download the archived page content? | No. It returns the snapshot list from the CDX index. Each row includes a snapshot URL that you can use with another Actor or tool to fetch the actual archived HTML. |
| How many snapshots can I get in one run? | You can set the maximum up to 1,000,000 snapshots per run. The actual number returned depends on how many captures exist in the index for your query and filters. |
| What does the match type setting do? | Exact URL returns captures of only that precise URL. Path prefix returns captures whose path starts with the given string. Host returns captures on the same hostname. Domain returns captures on the host and all its subdomains. |
| How do I filter by date? | Use the From and To fields with a timestamp format like yyyyMMddHHmmss. For example, 20200101 gives all of January 1, 2020 onward, and 20200101120000 starts at noon that day. |
| Can I get only successful (200 OK) captures? | Yes. Set the HTTP status filter to 200, or use a regex like ^2[0-9]{2}$ to get any 2xx status code. |
| What does the collapse option do? | It removes adjacent duplicate rows based on a CDX field. For example, timestamp:8 keeps only one capture per day, and digest drops captures whose page content hash is identical to the previous one. |
| How do I invert a MIME type or status filter? | Prefix the regex with an exclamation mark. For example, !text/html returns all captures whose MIME type is not text/html. |
| Can I scrape multiple domains in one run? | Each run targets one URL or domain. To scrape multiple domains, run the Actor once per domain, or use a separate orchestrator Actor to loop over a list. |
| Is an Internet Archive account required? | No. The CDX API is publicly accessible. You do not need an account or API key to use this Actor. |
Related actors
Browse the full ParseForge collection for more scrapers.
๐ Need help? Email parseforge@protonmail.com with your run ID, your input, and what you expected.
โ ๏ธ Disclaimer. This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by Internet Archive. It collects only publicly available data. You are responsible for using the collected data in compliance with the source's terms of service and applicable data-protection laws, including GDPR, CCPA, and PIPL. Do not use it to collect personal data unlawfully.
Input
| Field | Type | What it does | Default |
|---|---|---|---|
| urlOrDomain required | string | Target URL, host, or domain to look up in the Wayback Machine CDX index. Examples: example.com, https://example.com/path, sub.example.com | apify.com |
| maxItems | integer | How many snapshots to collect per run. | 10 |
| matchType | string (4 options) | How urlOrDomain is matched against the CDX index. exact = identical URL, prefix = same path prefix, host = same host only, domain = host + all subdomains. | domain |
| from | string | Inclusive lower bound on capture timestamp. Format: yyyy[MM[dd[HH[mm[ss]]]]] (e.g. 2020, 202001, 20200115, 20200115120000). | not set |
| to | string | Inclusive upper bound on capture timestamp. Same format as From. | not set |
| mimeFilter | string | Regex applied to the mimetype field. Prefix with ! to invert. Examples: text/html, ^image/, !text/html | not set |
| statusFilter | string | Regex applied to the statuscode field. Prefix with ! to invert. Examples: 200, ^2[0-9]{2}$, !404 | not set |
| collapse | string | Remove adjacent duplicate captures based on a CDX field. Format: field or field:N (first N characters). Common values: timestamp:8 (one capture per day), digest (drop content-identical captures), urlkey. | not set |
Pricing
from $8.25 per 1,000 results
| Charged for | What it is | Price each |
|---|---|---|
| Item | One row in the default dataset. | $0.00825 to $0.011 |
Tiered: the lower figure is the price on a higher Apify plan. Billing and the free credit live on Apify.
API
One POST returns the dataset directly. Same shape for every scraper in the library, so swapping the slug is the only change.
curl -X POST "https://api.apify.com/v2/acts/parseforge~wayback-cdx-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"helloWorld": 123
}' Examples
Input that runs as-is.
{
"helloWorld": 123
} Reviews
No reviews yet. Be the first.
Issues
We build and maintain this scraper, so a problem with it comes to us. Report it on the Apify listing and the thread stays attached to the scraper where the next person can find it: open an issue.
Broken and urgent, or you would rather not post in public? Write to parseforge@protonmail.com and it reaches the people who wrote it.
Related scrapers
Run Wayback Machine CDX Snapshot List Scraper on Apify All scrapers
