โน๏ธWhen rate limit is exceeded, the API returns HTTP 429 Too Many Requests. Implement exponential backoff in your retry logic.
๐ API Versioning
The current API version is v1, embedded in the base URL. We maintain backward compatibility within major versions.
http
// Current stable versionhttps://api.1990webarchive.com/v1//pages/search// Version pinned to a specific releasehttps://api.1990webarchive.com/v1.2//pages/search
๐ Search Pages
GET/pages/searchSearch the archived web for pages matching your query. Supports full-text search with era-specific filters.
{"status":"success","meta":{"total_results":42847,"page":1,"per_page":10,"total_pages":4285,"search_time_ms":127},"data":[{"id":"arc_gtc_00482195","url":"http://geocities.com/SunsetStrip/Club/6285/","snapshot_url":"https://archive.1990webarchive.com/v1/pages/arc_gtc_00482195/view","snapshot_date":"1995-08-12T00:00:00Z","title":"Welcome to My Homepage!!!","site":"geocities.com","technologies":["frames","table-layout","animated-gifs"],"word_count":1247,"image_count":23}]}
๐ Retrieve Archived Page
GET/pages/:archive_idRetrieve the full metadata and content of a specific archived page.
Path Parameters
Parameter
Type
Required
Description
archive_id
string
Yes
The unique archive identifier (e.g., arc_gtc_00482195)
{"status":"success","data":{"id":"arc_gtc_00482195","original_url":"http://geocities.com/SunsetStrip/Club/6285/","snapshot_date":"1995-08-12T00:00:00Z","title":"Welcome to My Homepage!!!","html_content":"<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 3.2//EN'>...","content_length":12847,"mime_type":"text/html","technologies":["frames","table-layout","animated-gifs","marquee"],"meta_tags":{"keywords":"homepage, personal, welcome, guestbook","description":"Welcome to my awesome homepage!!","generator":"Microsoft FrontPage 3.0"},"images":[{"src":"http://geocities.com/SunsetStrip/Club/6285/images/counter.gif","width":88,"height":31,"type":"animated-gif","base64":"data:image/gif;base64,R0lGODlh..."}],"linked_pages":["http://geocities.com/SunsetStrip/Club/6285/guestbook.html","http://geocities.com/SunsetStrip/Club/6285/links.html"],"verification":{"sha256":"a3f2b8c9d1e4f5a6b7c8d9e0f1a2b3c4...","verified":true,"integrity_hash":"blake3:7x9k2m4p6q8r..."}}}
๐ Index URL
POST/pages/indexSubmit a URL for archival. The archive will crawl and store the page content at the specified timestamp.
โ ๏ธBatch requests are limited to 1,000 URLs per request. Enterprise plans support up to 10,000 URLs.
๐ Create Archive Collection
POST/archivesCreate a named archive collection to group related pages for organization and bulk operations.
Request Body
json
{"name":"GeoCities SunsetStrip Collection","description":"Archived personal homepages from the SunsetStrip area of GeoCities, 1995-1997","source_ids":["arc_gtc_00482195","arc_gtc_00591234","arc_gtc_00678901"],"access":"public"}
DELETE/archives/:archive_idPermanently delete an archive collection. This action cannot be undone.
๐จDANGER: Deleting an archive permanently removes all references and breaks public sharing links. Consider creating a "deleted" status archive instead.
Example Response
200 OK
json
{"status":"success","data":{"message":"Archive arc_col_1990_xyz789 has been permanently deleted.","pages_removed":1847}}
๐ธ Create Snapshot
POST/snapshotsCreate a visual snapshot (screenshot) of an archived page as it would appear in a 1990s browser.
GET/analytics/:archive_idRetrieve usage analytics and access statistics for your archive collections.
Query Parameters
Parameter
Type
Required
Description
start_date
string
No
ISO 8601 date. Default: 30 days ago.
end_date
string
No
ISO 8601 date. Default: today.
granularity
string
No
Data granularity: day, week, month. Default: day.
Example Response
200 OK
json
{"status":"success","data":{"total_requests":12847,"unique_visitors":3291,"top_pages":[{"page_id":"arc_gtc_00482195","title":"Welcome to My Homepage!!!","views":2847}],"top_referrers":[{"source":"google.com","count":4521}],"daily_timeline":[{"date":"2024-01-01","requests":412},{"date":"2024-01-02","requests":389},{"date":"2024-01-03","requests":445}]}}
๐ Webhooks
Configure webhook endpoints to receive real-time notifications for archive events. Enterprise plans support up to 10 webhook endpoints.
โน๏ธWebhook payloads are signed with HMAC-SHA256. Verify the signature using the X-Webhook-Signature header and your configured secret.
Supported Events
archive.indexed
Triggered when a page has been successfully archived and indexed. Payload includes the archive ID and crawl metadata.
archive.failed
Triggered when archival fails (404, timeout, blocked). Payload includes the error code and retry status.
batch.completed
Triggered when a batch indexing job is complete. Payload includes per-URL results and aggregate stats.
snapshot.ready
Triggered when a visual snapshot has been generated. Payload includes the screenshot URL and dimensions.
archive.deleted
Triggered when an archive collection is permanently deleted.
โก Error Codes
The API uses standard HTTP status codes and returns structured error responses in JSON format.
json
// Standard Error Response{"status":"error","error":{"code":"page_not_found","message":"The requested archive page could not be found.","doc_url":"https://docs.1990webarchive.com/errors/page_not_found"}}
All Error Codes
HTTP Status
Error Code
Description
400
invalid_request
Malformed request body or missing required parameters
401
unauthorized
Invalid or expired API key
403
forbidden
Insufficient permissions for the requested resource
404
page_not_found
Archive page or collection not found
409
already_indexed
URL is already in the archive at the requested timestamp
422
crawl_failed
Unable to reach the target URL for crawling
429
rate_limited
Too many requests โ check X-RateLimit headers
500
internal_error
Server error โ please retry and contact support if persistent
503
service_unavailable
API maintenance in progress
๐ฆ SDKs & Libraries
Official SDKs are available for popular languages. All SDKs are open source on GitHub.