Data sources and licences
Verdict’s index holds only open-licensed or public-domain data. Every source records a licence that permits caching and derived use. No LinkedIn data enters the index from any source. Vendor data (phase 2) is never stored; it passes through at the vendor’s price under the vendor’s terms.
Sources
Section titled “Sources”The table below is the reference data behind GET /v1/sources. Live freshness (the last successful run) comes from the API.
| Source | Name | Licence | Refresh cadence | Rate limit | Attribution |
|---|---|---|---|---|---|
sec_edgar |
SEC EDGAR | public_domain | Daily: submissions API and full-index (8-K, Form D, Form 4, S-1, 13F); Form ADV via the IAPD bulk file monthly and the daily feed. | Under 10 requests per second with a declared User-Agent (SEC fair access). | Source: U.S. Securities and Exchange Commission (EDGAR and IAPD). |
gleif |
GLEIF | cc0 | Golden copy plus daily deltas (LEI records and direct and ultimate parents). | none published | Source: Global Legal Entity Identifier Foundation (GLEIF), LEI data under CC0. |
companies_house |
UK Companies House | ogl_v3 | Streaming API for filings, officers and PSC changes; monthly bulk download for the base. | none published | Contains public sector information licensed under the Open Government Licence v3.0. |
wikidata |
Wikidata | cc0 | Weekly dump extract; SPARQL for deltas. | none published | Source: Wikidata, under CC0. |
Phase 2 adds USPTO, GDELT, CourtListener, EU national registers, the Australian ABN bulk file, GitHub org-level activity and Indeed Hiring Lab aggregates, each with its licence recorded here before it ships.
Check freshness from your agent
Section titled “Check freshness from your agent”GET /v1/sources. Free. Scope index:read. Use it to show attribution or to check how fresh a source is (freshness_seconds).
curl -X GET 'https://api.askverdict.io/v1/sources' \ -H "Authorization: Bearer $VERDICT_API_KEY"{ "data": [ { "id": "src_01JC3Z4Y8R9K2M5N7P1Q3S5T7V", "source": "gleif", "name": "GLEIF LEI golden copy", "phase": 1, "license": { "kind": "cc0", "name": "CC0 1.0 Universal", "url": "https://creativecommons.org/publicdomain/zero/1.0/", "attribution": null }, "refresh_cadence": "daily", "rate_limit": null, "last_successful_run": { "id": "run_01JC3Z4Y8R9K2M5N7P1Q3S5T7V", "status": "succeeded", "started_at": "2026-11-07T03:00:00Z", "finished_at": "2026-11-07T03:21:40Z", "events_upserted": 1874 }, "last_run": { "id": "run_01JC3Z4Y8R9K2M5N7P1Q3S5T7V", "status": "succeeded", "started_at": "2026-11-07T03:00:00Z", "finished_at": "2026-11-07T03:21:40Z", "events_upserted": 1874 }, "freshness_seconds": 7200 } ], "next_cursor": null, "has_more": false}Response fields
Section titled “Response fields”| Field | Type | Required | Description |
|---|---|---|---|
id |
string | yes | The source id. |
source |
enum: “sec_edgar”, “gleif”, “companies_house”, “wikidata” | yes | Stable source slug, as cited in evidence[].source. |
name |
string | yes | Human name. |
phase |
integer | yes | Release phase that ships the source. |
license |
object | yes | The source’s license. |
license.kind |
enum: “public_domain”, “cc0”, “ogl_v3”, “cc_by_4_0”, “cc_by_3_0_au” | yes | License kind. |
license.name |
string | yes | License name. |
license.url |
string (uri) | yes | License text. |
license.attribution |
string or null | yes | Attribution text to show when you display the data, if required. |
refresh_cadence |
string | yes | How often Verdict refreshes it, for example daily. |
rate_limit |
string or null | yes | The source’s fair-access limit Verdict observes. |
last_successful_run |
object or null | yes | Latest successful ingestion, or null if none yet. |
last_successful_run.id |
string | yes | The run id. |
last_successful_run.status |
enum: “running”, “succeeded”, “partial”, “failed” | yes | Run status. |
last_successful_run.started_at |
string (date-time) | yes | When the run started. |
last_successful_run.finished_at |
string or null (date-time) | yes | When the run finished. |
last_successful_run.events_upserted |
integer | yes | Events inserted or updated. |
last_run |
object or null | yes | Latest ingestion run of any status (it may still be running or have failed), or null if none yet. |
last_run.id |
string | yes | The run id. |
last_run.status |
enum: “running”, “succeeded”, “partial”, “failed” | yes | Run status. |
last_run.started_at |
string (date-time) | yes | When the run started. |
last_run.finished_at |
string or null (date-time) | yes | When the run finished. |
last_run.events_upserted |
integer | yes | Events inserted or updated. |
freshness_seconds |
integer or null | yes | Seconds since the latest successful run finished: how fresh this source’s data is. null if it has never succeeded. |
Source details
Section titled “Source details”Generated from each adapter’s SOURCE.md in the index package. Sources without one are not ingested yet.
GLEIF (gleif)
Section titled “GLEIF (gleif)”| Publisher | Global Legal Entity Identifier Foundation: LEI golden copy and delta files |
| Licence | CC0 1.0 Universal; https://www.gleif.org/en/meta/lei-data-terms-of-use and https://creativecommons.org/publicdomain/zero/1.0/ |
| Attribution | “Source: Global Legal Entity Identifier Foundation (GLEIF), LEI data under CC0.” (not required; shown at GET /v1/sources) |
| Rate limit | None published for the golden copy files. Verdict fetches four files a day at most (two publish manifests, two zips) and holds the client to 4 requests per second, User-Agent: Verdict/0.1 (+https://askverdict.io). |
| Cadence | gleif_golden 01:00 UTC on Sundays (full golden copy); gleif_delta 03:00 UTC daily (LastDay delta); canary_gleif 05:35 UTC (live only with CANARY_ENABLED=true). |
| Format | LEI-CDF 3.1 XML (lei2) and RR-CDF XML (rr), one XML file per zip, from `https://goldencopy.gleif.org/api/v2/golden-copies/publishes/<lei2 |
| Firm keys | LEI; the Companies House number when the registration authority is RA000585. |
What is ingested
Section titled “What is ingested”- LEI records: firm facts (legal name, other names, headquarters country, region and city, entity status, fund category) and
lei_changeevents:issued,renewed(keyed by the next renewal date, once renewed),lapsed,retired. Duplicate and annulled registrations are skipped. - Relationship records: direct parents (
IS_DIRECTLY_CONSOLIDATED_BY) and ultimate parents (IS_ULTIMATELY_CONSOLIDATED_BY) only, as anownership_change(control_changed) and alei_change(parent_changed) on the child, both withparent_lei. Fund management, sub-fund, feeder and branch relationships are skipped.
The zips are streamed into the blob store and parsed as streams, record by record; the 3.5-million-record golden copy never sits in memory.
Fixtures
Section titled “Fixtures”Real records from the GLEIF delta files published 2026-11-08, downloaded that day; see packages/index/test/fixtures/gleif/FIXTURES.md.
SEC EDGAR (sec_edgar)
Section titled “SEC EDGAR (sec_edgar)”| Publisher | U.S. Securities and Exchange Commission: EDGAR (filings) and IAPD (Form ADV) |
| Licence | Public domain: works of the U.S. government (17 U.S.C. 105); https://www.sec.gov/os/accessing-edgar-data |
| Attribution | “Source: U.S. Securities and Exchange Commission (EDGAR and IAPD).” (not required; shown at GET /v1/sources) |
| Rate limit | SEC fair access: under 10 requests per second, declared User-Agent. Verdict sends User-Agent: Verdict/0.1 (<SEC_CONTACT_EMAIL>) and Accept-Encoding: gzip, deflate, and a token bucket holds every SEC client to 8 requests per second, with retries on 429 and 5xx that honour Retry-After. |
| Cadence | sec_daily 06:00 UTC (previous day’s daily index); iapd_daily 07:00 UTC; iapd_monthly 05:00 UTC on the 1st; sec_full_index and sec_submissions on demand; canary_sec_edgar 05:30 UTC (live only with CANARY_ENABLED=true). |
| Firm keys | CIK (every EDGAR filing), CRD (Form ADV, 13F cover page), LEI and web domain (Form ADV Item 1, submissions API when listed). |
What is ingested
Section titled “What is ingested”| Job | Endpoint | Produces |
|---|---|---|
sec_daily |
https://www.sec.gov/Archives/edgar/daily-index/<yyyy>/QTR<n>/form.<yyyymmdd>.idx, then one document per filing |
filing events (sec_8k, sec_form_d, sec_form_4, sec_s1, sec_13f), officer_change (8-K 5.02), ownership_change (8-K 5.01), fund_raise (Form D), insider_trade (Form 4) |
sec_full_index |
https://www.sec.gov/Archives/edgar/full-index/<yyyy>/QTR<n>/form.idx (backfill) |
as sec_daily |
sec_submissions |
https://data.sec.gov/submissions/CIK##########.json |
firm facts (name, former names, HQ, type, website, LEI) and the events of the company’s recent filings, 8-K items included |
iapd_daily, iapd_monthly |
https://reports.adviserinfo.sec.gov/reports/CompilationReports/IA_FIRM_SEC_Feed_<mm_dd_yyyy>.xml.gz (from the manifest) |
adviser facts (type, size band from employees, HQ, domain, LEI), filing (sec_adv), registration |
Documents per form: 8-K and S-1 from <accession>.hdr.sgml; Form D and 13F from primary_doc.xml; Form 4 from <accession>.txt (ADR-0020). Forms and amendments: 8-K, 8-K/A, D, D/A, 4, 4/A, S-1, S-1/A, 13F-HR, 13F-HR/A.
Personal data is minimised (spec 7.3): a Form 4 reporting person’s name and address are not read, only the relationship to the issuer; Form D related persons are not read; IAPD social-profile URLs are dropped (LinkedIn never enters the index).
Fixtures
Section titled “Fixtures”Real files downloaded on 2026-11-08 (UTC) with the declared User-Agent, one request at a time, trimmed to the smallest slice that exercises each parser path; see packages/index/test/fixtures/sec_edgar/FIXTURES.md for each file’s origin URL and what was removed.
Attribution
Section titled “Attribution”Show the attribution string when you display data from a source that requires it. Evidence in every decision names its source slug in evidence[].source and links the original record.