/docs/api-reference
API Reference
Interact with the 1990 Web Archive programmatically. Access millions of preserved pages, submit new URLs for archival, and query historical web data through our RESTful API.
Overview
The 1990 Web Archive API provides a consistent, versioned interface to our preservation database. All requests must be made over HTTPS. Calls made over plain HTTP will fail. API requests without authentication will also fail.
https://api.1990webarchive.com/v1
Current version: v1.4.2. We follow semantic versioning and will never break backward compatibility within a major version.
Authentication
The API uses Bearer token authentication. You can generate API keys from your dashboard. Include your token in the Authorization header.
curl -X GET https://api.1990webarchive.com/v1/pages \n -H "Authorization: Bearer YOUR_API_KEY"
const response = await fetch('https://api.1990webarchive.com/v1/pages', {
headers: { 'Authorization': 'Bearer YOUR_API_KEY' }
});
⚠️ Never expose your API keys in client-side code or public repositories. Use environment variables or a backend proxy.
Rate Limits
To ensure fair usage, the API enforces rate limits based on your subscription tier.
| Header | Description |
|---|---|
X-RateLimit-Limit | Max requests per window |
X-RateLimit-Remaining | Remaining requests in current window |
X-RateLimit-Reset | Unix timestamp when the window resets |
Exceeding limits returns 429 Too Many Requests. Implement exponential backoff for retries.
Endpoints
/v1/pages
Retrieve a paginated list of archived web pages. Supports filtering by era, domain, and status.
Query Parameters
| Name | Type | Description |
|---|---|---|
| page | integer | Page number (default: 1) |
| per_page | integer | Results per page (max: 100) |
| era | string | Filter by decade: 1990s, 2000s |
| status | string | preserved, partial, failed |
{
"data": [
{
"id": "pg_8a9b2c3d4e",
"url": "http://www.geocities.com/SunsetStrip/9842",
"archived_at": "1998-11-14T08:22:00Z",
"status": "preserved",
"mime_type": "text/html",
"size_bytes": 14200
}
],
"pagination": {
"page": 1,
"per_page": 25,
"total": 4218902
}
}
/v1/pages/:id
Fetch complete metadata and raw HTML content for a specific archived page.
{
"id": "pg_8a9b2c3d4e",
"url": "http://www.geocities.com/SunsetStrip/9842",
"original_content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 3.2//EN\">\n<html>\n<head>\n <title>Welcome to My Page</title>\n</head>\n<body bgcolor=\"#000080\" text=\"#00FF00\">\n <h1>You made it!</h1>\n</body>\n</html>",
"metadata": {
"archived_at": "1998-11-14T08:22:00Z",
"server": "Netscape-Enterprise/2.01",
"encoding": "iso-8859-1"
}
}
/v1/archive
Submit a URL for immediate archival. The request is asynchronous; poll the returned job_id for status.
Request Body
| Name | Type | Required | Description |
|---|---|---|---|
| url | string | Required | Full HTTP/HTTPS URL to archive |
| wait_render | boolean | Wait for JS execution before snapshot | |
| tags | string[] | Custom metadata tags |
curl -X POST https://api.1990webarchive.com/v1/archive \n -H "Authorization: Bearer YOUR_API_KEY" \n -H "Content-Type: application/json" \n -d '{"url": "https://example.com", "tags": ["research", "1998"]}'
/v1/search
Full-text search across archived HTML content and metadata. Supports boolean operators and era-specific tokenization.
Query parameter q accepts standard search syntax. Use site:domain.com or year:1995 for scoped queries.
Pagination
Lists support offset-based pagination. All list endpoints return a pagination object.
{
"page": 2,
"per_page": 50,
"total": 12500,
"has_next": true,
"has_prev": true
}
Error Handling
The API uses conventional HTTP status codes and returns JSON error details.
| Code | Meaning | Details |
|---|---|---|
| 400 | Bad Request | Invalid parameters or malformed JSON |
| 401 | Unauthorized | Missing or invalid API key |
| 403 | Forbidden | Insufficient permissions for this resource |
| 404 | Not Found | Resource does not exist or was purged |
| 429 | Rate Limited | Too many requests. Check rate limit headers |
| 500 | Server Error | Internal archive failure. Retry with backoff |
{
"error": {
"code": "invalid_parameter",
"message": "URL must include a valid http or https scheme",
"details": {"field": "url"}
}
}
SDKs & Tools
Official libraries for rapid integration:
- 🐍
pip install 1990-archive-python - 📦
npm install @1990archive/node-sdk - 🐙
go get github.com/1990archive/go-archive
Community tools and Postman collections are available on our GitHub organization.