Authentication
All API requests require authentication via a Bearer token in the `Authorization` header. Generate your API key from the developer dashboard.
HTTP HeaderCopy
Authorization: Bearer your_api_key_here
Search Endpoint
GET
/search
Search across the entire archive. Returns paginated results with metadata, snapshot URLs, and preview thumbnails.
cURL ExampleCopy
curl -X GET "https://api.1990archive.com/v1/search?q=geocities&year=1997" \
-H "Authorization: Bearer <API_KEY>"
-H "Authorization: Bearer <API_KEY>"
Request Parameters
| Parameter | Type | Description |
|---|---|---|
| q required | string | Search query. Supports exact phrases, keywords, and URL fragments. |
| year | integer | Filter by archival year (1990–1999). |
| format | string | Content type filter: `html`, `gif`, `midi`, `all`. |
| limit | integer | Results per page. Max: 100. Default: 20. |
| offset | integer | Pagination cursor. Default: 0. |
Response Format
Returns JSON with paginated results. Includes archival metadata, original URL, and rendered preview links.
JSON ResponseCopy
{
"total": 42891,
"limit": 20,
"offset": 0,
"results": [
{
"id": "arc_978234",
"url": "http://geocities.com/SunsetStrip/7892",
"captured": "1997-04-12T14:22:00Z",
"title": "~Welcome to My Homepage~",
"preview": "https://cdn.1990archive.com/thumb/978234.gif"
}
]
}
"total": 42891,
"limit": 20,
"offset": 0,
"results": [
{
"id": "arc_978234",
"url": "http://geocities.com/SunsetStrip/7892",
"captured": "1997-04-12T14:22:00Z",
"title": "~Welcome to My Homepage~",
"preview": "https://cdn.1990archive.com/thumb/978234.gif"
}
]
}
Rate Limits
API access is throttled based on your subscription tier. Limits reset on a rolling 60-second window.
Free
100 requests / min
5,000 requests / day
5,000 requests / day
Pro
1,000 requests / min
Unlimited daily
Unlimited daily
Enterprise
Custom throughput
Dedicated endpoint
Dedicated endpoint
Error Codes
400
Bad Request - Invalid parameters
401
Unauthorized - Missing/invalid API key
404
Not Found - Archive ID doesn't exist
429
Too Many Requests - Rate limit exceeded
500
Server Error - Internal crawl failure
Code Samples
Integrate the archive into your applications with our official SDKs or raw HTTP.
JS
Node.js Example
JavaScript / FetchCopy
const res = await fetch('https://api.1990archive.com/v1/search?q=web+ring&year=1998', {
headers: { 'Authorization': `Bearer ${API_KEY}` }
});
const data = await res.json();
console.log(data.results.map(r => r.title));
headers: { 'Authorization': `Bearer ${API_KEY}` }
});
const data = await res.json();
console.log(data.results.map(r => r.title));