snapdata

Sources & licences

Every published field traces to a source with its licence and attribution. Generated from the schema, so it cannot fall behind the code.

SOURCES.md in the repository is generated from packages/schema, and CI fails if it drifts. Add an instrument without a source and the build breaks, you find out at build time rather than when someone asks where a number came from.

Licence summary

Our codeData we originateUpstream data
MITCC BY 4.0as listed below, attribution preserved

One exception worth knowing before you build on it: the rupee gold and silver values carry ibja-attribution, not CC BY 4.0. Everything under the world scope is cleanly relicensable.

Which sources are live right now

Being able to see this without reading our source is part of the point. The repository carries a probe script that hits every upstream and reports what actually happens, and UPSTREAMS.md records the current answer.

SourceStatusFeeds
ECBlivefx
NSEliveNifty 50, Nifty Bank
EIAneeds an API keyBrent, WTI
World Banknot yet wiredgold and silver USD spot
BSEnot yet wiredSensex
PPACnot yet wiredIndian Crude Basket

Datasets whose sources are not yet wired publish rows with status: "not_backfilled" or "missing" rather than nothing at all, the endpoints exist and answer, they just have no values yet. /api/v1/meta.json reports each source's staleness, and it will not claim to be healthy while this table looks like this.

Sources we publish from

SourceProvidesLicenceRaw retentionRuns on
EIABrent, WTI, daily to 1987US public domainindefiniteWorker / Actions
ECBUSD/INR and majors, daily to 1999permissive, attributionindefiniteWorker / Actions
World Bank Pink Sheetgold, silver USD, monthly to 1960CC BY 4.0indefiniteWorker / Actions
PPACIndian Crude BasketGODL IndiaindefiniteWorker / Actions
NSENifty 50, Nifty Bankexchange terms90 daysIndia-egress runner
BSESensexexchange terms90 daysIndia-egress runner
CBICimport duty and GSTGODL Indian/atranscribed by hand

IBJA, and the licence we accept

Rupee gold and silver are the IBJA benchmark, republished with attribution under ibja-attribution, not CC BY 4.0. IBJA publishes no open API and grants no formal licence; we read a third-party consumer relay that names IBJA as its source in every response, and the parser fails if that attribution disappears.

This reverses an earlier decision. These values used to be fetched privately and used only to assert that a derived price had not drifted more than 0.5% from the benchmark, clean on licensing, and about 3.5% wrong every day, because the only redistributable USD spot input is a monthly average.

We publish the benchmark instead, name it everywhere it appears, and label it with terms that are not CC BY 4.0 rather than pretending it is. If you need a dataset that is freely relicensable end to end, use the world scope: the World Bank, ECB and EIA series carry clean licences.

Raw bodies stay in the private R2 bucket for 90 days and are never committed to git, the same rule as every other restricted source.

The relay repeats Saturday's value on Sunday with no flag, so a bot polling it directly gets Saturday's number presented as Sunday's. Our IN-BULLION calendar marks Sunday closed, which is why /api/v1/gold/in/latest.json reports is_trading_day: false rather than passing the repeat along.

Raw archive retention

Storing raw upstream responses lets us re-parse history when we find a parser bug without re-fetching (often impossible), answers "why did this number change", and insures against sources deleting their own archives.

Retention is licence-keyed, and the licence lives in the source registry, so adding a source cannot accidentally opt it into indefinite retention of a fee-liable body:

ClassExamplesRetention
Clean / redistributableEIA, ECB, World Bank, PPACindefinite, backfill insurance
Restricted / fee-liableIBJA relay, NSE, BSE, MCX, FBIL90 days, local archive only, never served

Bodies never go in the operations database. They are blobs, HTML, CSV, PDF, sometimes hundreds of KB. The database stores a sha256, a byte size, a content type and a pointer.

How to cite

snapdata (2026). Open Daily Rates & Indices Dataset. CC BY 4.0. Derived values include their inputs; upstream attribution as listed above.

On this page