Public API
Every published brand is available as JSON under the CC BY 4.0 licence. No keys, no sign-up.
Endpoints
| Address | Returns |
|---|---|
/api/v1/brands.json | Every published brand. |
/api/v1/brands/<slug>.json | A single brand, by slug. |
/api/v1/categories.json | Categories and subcategories, with brand counts. |
/api/v1/tags.json | Tags and synonyms, with brand counts. |
/api/v1/regions.json | Districts and autonomous regions, municipalities and centroids. |
/api/v1/sustainability.json | Recognised practices and certifications. |
/api/v1/schema.json | A brand's JSON Schema (no envelope). |
Response shape
Every response is an object with the metadata and the payload in data:
{
"version": "v1",
"generated_at": "2026-10-05T18:16:50.747Z",
"license": {
"id": "CC-BY-4.0",
"url": "https://creativecommons.org/licenses/by/4.0/",
"attribution": "Feito em Portugal — https://feitoemportugal.org"
},
"count": 90,
"data": [
…
]
}Schema
A brand's JSON Schema is generated from the project's Zod schema, so it always follows the data. Cross-field rules that JSON Schema cannot express are still checked by the project validator.
Versioning
The API is at /api/v1. Breaking changes — removing a field or changing its meaning — move to a new version; adding fields does not count as breaking.
Attribution
The data is CC BY 4.0: use it, including commercially, as long as you credit the source with a link to .feitoemportugal.org
Notes
- Only published brands reach the API. Drafts stay in the repository.
- No personal data and no exact coordinates: location is the municipality and, on maps, the municipality centroid.
/search-index.jsonis not part of the API: it is an internal detail of the search and may change without notice.