This project is a normalisation, deduplication and delivery layer over public procurement notices. It ingests free, public feeds β TED, the SAM.gov contract-opportunities extract, and OCDS national portals β maps them to one shape, resolves buyer and supplier identities, groups notices describing the same procurement, and delivers matches by search and webhook.
It is not, and does not provide
- An official procurement system. It does not receive bids, register suppliers, or communicate with contracting authorities. Bids are submitted on the buyer's own portal.
- Legal advice. Nothing here is advice on eligibility, procurement law, or how to respond to a notice.
- The authoritative text of a notice. That is the version on the publisher's portal, in the publisher's language, at the source link carried on every result. A deadline shown here is not a substitute for the deadline in the source notice.
- Complete coverage. Coverage is best effort per source.
sources.json states what is ingested and what is not, and
GET /v1/ingest/runsreports when each source last succeeded and how stale it is.
Three things here are inferences, and are labelled as such
- Entity resolution. Organisations are merged primarily on national registration identifiers. Where the evidence is weaker the records stay separate and are flagged as merge candidates. Every organisation reports its identity strength, and every merge reports the rule that produced it. SAM.gov's opportunities extract carries no UEI for awardees, so US winners are resolved by name and location and stay candidates by construction.
- Cross-source deduplication. Notices are grouped into a tender cluster from explicit publisher links where available, and otherwise from corroborating signals, with a recorded confidence. Every source notice is retained, so a wrong grouping is visible and reversible rather than destructive.
- The CPV β NAICS crosswalk. No official concordance exists. Ours is derived, versioned and confidence-scored, and is a search aid only β never a legal or statistical classification.
Treat all three as decision support, and verify against the source before acting on them.
Free service, no SLA
This API is free. There is no plan, no payment and no billing. Fair use is enforced with
per-key quotas on requests, saved searches, webhook subscriptions and deliveries β because on a
free service the delivery fan-out, not the query, is the scarce resource. Availability is best
effort and self-hosted, with no service level agreement. If a source is stale the API says so
in meta and /healthz rather than serving old data as if it were
current.