Developer landing · keyless access

Use the data

Static evidence atlases, machine-readable contracts, bulk files, and live APIs. Pick the access surface that fits your workflow; every collection states its scope and reuse terms.

Sanders public record

Financial disclosures, committee and organization accounts, selected policy records, and an attributed career voting archive. Public-interest reporting; financial periods, source-use restrictions and record limitations remain attached.

Explore the collection · SQLite database · Research JSON · All files and source terms

Optional evidence bundles

Prepare a free preview for a company by ticker or CIK, or citation records for an exact MSHA mine ID. Inspect identity, source dates and coverage before buying the saved JSON result. Admission costs $0.02 in USDC on Base through a compatible x402 client; existing public API access remains free.

Preview a bundle · Bundle API specification

Access surfaces

Public country index

Keyless JSON with country rows, source dates, sample counts, and scoring context.

Open the index JSON

Downloads & source terms

Country index files and historical archives. Formats and licenses are stated for each source.

voidly.ai/data

MCP setup & tool reference

Current setup for compatible AI clients. Tool permissions and availability vary by interface.

Read the MCP guide

API documentation

Current endpoint contracts, parameters, and developer examples.

voidly.ai/api-docs

Religious Institution Evidence Atlas

Keyless static JSON and NDJSON for the source-bounded U.S. religious-institution evidence atlas. The release manifest hash-binds exactly seven data and contract artifacts; its three provenance links reproduce exact source-file bytes and carry adjacent SHA-256 values. The manifest is deliberately not self-hashed.

U.S. Real-Estate Brokerage Accountability Atlas

Keyless static JSON and NDJSON for 14 source-bound institutional actions and 5,735 aggregate measurements across Texas title-agent experience and national Economic Census industry data. Filter the compact search index first, then fetch its listed bounded shard. Complaints, settlements, dismissals, and aggregates do not establish misconduct, exoneration, a commission rate, monopoly power, or present conduct.

Companion dataset: Verboten (banned books)

Voidly's banned-books index ships as plain static JSON — no key, no rate limit, no server. Point an agent at the manifest and resolve any country or title: 19,283 banned or restricted books across 119 countries, every ban dated and source-cited.

Browse Verboten · CC BY 4.0, built on the banned-books.org Open Censorship Core.

Companion accountability datasets

The companion records listed below ship as plain static JSON: no key, no rate limit. Together with Verboten and the censorship index, they form the sixteen-dataset Voidly collection. All are sourced from public records or direct measurement and carry no personal data.

Browse SpyLedger · Browse DarkRegister · Browse Sanctions Programs · CC BY 4.0.

Discover every accountability dataset in one call: /voidly/datasets.json — a machine-readable manifest of all sixteen datasets with each endpoint, its latest counts, and license.

Quick start

Fetch the public country index and select Iran locally. No API key or query parameters are needed for this download. The result is a country summary, not an incident verdict.

curl
# Fetch the public index, then select Iran locally.
curl --fail --silent --show-error \
  'https://api.voidly.ai/data/censorship-index.json' \
  -H 'Accept: application/json' | jq \
  '.countries[] | select(.code == "IR") |
   {country, code, score, samples, level, lowConfidence}'
Python
import httpx

response = httpx.get(
    "https://api.voidly.ai/data/censorship-index.json",
    headers={"Accept": "application/json"},
    timeout=30,
)
response.raise_for_status()
index = response.json()
row = next(row for row in index["countries"] if row["code"] == "IR")
fields = ("country", "code", "score", "samples", "level", "lowConfidence")
print({field: row[field] for field in fields})
JavaScript
const response = await fetch(
  'https://api.voidly.ai/data/censorship-index.json',
  { headers: { Accept: 'application/json' } },
);
if (!response.ok) throw new Error('Index HTTP ' + response.status);
const index = await response.json();
const row = index.countries.find((country) => country.code === 'IR');
if (!row) throw new Error('Country absent from this response');
const { country, code, score, samples, level, lowConfidence } = row;
console.log({ country, code, score, samples, level, lowConfidence });
R
library(httr2)
library(jsonlite)

response <- request("https://api.voidly.ai/data/censorship-index.json") |>
  req_headers(Accept = "application/json") |>
  req_perform()
index <- fromJSON(resp_body_string(response))
fields <- c("country", "code", "score", "samples", "level", "lowConfidence")
print(index$countries[index$countries$code == "IR", fields])

Response shape

A shortened excerpt from the index checked September 8, 2026. Additional metadata, scoring details, and country rows are omitted here. Values change with the source.

{
  "dataAsOf": "2026-09-08T21:29:20.951Z",
  "metadata": {
    "totalCountries": 130,
    "liveWindowDays": 30
  },
  "countries": [
    {
      "country": "Iran",
      "code": "IR",
      "score": 15,
      "samples": 4242,
      "level": "low",
      "lowConfidence": false
    }
  ]
}

Read the fields together

dataAsOf
Source ingestion timestamp. Distinguish it from the time a response was generated.
metadata.liveWindowDays
The measurement window used by the current country index.
countries[].samples
Measurements for this country in the stated window. Zero means no measurements.
countries[].score
Published country score; interpret it with the response scoring metadata.
countries[].level
The source classification. A country without measurements is marked unmeasured.
countries[].lowConfidence
A flag to read alongside sample size and the published scoring rules.

Country coverage and archive coverage differ. Read the scope notes.

Technical documentation archive

Dated engineering notes preserve earlier designs, experiments, and publication-time figures. Use the current documentation above for endpoint contracts, availability, and measurement scope. The archive is not a current service specification.

Browse the full observatory engineering archive.

License & attribution

Voidly-original scores, incidents, and annotations are published under CC BY 4.0. Raw upstream data retains its own terms: OONI raw data and Citizen Lab test lists use CC BY-NC-SA 4.0. Software has separate licenses. Check the terms attached to the file you use. Suggested attribution for the Voidly-original index:

Source: Voidly / AI Analytics — public censorship index (CC BY 4.0); accessed YYYY-MM-DD.

Citing in a paper? Use the formatted citations on the censorship index page (APA + BibTeX, click to copy).

Also available: US Federal Regulatory Data

The Federal Regulatory Data Hub indexes 229datasets from government sources, regulators/SROs, and derived indexes. The coverage endpoint reports 50M+ indexed source rows; that total is not a count of distinct pages or URLs. Access is keyless via REST, MCP, and JSON-LD, with source-specific refresh cadences. Reuse terms vary by source. US federal employee-authored works are generally public domain under 17 U.S.C. § 105, while non-federal and SRO source material retains its source terms. AI Analytics-authored metadata and normalization are CC0 only where explicitly stated and applicable.

Federal Data Hub landing page · Live dataset counts · MCP server (73 tools)