BYTETOOLS

Chronicling America (loc.gov) API

Free Library of Congress newspaper API with no key: full-text search across millions of digitised historic US newspaper pages, with OCR text and page images. Tested example included.

No API key requiredCORS enabledHTTPSFree tier

Endpoint tested and returned HTTP 200 on 2026-08-21

What is the Chronicling America (loc.gov) API?

Chronicling America is the Library of Congress's free, key-free API for searching digitised historic American newspapers. It provides full-text search across millions of pages from 1690 onward, returning OCR text, page images and bibliographic metadata for each match.

This is one of the great open cultural datasets: millions of pages of American newspapers, digitised and OCR'd by the Library of Congress and the National Endowment for the Humanities, all searchable and all in the public domain. A single query for "abraham lincoln" returns over 400,000 matching pages, spanning contemporaneous reporting through a century of retrospectives.

One important operational note: the old `chroniclingamerica.loc.gov` host has been retired and now redirects to the unified `loc.gov` collections API. If you are following an older tutorial, that is why the endpoints have changed. The modern interface uses `fo=json` to request JSON and, critically, `at=` to select which top-level attributes you want — without it the response includes the full page-furniture payload and runs to nearly two megabytes for a single result.

Quick facts

Base URL
https://www.loc.gov/collections/chronicling-america
Authentication
No API key or account. Content is in the public domain as US federal government work and expired-copyright material.
Rate limit
Throttled per IP; the Library asks for a crawl delay between requests on bulk jobs. Burst traffic gets 429s.
Pricing
Free. Public domain.
CORS
Enabled — callable directly from browser JavaScript
Official docs
Read the docs

How to use the Chronicling America (loc.gov) API

Every request below was executed against the live API on 2026-08-21, and the response shown is the real body it returned — not an illustration.

1. Search historic newspapers for Abraham Lincoln

GET https://www.loc.gov/collections/chronicling-america/?q=abraham+lincoln&fo=json&c=1&at=results,pagination

curl
curl 'https://www.loc.gov/collections/chronicling-america/?q=abraham+lincoln&fo=json&c=1&at=results,pagination'
JavaScript (fetch)
const res = await fetch("https://www.loc.gov/collections/chronicling-america/?q=abraham+lincoln&fo=json&c=1&at=results,pagination");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);
Python (requests)
import requests

res = requests.get("https://www.loc.gov/collections/chronicling-america/?q=abraham+lincoln&fo=json&c=1&at=results,pagination", timeout=20)
res.raise_for_status()
print(res.json())
Response — HTTP 200 (truncated)
{
  "pagination": {
    "current": 1,
    "first": null,
    "from": 1,
    "last": "https://www.loc.gov/collections/chronicling-america/?c=1&dl=page&fo=json&q=abraham+lincoln&sp=4",
    "next": "https://www.loc.gov/collections/chronicling-america/?c=1&dl=page&fo=json&q=abraham+lincoln&sp=2",
    "of": 407983,
    "page_list": [
      {
        "number": 1,
        "url": null
      },
      {
        "number": 2,
        "url": "https://www.loc.gov/collections/chronicling-america/?c=1&dl=page&fo=json&q=abraham+lincoln&sp=2"
      },
      {
        "number": 3,
        "url": "https://www.loc.gov/collections/chronicling-america/?c=1&dl=page&fo=json&q=abraham+lincoln&sp=3"
      },
      {
        "number": "...",
        "url": "https://www.loc.gov/collections/chronicling-america/?c=1&dl=page&fo=json&q=abraham+lincoln&sp=4"
      }
    ],
    "perpage": 1,
    "perpage_options": [
      20,
      40,
      80,
      160
    ],
    "previous": null,
    "results": "1 - 1",
    "to": 1,
    "total": 407983
  },
  "results": [
    {
      "access_restricted": false,
      "aka": [
        "http://www.loc.gov/resource/sn89081128/1915-02-10/ed-1/?sp=15"
      ],
      "batch": [
        "mnhi_cadillac_ver01"
      ],
      "campaigns": [],
      "composite_location": [
        "0/united states/",
        "1/united states/minnesota/",
        "2/united states/minnesota/brown/",
        "3/united states/minnesota/brown/new ulm/"
      ],
      "contributor": [
        "minnesota historical society; saint paul, mn"
      ],
      "date": "1915-02-10",
      "dates": [
        "191

Parameters

ParameterTypeRequiredDescription
qqueryOptionalFull-text search across OCR'd page content. abraham lincoln
foqueryRequiredOutput format. `json` is required — the default is HTML. json
atqueryOptionalWhich top-level attributes to return. Use it: without it the response carries the entire page payload and can approach two megabytes. results,pagination
cqueryOptionalResults per page. 1
spqueryOptionalPage number within the result set. 2
datesqueryOptionalRestrict to a date range, as `YYYY/YYYY`. 1860/1865
statequeryOptionalRestrict to newspapers published in a given US state. Virginia

Response fields

pagination.ofinteger
Total matching pages across the whole archive — 407,983 for the example query.
pagination.next / laststring
Complete URLs for the next and final pages. Follow them rather than constructing your own.
pagination.current / perpageinteger
Where you are in the result set and how many items per page.
results[].titlestring
Newspaper title for the matching page.
results[].datestring
Publication date of the issue.
results[].image_urlarray
Page scan images at several resolutions.
results[].id / urlstring
Canonical identifier and human-facing page URL on loc.gov.

What you can build with the Chronicling America (loc.gov) API

  • Research how a historical event was reported as it happened
  • Build a genealogy tool that surfaces family names in period newspapers
  • Trace the appearance and spread of a word or phrase over decades
  • Source public domain historic imagery for publication

Common errors and how to fix them

308 redirect

The old `chroniclingamerica.loc.gov` host is retired.

Fix: Use `www.loc.gov/collections/chronicling-america/`. Older tutorials still reference the retired host.

HTML instead of JSON

The `fo` parameter was omitted.

Fix: Add `fo=json` to every request — HTML is the default.

Enormous response

No `at` parameter was supplied.

Fix: Add `at=results,pagination`. Without it a single-result query returns close to two megabytes of page furniture.

429

Too many requests too quickly.

Fix: The Library throttles by IP and asks for a crawl delay on bulk jobs. Space requests out and cache results.

Chronicling America (loc.gov) API — frequently asked questions

Is the Chronicling America API free?

Yes, free with no API key. The content is public domain — US federal government work combined with expired-copyright newspaper material — so it can be reused freely.

Why does the old chroniclingamerica.loc.gov URL not work?

That host was retired and now redirects to the unified loc.gov collections API. Older tutorials still reference it, which is the usual source of confusion. Use `www.loc.gov/collections/chronicling-america/` instead.

Why is the response so large?

Because by default the API returns the entire page payload, including navigation and facet data — nearly two megabytes even for a single result. Add `at=results,pagination` to select only the attributes you actually need and the response drops to a few kilobytes.

How far back does the archive go?

To 1690, though coverage is much denser from the mid-nineteenth century onward. The `dates` parameter restricts a search to a specific year range.

Tools that pair with this API

Chronicling America (loc.gov) is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-21; always check the official documentation before relying on this API in production, as terms and limits can change.