By the fastCRW team · Catalogue figures checked 2026-11-05 against GET /v1/data · Verify independently before relying on any figure.
Short answer: many public APIs can be used in a commercial product, but "public" does not mean "free for any use". Each source publishes its own licence, and some restrict commercial use, require attribution or require share-alike. This guide shows how to read those terms, what attribution looks like in practice, and how the Pergamon catalogue returns the licence and attribution with every call.
The question developers keep asking
The question comes up on developer forums. In a Companies House forum thread dated 2023-09-01, a developer asked about the rules on commercial use of the API and wrote that they could not "find any terms of use or conditions document about using the API online". The thread is at forum.companieshouse.gov.uk. Check the licence page of each source before you build on it.
Four licence classes you will meet
Most public data falls into one of four classes. The examples below come from the licence rows in the catalogue, which quote each publisher's own statement.
- US federal works. Records such as SEC EDGAR filings are "a work of the United States Government, not subject to domestic copyright under 17 U.S.C. 105". The catalogue row carries the attribution text the agency asks for, "Source: U.S. Securities and Exchange Commission, EDGAR".
- CC0. OpenAlex places its catalogue in the public domain, and attribution is appreciated but not required. Wikidata statement data is also CC0.
- CC BY. Reuse is allowed with credit. OSV data is published under CC BY 4.0 by the Open Source Vulnerabilities project, and the World Bank licenses its datasets under CC BY 4.0, which allows commercial use with attribution.
- Own terms. The publisher writes its own rules, and some of them limit commercial use. MusicBrainz says "Non-commercial use of this web service is free". FRED provides its data "for non-commercial, educational, and personal uses", and other uses are subject to additional restrictions.
Some sources sit between these classes. Wikipedia text is CC BY-SA 4.0, so a derivative must keep the share-alike terms. Open Food Facts uses the Open Database License, so a derived database must be shared under the same licence. Read the row before you assume a class.
Check the commercial flag, not only the licence name
Every provider row in the catalogue carries a commercial_use and a redistribution field. Most server-run sources are marked true. Some are false. The Socrata Discovery API is one of them: its catalogue federates thousands of independent portals, and no blanket licence covers the whole catalogue. The flag is false for the whole catalogue, because each record carries its own licence string and you must check that string per record. Do not assume that a public source may be used commercially until its row says so.
What attribution means in practice
Attribution is the part of a licence you can satisfy in code. Every response from Pergamon includes a provenance block with the licence, the licence URL and the attribution text the publisher asked for. Store those fields with any number you show to a user. This example calls the World Bank indicator for Germany's GDP and prints the three provenance fields:
# pip install crw
from crw import CrwClient
client = CrwClient() # reads CRW_API_KEY
result = client.get_data("worldbank", "indicator", {"country": "DE", "indicator": "NY.GDP.MKTP.CD", "mrv": "5"})
prov = result["provenance"]
print(prov["licence"])
print(prov["licenceUrl"])
print(prov["attributionText"])
The output of that run was:
The World Bank Group licenses its datasets under Creative Commons Attribution 4.0 (CC BY 4.0), which allows copying, modification and distribution for any purpose including commercial use, with attribution.
https://datacatalog.worldbank.org/public-licenses
Source: World Bank Open Data (CC BY 4.0)
The Python SDK uses camelCase keys such as licenceUrl and attributionText. The REST response uses snake_case, so the same field is licence_url and attribution_text. Use the key style of the surface you call.
The REST call for the same data is one line:
curl "https://api.fastcrw.com/v1/data/worldbank/indicator?country=DE&indicator=NY.GDP.MKTP.CD&mrv=5" \
-H "Authorization: Bearer $CRW_API_KEY"
Where the licence sits in a response
The licence travels inside the response, next to the data. This is the provenance block from the World Bank call above, with the data array removed:
{
"success": true,
"provider": "worldbank",
"capability": "indicator",
"credits_used": 1,
"provenance": {
"source": "World Bank Open Data",
"upstream_url": "https://api.worldbank.org/v2/country/DE/indicator/NY.GDP.MKTP.CD?format=json&mrv=5",
"licence": "The World Bank Group licenses its datasets under Creative Commons Attribution 4.0 (CC BY 4.0), which allows copying, modification and distribution for any purpose including commercial use, with attribution.",
"licence_url": "https://datacatalog.worldbank.org/public-licenses",
"attribution_text": "Source: World Bank Open Data (CC BY 4.0)",
"is_stale": true,
"cache_age_seconds": 81
}
}
The is_stale flag in that block means the body came from the response cache, not that the World Bank data is old. Store the licence, licence_url and attribution_text fields with any figure you publish, so the credit is never separated from the number.
The same question for four sources
Licence classes are easier to compare side by side. This table uses the licence lines from the catalogue rows, shortened:
| Source | Licence class | Attribution text | Where the call runs |
|---|---|---|---|
| SEC EDGAR | US federal work, 17 U.S.C. 105 | Source: U.S. Securities and Exchange Commission, EDGAR | Server |
| OpenAlex | CC0 1.0 | Source: OpenAlex | Server |
| World Bank Open Data | CC BY 4.0 | Source: World Bank Open Data (CC BY 4.0) | Server |
| MusicBrainz | Own terms, non-commercial use | Source: MusicBrainz | Client, 0 credits |
For the first three, the licence line is the permission and the attribution text is the credit it asks for. MusicBrainz is the one to read most carefully: its own statement says non-commercial use is free and points to commercial plans for other use.
Why some sources run on your machine
Some sources have terms that limit resale, and for those the call runs on your machine instead of on our servers. More than 70 of the catalogue's sources run this way. A client-run call costs 0 credits, and the data never passes through fastCRW. You call the source under its own terms, with its own key where it needs one.
You can see which ones need a key with the local connector command. This is a real run of npx -y crw-mcp connectors list, trimmed to three rows with the licence column cut short, as the tool prints it:
PROVIDER NAME KEY LICENCE
discogs Discogs required, missing Prohibited commercial uses include, but are not limited t...
fred FRED (St. Louis Fed) required, missing FRED provides data and data services to the public for no...
musicbrainz MusicBrainz not needed Non-commercial use of this web service is free; please se...
Share-alike and derived works
Attribution is a line in your product or documentation. Share-alike is a stronger obligation: if you publish a derived work, it must carry the same licence. Three licences in the catalogue work this way:
- CC BY-SA 4.0 on Wikipedia article text. A derivative text keeps the share-alike terms.
- CC BY-SA 3.0 on the product descriptions from endoflife.date. The catalogue row says a derived work "carries the same share-alike obligation".
- ODbL on Open Food Facts. A derived database must be shared under the same licence, and Open Food Facts must be credited.
Whether an output counts as a derived work is a legal question. Showing a single fact with its credit and republishing a whole body of records are different cases, so read the licence for the second before you decide.
A licence checklist before you ship
- Find the source's row in the catalogue and read its licence line,
commercial_useandredistributionflags. - Open the licence URL on the provider page and read the terms it points to.
- Write down the attribution text and the place in your product where it must appear.
- For share-alike or database licences, decide whether your output is a derived work and what it must carry.
- For client-run sources, create your own key if the source needs one, and keep to the terms that come with it.
How we review terms
A provider whose terms nobody has read is not reachable through Pergamon, so every listed source has had its terms read before it goes live. Caching follows the licence. The provider page carries the licence line, so you can check the same text we used.
That review does not make a source safe for every product. A licence can change, and a publisher can update its terms after we read them. Read the licence on the provider page again before you ship a feature that depends on it.
Not legal advice
This article explains how public data licences are usually written and where to find them. It is not legal advice, and it does not tell you whether your product, your users or your jurisdiction are covered. If a source matters to your business, ask a lawyer to read its terms against your use case.
Sources
- SEC privacy and security information, source of the US federal works statement
- World Bank public licences
- Companies House developer forum, commercial use of API
- MusicBrainz API documentation
- fastCRW data sources documentation
Related: Public data API for AI agents · AGPL-3.0 for SaaS, explained · Local-first scraping and data privacy · Pergamon catalogue
