{
  "id": "gcd",
  "displayName": "Grand Comics Database (comics.org catalog)",
  "sourceId": "gcd",
  "sourceName": "Grand Comics Database",
  "sourceType": "catalog",
  "sourceUrl": "https://www.comics.org",
  "module": "api/gcd",
  "enginePriority": [
    "api"
  ],
  "categories": [
    "comics",
    "marvel_comics",
    "dc_comics",
    "independent_comics",
    "manga"
  ],
  "regions": [
    "US",
    "GB",
    "CA",
    "FR",
    "DE",
    "IT",
    "ES",
    "NL",
    "SE",
    "JP",
    "BR"
  ],
  "languages": [
    "en",
    "fr",
    "de",
    "it",
    "es",
    "nl",
    "sv",
    "ja",
    "pt"
  ],
  "currency": [
    "USD"
  ],
  "supportsListings": false,
  "supportsSold": false,
  "supportsAuctions": false,
  "supportsImages": false,
  "supportsCatalog": true,
  "supportsPopulation": false,
  "supportsLookup": true,
  "refreshFrequencyMinutes": 60,
  "priority": "high",
  "trustScore": 0.9,
  "attributionRequired": true,
  "termsUrl": "https://www.comics.org/about/",
  "accessNotes": "Reads only the public, unauthenticated JSON REST API of the Grand Comics Database: https://www.comics.org/api/series/?format=json&page=N (50 series per page, 232,658 series → ~4,650 pages), /api/series/<id>/, /api/issue/<id>/ and /api/publisher/<id>/ (publisher names are cached per run). No login, no cookies; the API root advertises only `series` and `publisher` list endpoints and ignores filter parameters, so discovery is a resumable page walk (cursor = {page, index}). robots.txt (Cloudflare managed): `User-agent: *` Allow: / with Content-Signal search=yes, ai-train=no — we index catalog facts and link back; the HTML pages and the /download/ SQL dumps sit behind a Cloudflare managed challenge and a GCD account and are NOT fetched. GCD data is CC-BY-SA: every record carries the licence in metadata and links to its comics.org issue page. Rate limit (verified live 2026-09-08, twice): the API throttles per client at roughly 60 requests per hour (HTTP 429 with Retry-After up to ~1,741 s; a second burst of 7 requests 30 min later was refused again), so each hourly run is capped at maxRequestsPerRun (30) requests spaced 2.5 s apart, stops cleanly at its last checkpoint on the first 429 (anomaly 'rate_limited'; the comics.org domain policy sets maxRetries 0 so the engine never sleeps on Retry-After) and resumes from the cursor next run. Cover prices are stored as originalMsrp only when GCD prints an ISO currency (e.g. '0.12 USD'); dates with unknown day/month (GCD '00') are kept as year only, never completed.",
  "enabled": true,
  "schemaVersion": "1.0",
  "acquisitionMethod": "official JSON API (comics.org/api, no key)",
  "historicalDepth": "decades",
  "requires": [],
  "config": {
    "seriesPerRun": 5,
    "backfillSeriesPerRun": 5,
    "issuesPerSeries": 6,
    "maxRequestsPerRun": 30
  }
}
