API Documentation
Access decades of preserved web history programmatically. The 1990 Web Archive API provides read-only access to archived pages, crawl status tracking, and historical web analytics.
Install our official SDK or make direct HTTP requests. All endpoints return JSON and require authentication via API key.
npm install @1990archive/sdk # or via curl curl -H 'X-Archive-Key: YOUR_API_KEY' https://api.1990webarchive.com/v1/pages/search
Base URL & Versioning
All requests target the following base URL. API versioning is enforced via URL path prefix.
https://api.1990webarchive.com/v1
Breaking changes are prevented by version pinning. The latest stable version is v1. Deprecated endpoints return a Deprecation header with sunset dates.
Authentication
Authenticate requests by including your API key in the X-Archive-Key header. Keys are generated in your dashboard and have scoped permissions.
GET /v1/pages/search HTTP/1.1
Host: api.1990webarchive.com
X-Archive-Key: sk_live_8f7d6e5c4b3a2910
Content-Type: application/json
Never expose API keys in client-side code. Use environment variables or server-side proxies for frontend applications.
Rate Limits
Requests are limited to 120 req/min for standard tiers and 1000 req/min for enterprise. Rate limit headers are included in every response.
RateLimit-Limit: 120 RateLimit-Remaining: 98 RateLimit-Reset: 1698765432
GET /pages/search
Search the archive for pages matching specific criteria. Supports era filtering, technology detection, and full-text indexing.
| Parameter | Type | Required | Description |
|---|---|---|---|
q | string | Yes | Search query (title, content, or URL) |
year_from | integer | — | Filter by capture year (1990-1999) |
year_to | integer | — | End year range |
limit | integer | — | Max results (default: 20, max: 100) |
Example Request
curl -H 'X-Archive-Key: YOUR_KEY' \ 'https://api.1990webarchive.com/v1/pages/search?q=geocities+personal+page&year_from=1995&limit=5'
Example Response
{
"data": [
{
"id": "pg_8a9b7c6d5e4f3g2h",
"url": "http://www.geocities.com/~user123/home.html",
"title": "Welcome to My Homepage! ★",
"captured_at": "1997-08-14T10:22:00Z",
"tech_stack": ["HTML3.2", "Table Layout", "Animated GIF"],
"preview_url": "https://archive.1990web.com/render/pg_8a9b7c6d5e4f3g2h"
}
],
"meta": {
"total": 12843,
"page": 1,
"per_page": 5
}
}
GET /pages/{id}
Retrieve full metadata and render-ready assets for a specific archived page.
curl -H 'X-Archive-Key: YOUR_KEY' \ 'https://api.1990webarchive.com/v1/pages/pg_8a9b7c6d5e4f3g2h'
Returns complete HTML snapshot, extracted text, linked resources manifest, and cryptographic verification hash.
POST /crawl/submit
Queue a new crawling job for a live or dead URL. Our legacy-compatible crawler will attempt to capture and archive the content.
| Parameter | Type | Required | Description |
|---|---|---|---|
url | string | Yes | Target URL to archive |
depth | integer | — | Crawl depth (1-3, default: 1) |
browser | string | — | Emulation target (netscape3, ie5, modern) |
{
"job_id": "crawl_x9y8z7w6v5u4",
"status": "queued",
"eta_seconds": 45,
"message": "Crawl initiated. Poll /crawl/{job_id}/status for progress."
}
GET /crawl/{job_id}/status
Check the progress of a submitted crawl job. Returns stages: queued, fetching, rendering, archived, failed.
curl -H 'X-Archive-Key: YOUR_KEY' \ 'https://api.1990webarchive.com/v1/crawl/crawl_x9y8z7w6v5u4/status'
GET /metrics/overview
Retrieve aggregate statistics about the archive, including total pages, era distribution, and storage footprint.
{
"total_pages": 4289103,
"total_size_gb": 142.7,
"era_distribution": {
"1990-1993": 12,
"1994-1996": 48290,
"1997-1999": 4236001
}
}
Error Codes
The API uses standard HTTP status codes with extended application-level error payloads.
| Code | Meaning | Description |
|---|---|---|
400 | Bad Request | Invalid parameters or malformed JSON |
401 | Unauthorized | Missing or invalid X-Archive-Key |
403 | Forbidden | Key lacks permission for this endpoint |
404 | Not Found | Page ID or crawl job does not exist |
429 | Too Many Requests | Rate limit exceeded. Retry after header value. |
500 | Server Error | Internal archive storage or rendering failure |
{
"error": {
"code": 401,
"message": "Authentication required",
"documentation_url": "https://docs.1990webarchive.com/errors/401"
}
}
SDKs & Libraries
Official client libraries are available for popular languages. Community-maintained wrappers are also supported.
JavaScript/Node.js: npm install @1990archive/sdk Python: pip install 1990-archive-client Rust: cargo add archive90-rs Go: go get github.com/1990archive/go-sdk