SKILLMERC tools

Internet Archive & Wayback Machine Scraper - Snapshots & Search

List Wayback Machine snapshots of any URL or site with date, status and change filters and optional page text, or search archive.org item metadata. Official APIs, no key, $0.50 per 1,000 rows.

USD 0.50 per 1,000 results on Apify (pay per event)

Open in Apify StoreExample: Wayback Machine History of a Website, Yearly


Two tools in one actor, both on archive.org's official public APIs, with no API key, no login and no browser:

Price: $0.50 per 1,000 rows in either mode.

Common uses

Quick start: Wayback Machine

{
  "mode": "wayback",
  "urls": ["example.com", "https://www.python.org/"],
  "collapse": "year",
  "from": "2015",
  "to": "2020",
  "statusFilter": "200",
  "maxSnapshotsPerUrl": 50,
  "fetchContent": true
}

Wayback inputs

Name Default Description
mode search Set to wayback for this mode.
urls URLs or domains, for example example.com or https://site.com/pricing.
matchType exact exact (this URL only), prefix (every URL that starts with it), host (every page on the host), domain (the domain and all subdomains).
from, to empty Date range as YYYY, YYYY-MM or YYYY-MM-DD.
collapse none day, month or year keep at most one capture per URL per period. digest keeps content changes only: a capture is dropped when its content is identical to the capture before it.
statusFilter empty HTTP status, as a regular expression: 200, 3.. for redirects.
mimeFilter empty Content type, as a regular expression: text/html, application/pdf.
maxSnapshotsPerUrl 100 Stop after this many snapshots for each URL or domain (up to 100,000).
fetchContent false Download each archived page and add page_title, text and text_length.
maxContentChars 20000 Cut long page text to this many characters (0 = no cut).

Wayback output

{
  "type": "wayback_snapshot",
  "input_url": "https://www.python.org/",
  "original_url": "https://www.python.org/",
  "urlkey": "org,python)/",
  "timestamp": "20150101032028",
  "captured_at": "2015-01-01T03:20:28Z",
  "status_code": 200,
  "mimetype": "text/html",
  "digest": "CWG5GMVD...",
  "length": 6411,
  "snapshot_url": "https://web.archive.org/web/20150101032028/https://www.python.org/",
  "raw_snapshot_url": "https://web.archive.org/web/20150101032028id_/https://www.python.org/",
  "page_title": "Welcome to Python.org",
  "text": "Skip to content ...",
  "text_length": 6678,
  "content_error": null
}

page_title, text, text_length and content_error appear only when fetchContent is on. raw_snapshot_url opens the page exactly as archived, without the Wayback toolbar. length is the compressed size in the archive. Exact duplicate index entries are skipped and not charged. A per-target summary is saved to the run's OUTPUT record, and one failing URL does not stop the others.

Search mode

Search mode is the default, so existing inputs keep working unchanged.

{ "query": "mediatype:texts AND subject:python", "sort": "downloads desc", "maxItems": 100 }

Search inputs

Name Type Default Description
query string mediatype:texts AND subject:python Archive.org search query (Lucene syntax). Supports field-scoped queries: creator:tolkien, subject:jazz, collection:librivoxaudio.
mediatype string (empty) Narrow to a media type: texts, audio, movies, software, image, web, data.
sort string downloads desc Sort order. Examples: date desc, titleSorter asc, avg_rating desc.
maxItems integer 100 Maximum items to return. Hard cap: 10,000.
includeFiles boolean false Also fetch the file manifest for each item. Makes one extra request per item, significantly slower for large result sets.

Query syntax

Archive.org uses Lucene syntax. Some useful patterns:

subject:jazz AND mediatype:audio
creator:"Ernest Hemingway"
collection:gutenberg AND language:english
date:[2020-01-01 TO 2023-12-31]

Search output fields

Field Type Description
identifier string Unique Archive.org item ID
title string Item title
creator array Author(s) or creator(s)
description string Item description
mediatype string texts, audio, movies, software, image, etc.
subject array Subject tags
date string Original publication date
year integer Publication year
language array Language(s)
downloads integer Total download count
item_size integer Total size in bytes
collection array Collections the item belongs to
publicdate string Date added to Archive.org (ISO 8601)
item_url string Direct URL to the item page
files array File manifest (only when includeFiles: true)

Search sample output

Result from query mediatype:texts AND subject:python, sorted by downloads desc:

{"identifier":"python_ebooks_2020","title":"Python Ebooks","creator":["strugglez"],"description":"Python Ebooks","mediatype":"texts","subject":["python"],"date":null,"year":null,"language":["Latin"],"downloads":257128,"item_size":49856126105,"collection":["booksbylanguage_latin","booksbylanguage"],"publicdate":"2020-09-27T09:24:26Z","item_url":"https://archive.org/details/python_ebooks_2020","files":null}

Pricing

Pay per result: $0.50 per 1,000 rows, the same in both modes, plus Apify's tiny start fee. 100 snapshots cost $0.05. Downloading page text or file lists does not raise the per-row price, it only makes the run take longer.

Limitations

Rate limits

Requests run one at a time: 1 second between Wayback index pages, 1.5 seconds between page downloads, 500 ms between search pages and 600 ms between file list requests, with automatic backoff on HTTP 429 and 5xx responses.

Legal

Both modes use archive.org's public endpoints, which need no authentication. Only publicly archived data is returned. Respect the copyright of the archived pages you download.


Run it on Apify Apify's free plan includes monthly platform credit, so small runs cost little or nothing to try.