Free API
Every award, as data.
All 5353 published awards of Germany’s research allowance as JSON or CSV. No key, no sign-up, CORS open. Data fetched 15 Oct 2026 from the EU Transparency Award Module.
Endpoints
| GET /api/awards | Awards as JSON, with filters and paging |
| GET /api/awards.csv | Same filters, as a CSV file – without limit you get every matching row |
| GET /api/stats | Totals by year, region, sector and amount range |
| GET /api/openapi.json | Machine-readable description (OpenAPI 3.1) |
Try it
curl "https://researchallowance.com/api/awards?region=Berlin&size=sme&limit=2"const res = await fetch("https://researchallowance.com/api/awards?region=Berlin&size=sme&limit=2");
const { total, awards } = await res.json();import pandas as pd
df = pd.read_csv("https://researchallowance.com/api/awards.csv?size=sme")Filters
| Parameter | Type | What it does |
|---|---|---|
| q | text | Search in company name and register number, e.g. q=biotech |
| region | text | Exact region as in the data, e.g. region=Bayern |
| sector | text | Exact sector text (NACE), see /api/stats |
| size | sme | large | Small/medium or large companies |
| year | number | Year the award was granted, e.g. year=2024 |
| minAmount | number | Only awards whose range starts at or above this many euros |
| sort | granted | amount | name | Default: granted |
| order | asc | desc | Default: desc |
| limit | number | Rows per page, default 50, at most 1000 |
| offset | number | Rows to skip, for paging |
Response
{
"source": { "url": "…", "case": "SA.56245", "fetched": "2026-10-15" },
"total": 123,
"limit": 2,
"offset": 0,
"awards": [
{
"ref": "TM-11223354",
"registerId": "HRB 9014 NP",
"name": "Andrenomed AG",
"sme": true,
"region": "Brandenburg",
"sector": "Research and experimental development on natural sciences and engineering",
"objective": "Industrial research (Art. 25(2)(b))",
"amountFrom": 1000001,
"amountTo": 2000000,
"amountText": "1,000,001 to 2,000,000 EUR",
"granted": "2023-03-01",
"published": "2022-07-26",
"taxOffice": "Finanzamt Oranienburg"
}
]
}| Field | Meaning | |
|---|---|---|
| ref | TAM reference number – unique per award | |
| registerId | Commercial register number, e.g. HRB 9014 NP (null for private persons) | |
| name | Company name (null for private persons – we hide their names) | |
| sme | true = small or medium-sized company | |
| region | German state or region | |
| sector | Industry (NACE) | |
| objective | Type of research, e.g. Industrial research (Art. 25(2)(b)) | |
| amountFrom / amountTo | The published range in whole euros; amountTo null = open-ended | |
| amountText | The range exactly as TAM writes it (with its separators) | |
| granted | Date the tax office granted it (YYYY-MM-DD) | |
| published | Date it was published in TAM | |
| taxOffice | Tax office that granted it |
Good to know
- Only awards above €100000 are published by law (Art. 9 GBER). Smaller ones are secret under German tax law.
- Amounts are ranges, exactly as the EU publishes them. All numbers are whole euros, without separators.
- Freelancers’ own-hour claims are de-minimis aid and are not in TAM.
- Names of private persons are removed; companies are shown as published.
- Responses are cached for an hour. Please be gentle – there is no hard rate limit yet.
- Please credit the source: “European Commission, State Aid Transparency Award Module”. Reuse follows the Commission’s reuse policy (Decision 2011/833/EU).