SAMPOQ/supply-chain-10k
10-K Supply-Chain Graph Customer and supplier relationships that US-listed companies name in their own SEC 10-K filings, extracted into a directed graph. 17,039 rows across 2,753 filers, of which 3,588 resolve to a counterparty we also cover. Every row carries the accession number of the filing it came from, so any single claim can be checked against the original document on SEC EDGAR. This data is sold by financial data vendors and has no free equivalent we know of.… See the full description on the dataset page: https://huggingface.co/datasets/SAMPOQ/supply-chain-10k.
10-K Supply-Chain Graph
Customer and supplier relationships that US-listed companies name in their own SEC 10-K filings, extracted into a directed graph. 17,039 rows across 2,753 filers, of which 3,588 resolve to a counterparty we also cover.
Every row carries the accession number of the filing it came from, so any single claim can be checked against the original document on SEC EDGAR.
This data is sold by financial data vendors and has no free equivalent we know of.
Which copy to cite
The files here are a mirror, refreshed weekly, covering filings through 2026-08-31. Hugging Face keeps every revision, so cite a specific commit if you need byte-for-byte reproducibility — the main branch moves as the extraction backfill discovers more filings.
The always-current version is the live CSV, and the documentation and column dictionary are at https://www.sampoq.com/datasets/supply-chain.
Columns
Load it
import pandas as pd
edges = pd.read_csv("https://api.sampoq.com/datasets/supply-chain.csv")
edges.related_name.value_counts().head(20) # most-named counterparties
edges[(edges.source_ticker == "NVDA") & (edges.relation_type == "supplier")]What this is not
- It records disclosure, not the real supply chain. A row exists because a filer chose to name a counterparty, largely driven by the SEC rule requiring disclosure of customers above 10% of revenue. A missing edge means nobody wrote it down, not that the relationship doesn't exist.
- Direction is the filer's point of view. The same pair can appear twice, from both sides, and the two filings don't always agree.
- Extraction is automated. Relationships are read out of filing text by a language model, not by a human analyst. The dataset is auditable — every row names its source document — rather than audited.
- Many counterparties are unresolved.
related_tickeris empty when the named company isn't in our covered universe, which is common for private and foreign suppliers. Those rows are kept, because a named supplier is data even without a ticker. Where it is filled it is a string key and not necessarily a US ticker — Hon Hai resolves to2317, its code on the Taiwan exchange — so joining it against a US-only security master will silently drop rows rather than fail. - `related_name` is verbatim, and not normalised. 12,377 distinct strings appear across 17,039 rows, so one company can show up under several spellings ("Walmart", "Walmart Inc.", "Walmart, Inc."). That is deliberate — the string is what the filing said, and normalising it in place would break the audit trail back to the source document. Entity resolution beyond
related_tickeris yours to do. - The history is thin, and the date range flatters it. 16,741 of the 17,039 rows come from filings in the last 2 years. Earlier filings are in here and reach back much further, but they are a tail, not a panel: this is a current-state graph with some history, not a time series you can difference.
- US annual filings only. The source is the 10-K. Foreign private issuers filing 20-F, and anything disclosed only in a 10-Q or 8-K, are out of scope.
Licence
CC BY 4.0 — use it commercially, redistribute it, build on it. The one condition is credit: Sampoq — https://www.sampoq.com
Citation
Sampoq (2026). Sampoq 10-K Supply-Chain Graph, filings through 2026-08-31.
CC BY 4.0. https://www.sampoq.com/datasets/supply-chain