# Internet Archive & Wayback Machine Scraper (`mangudai/internet-archive-scraper`) Actor

Search the Internet Archive's 40M+ items, pull full item metadata and file lists, and query the Wayback Machine for URL snapshots. Books, audio, video, software, and archived pages on official archive.org APIs. No API key.

- **URL**: https://apify.com/mangudai/internet-archive-scraper.md
- **Developed by:** [Mangudäi](https://apify.com/mangudai) (community)
- **Categories:** Developer tools, SEO tools, Open source
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-usage

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Internet Archive and Wayback Machine scraper

Search the Internet Archive's 40M+ items, pull the full record and file list for any item, and look up historical snapshots of any URL in the Wayback Machine. One actor, four jobs, all running on archive.org's official public APIs. No API key, no login, nothing that rate-limits into breakage.

### Four modes

Pick one in the **What to do** field:

- **Search items**: query the catalog of books, audio, video, software, images, web archives, and data. Filter by media type, sort by relevance, downloads, date, or title.
- **Item metadata + files**: give it archive.org identifiers and get the complete metadata plus every file, with format, size, and download base.
- **Wayback snapshots (all)**: list every capture of a URL from the Wayback Machine, with timestamp, status, MIME type, and the direct snapshot link. Filter by date range.
- **Wayback closest snapshot**: find the single capture nearest a date you name, or the most recent one.

### Search example

```json
{
  "mode": "search",
  "searchQueries": ["machine learning", "public domain films"],
  "mediaType": "texts",
  "sortBy": "downloads desc",
  "maxResults": 50
}
````

Each item comes back with identifier, title, creator, description, media type, collection, date, year, language, subject tags, download count, item size, file count, formats, and ready-made links to the details page, the download page, and the thumbnail.

### Wayback example

```json
{
  "mode": "waybackCaptures",
  "urls": ["example.com", "nasa.gov"],
  "waybackFrom": "2010",
  "waybackTo": "2015",
  "maxResults": 100
}
```

You get one row per snapshot: the capture timestamp, an ISO date, the original URL, the HTTP status, the content type, and a `waybackUrl` that opens the archived page.

### Who uses it

Researchers and librarians pulling public-domain sources, journalists and OSINT analysts checking what a page said on a given date, digital preservation teams cataloguing archived sites and old software, and anyone building a dataset from public archive metadata without clicking through archive.org by hand.

### How to find an item identifier

Open any item on archive.org. The identifier is the last part of the URL: for `archive.org/details/nasa_apollo11`, the identifier is `nasa_apollo11`. Put that in the **Item identifiers** field for metadata mode.

### Notes

Everything here reads public data through documented archive.org endpoints: the advanced search API, the item metadata API, the Wayback CDX API, and the availability API. It stores no credentials and pulls nothing private. Broad search terms return huge result sets, so narrow with a media type or a more specific query when you can.

# Actor input Schema

## `mode` (type: `string`):

Pick the job. Search finds items; item metadata pulls the full record and file list; the two Wayback modes look up historical snapshots of a URL.

## `searchQueries` (type: `array`):

One search per line. Used only in Search mode.

## `mediaType` (type: `string`):

Narrow a search to one media type.

## `sortBy` (type: `string`):

Order of search results.

## `maxResults` (type: `integer`):

Caps items per search query, or snapshots per URL in Wayback captures mode.

## `identifiers` (type: `array`):

Archive.org item identifiers, one per line (the last part of an archive.org/details/ URL). Used only in Item metadata mode.

## `urls` (type: `array`):

Web addresses to look up in the Wayback Machine, one per line. Used by both Wayback modes.

## `waybackFrom` (type: `string`):

Only snapshots on or after this date. Wayback captures mode.

## `waybackTo` (type: `string`):

Only snapshots on or before this date. Wayback captures mode.

## `waybackTimestamp` (type: `string`):

Find the snapshot nearest this date. Wayback closest snapshot mode. Leave empty for the most recent.

## Actor input object example

```json
{
  "mode": "search",
  "searchQueries": [
    "nasa apollo 11"
  ],
  "mediaType": "all",
  "sortBy": "relevance",
  "maxResults": 50
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "searchQueries": [
        "nasa apollo 11"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("mangudai/internet-archive-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "searchQueries": ["nasa apollo 11"] }

# Run the Actor and wait for it to finish
run = client.actor("mangudai/internet-archive-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "searchQueries": [
    "nasa apollo 11"
  ]
}' |
apify call mangudai/internet-archive-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=mangudai/internet-archive-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Internet Archive & Wayback Machine Scraper",
        "description": "Search the Internet Archive's 40M+ items, pull full item metadata and file lists, and query the Wayback Machine for URL snapshots. Books, audio, video, software, and archived pages on official archive.org APIs. No API key.",
        "version": "0.0",
        "x-build-id": "YMABmhiY1lWVzifx0"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/mangudai~internet-archive-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-mangudai-internet-archive-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/mangudai~internet-archive-scraper/runs": {
            "post": {
                "operationId": "runs-sync-mangudai-internet-archive-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/mangudai~internet-archive-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-mangudai-internet-archive-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "mode": {
                        "title": "What to do",
                        "enum": [
                            "search",
                            "itemMetadata",
                            "waybackCaptures",
                            "waybackClosest"
                        ],
                        "type": "string",
                        "description": "Pick the job. Search finds items; item metadata pulls the full record and file list; the two Wayback modes look up historical snapshots of a URL.",
                        "default": "search"
                    },
                    "searchQueries": {
                        "title": "Search queries",
                        "type": "array",
                        "description": "One search per line. Used only in Search mode.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "mediaType": {
                        "title": "Media type",
                        "enum": [
                            "all",
                            "texts",
                            "movies",
                            "audio",
                            "software",
                            "image",
                            "data",
                            "web",
                            "collection",
                            "etree"
                        ],
                        "type": "string",
                        "description": "Narrow a search to one media type.",
                        "default": "all"
                    },
                    "sortBy": {
                        "title": "Sort by",
                        "enum": [
                            "relevance",
                            "downloads desc",
                            "date desc",
                            "date asc",
                            "titleSorter asc",
                            "titleSorter desc"
                        ],
                        "type": "string",
                        "description": "Order of search results.",
                        "default": "relevance"
                    },
                    "maxResults": {
                        "title": "Max results per query or URL",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Caps items per search query, or snapshots per URL in Wayback captures mode.",
                        "default": 50
                    },
                    "identifiers": {
                        "title": "Item identifiers",
                        "type": "array",
                        "description": "Archive.org item identifiers, one per line (the last part of an archive.org/details/ URL). Used only in Item metadata mode.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "urls": {
                        "title": "URLs",
                        "type": "array",
                        "description": "Web addresses to look up in the Wayback Machine, one per line. Used by both Wayback modes.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "waybackFrom": {
                        "title": "Wayback from (YYYY or YYYYMMDD)",
                        "type": "string",
                        "description": "Only snapshots on or after this date. Wayback captures mode."
                    },
                    "waybackTo": {
                        "title": "Wayback to (YYYY or YYYYMMDD)",
                        "type": "string",
                        "description": "Only snapshots on or before this date. Wayback captures mode."
                    },
                    "waybackTimestamp": {
                        "title": "Closest to date (YYYYMMDD)",
                        "type": "string",
                        "description": "Find the snapshot nearest this date. Wayback closest snapshot mode. Leave empty for the most recent."
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
