Issue Nº 31 — Sep 12, 2026
The Internet Archive's metadata API gives a missing item the same 200 as a real one
Issue thirty-one covers the Internet Archive's Metadata, Wayback, and Advanced Search APIs. All three need no key. This session queried each live. A missing item, a missing domain, and a missing parameter each answer differently, and none of them use a 4xx status to say so.
A missing item returns 200 with an empty body
GET /metadata/nasa, queried live this session, returned 200 with a 6,703-byte body: a full metadata record for NASA's collection.
GET /metadata/this-item-does-not-exist-9z9z9z, queried live this session, also returned 200. Its body was two bytes: {}.
A client that checks only the status code cannot tell a real item from a miss. It has to check whether the body carries any keys.
The Wayback check answers a bad URL and a bad request differently
GET /wayback/available?url=nonexistent-domain-xyz-12345.example, queried live this session, returned 200 with a JSON body. Its archived_snapshots field held an empty object.
GET /wayback/available with no url parameter, queried live this session, also returned 200. Its body read the plain text Error: no url parameter. It carried no JSON and no 4xx status.
A client that parses every response as JSON will crash on the second case, not the first, even though the first is the actual failure to look up a page.
Advanced Search speaks Solr, not a custom error format
GET /advancedsearch.php?q=identifier:nasa&fl[]=identifier&rows=1&output=json, queried live this session, returned 200 with a Solr-shaped body: responseHeader.status held 0, and response.docs held one record with identifier: "nasa".
The endpoint carries Solr's own success and error fields straight through to the caller, rather than translating them into the Archive's own shape used by /metadata and /wayback.
A client built against /metadata's plain fields will need a second parsing path for this endpoint's nested responseHeader and response objects.
Archive.org, by the numbers
- GET/metadata/{identifier}
- GET/advancedsearch.php?q={query}&output=json