Grants API¶
The Grants API provides discovery, search, and filtering of EU and national carbon/sustainability grant opportunities. Most grant endpoints are public (no authentication required), except for the company matching preview which requires tenant context.
Endpoints¶
GET /grants¶
List all grants with pagination, filtering, and sorting.
Authentication: Not required
{
"items": [
{
"id": "b1c2d3e4-f5a6-7890-bcde-f12345678901",
"title": "Horizon Europe - Clean Energy Transition",
"description": "Funding for clean energy research and innovation...",
"source": "cordis",
"funding_amount_min": 500000,
"funding_amount_max": 5000000,
"currency": "EUR",
"deadline": "2025-06-30T23:59:59Z",
"countries": ["DE", "FR", "IT", "ES"],
"nace_codes": ["D35", "M72"],
"company_sizes": ["small", "medium"],
"status": "active",
"is_open": true,
"days_until_deadline": 45,
"is_carbon_focused": true,
"carbon_categories": ["renewable_energy", "clean_technology"],
"eu_taxonomy_aligned": true,
"green_deal_aligned": true,
"taxonomy_objectives": ["climate_mitigation"]
}
],
"total": 342,
"page": 1,
"page_size": 20,
"pages": 18
}
Query Parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
page | integer | 1 | Page number (>= 1) |
page_size | integer | 20 | Items per page (1-100) |
country | string | -- | Filter by eligible country (ISO code) |
nace_code | string | -- | Filter by industry NACE code |
min_funding | float | -- | Minimum funding amount (EUR) |
max_funding | float | -- | Maximum funding amount (EUR) |
status | string | -- | Grant status: active, closed, upcoming |
company_size | string | -- | Eligible company size: micro, small, medium, large |
open_only | boolean | -- | Only show grants with future deadlines |
source | string | -- | Data source: cordis, eu_portal, cohesion, innovate_uk |
sort_by | string | -- | Sort field: deadline, funding_amount, created_at |
sort_order | string | asc | Sort direction: asc or desc |
Status Codes:
| Code | Description |
|---|---|
| 200 | Grant list returned |
GET /grants/search¶
Full-text search with faceted filtering. Uses Meilisearch for sub-100ms latency when available, with automatic fallback to PostgreSQL ILIKE search.
Authentication: Not required
{
"items": [
{
"id": "b1c2d3e4-f5a6-7890-bcde-f12345678901",
"title": "Horizon Europe - Clean Energy Transition",
"source": "cordis",
"is_carbon_focused": true,
"carbon_categories": ["renewable_energy"]
}
],
"total": 15,
"query": "renewable energy",
"page": 1,
"page_size": 20,
"pages": 1,
"processing_time_ms": 12,
"facets": {
"countries": {"DE": 5, "FR": 3, "IT": 2},
"source": {"cordis": 8, "eu_portal": 7},
"company_sizes": {"small": 10, "medium": 12},
"status": {"active": 14, "upcoming": 1}
},
"used_meilisearch": true
}
Query Parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
q | string | -- | Required. Search query (min 1 char) |
page | integer | 1 | Page number |
page_size | integer | 20 | Items per page (1-100) |
country | string | -- | Filter by eligible country |
nace_code | string | -- | Filter by NACE code |
status | string | -- | Grant status filter |
company_size | string | -- | Company size filter |
source | string | -- | Data source filter |
min_funding | float | -- | Minimum funding amount |
max_funding | float | -- | Maximum funding amount |
open_only | boolean | false | Only show open grants |
sort_by | string | -- | Sort field |
sort_order | string | asc | Sort direction |
Response Fields (GrantFacetedSearchResponse):
| Field | Type | Description |
|---|---|---|
items | array | Array of GrantResponse objects |
total | integer | Total matching results |
query | string | The search query used |
page | integer | Current page |
page_size | integer | Page size |
pages | integer | Total pages |
processing_time_ms | integer | Search latency in milliseconds |
facets | object | Facet counts for dynamic filtering (null in fallback) |
used_meilisearch | boolean | true if Meilisearch was used, false for PostgreSQL |
Faceted Filtering
When Meilisearch is available, the facets field provides counts for each filter value, enabling dynamic filter UIs that show how many results match each option.
GET /grants/search/simple¶
Simple PostgreSQL full-text search. Maintained for backward compatibility with existing clients.
Authentication: Not required
Query Parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
q | string | -- | Required. Search query |
page | integer | 1 | Page number |
page_size | integer | 20 | Items per page (1-100) |
country | string | -- | Country filter |
nace_code | string | -- | NACE code filter |
status | string | -- | Status filter |
company_size | string | -- | Company size filter |
source | string | -- | Source filter |
Response (GrantSearchResponse):
Prefer /grants/search
For new integrations, use /grants/search instead. It provides Meilisearch-powered search with facets and better performance.
GET /grants/stats¶
Get aggregate grant statistics including carbon-focused breakdowns.
Authentication: Not required
{
"total_grants": 1250,
"active_grants": 890,
"closed_grants": 310,
"upcoming_grants": 50,
"by_source": {
"cordis": 520,
"eu_portal": 380,
"cohesion": 200,
"innovate_uk": 150
},
"by_country": {
"DE": 320,
"FR": 280,
"IT": 190
},
"carbon_focused_grants": 445,
"by_carbon_category": {
"energy_efficiency": 180,
"renewable_energy": 150,
"clean_technology": 85,
"circular_economy": 30
}
}
GET /grants/sources¶
Get the list of grant data sources with counts.
Authentication: Not required
GET /grants/deadlines¶
Get grants with upcoming deadlines, sorted by soonest first.
Authentication: Not required
Query Parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
days | integer | 30 | Look-ahead window in days (1-365) |
limit | integer | 10 | Maximum results (1-50) |
GET /grants/{grant_id}¶
Get full details for a specific grant.
Authentication: Not required
Path Parameters:
| Parameter | Type | Description |
|---|---|---|
grant_id | UUID | Grant ID |
Status Codes:
| Code | Description |
|---|---|
| 200 | Grant returned |
| 404 | Grant not found |
GET /grants/{grant_id}/similar¶
Find grants similar to the specified grant based on country, NACE codes, and funding range.
Authentication: Not required
Query Parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
limit | integer | 5 | Maximum similar grants (1-20) |
Status Codes:
| Code | Description |
|---|---|
| 200 | Similar grants returned |
| 404 | Source grant not found |
GET /grants/matching/{company_id}¶
Preview grants matching a company's profile using basic rule-based criteria. For full AI-powered matching with scores, use the Matches API.
Authentication: Required
Path Parameters:
| Parameter | Type | Description |
|---|---|---|
company_id | UUID | Company ID |
Query Parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
page | integer | 1 | Page number |
page_size | integer | 20 | Items per page (1-100) |
Status Codes:
| Code | Description |
|---|---|
| 200 | Matching grants returned |
| 401 | Not authenticated |
| 404 | Company not found or wrong tenant |
Grant Response Schema¶
The full GrantResponse object includes the following fields:
Core Fields¶
| Field | Type | Description |
|---|---|---|
id | UUID | Grant ID |
title | string | Grant title |
description | string | Full description |
summary | string | Short summary |
source | string | Data source identifier |
source_url | string | Original URL |
external_id | string | ID in the source system |
Funding Information¶
| Field | Type | Description |
|---|---|---|
funding_amount_min | float | Minimum funding amount (EUR) |
funding_amount_max | float | Maximum funding amount (EUR) |
funding_rate_min | float | Minimum co-funding rate (0-1) |
funding_rate_max | float | Maximum co-funding rate (0-1) |
currency | string | Currency code (default: EUR) |
Dates¶
| Field | Type | Description |
|---|---|---|
deadline | string | Application deadline |
publication_date | string | Publication date |
start_date | string | Project start date |
end_date | string | Project end date |
Carbon Classification¶
| Field | Type | Description |
|---|---|---|
is_carbon_focused | boolean | Whether grant targets carbon reduction |
carbon_categories | string[] | Carbon category tags |
min_emission_reduction_percent | float | Required emission reduction (%) |
eligible_scopes | string[] | Eligible emission scopes |
eu_taxonomy_aligned | boolean | EU Taxonomy alignment |
green_deal_aligned | boolean | European Green Deal alignment |
fit_for_55_relevant | boolean | Fit for 55 package relevance |
supports_csrd_compliance | boolean | CSRD reporting support |
supports_sbti_alignment | boolean | Science Based Targets support |
taxonomy_objectives | string[] | EU Taxonomy environmental objectives |
Carbon Categories¶
Valid values for carbon_categories:
| Category | Description |
|---|---|
energy_efficiency | Energy efficiency improvements |
renewable_energy | Renewable energy installations |
clean_technology | Clean technology adoption |
circular_economy | Circular economy initiatives |
sustainable_transport | Sustainable transport solutions |
green_buildings | Green building projects |
carbon_capture | Carbon capture and storage |
hydrogen | Hydrogen economy projects |
industrial_decarbonization | Industrial process decarbonization |
sustainable_agriculture | Sustainable agriculture practices |
biodiversity | Biodiversity protection |
water_management | Water management improvements |
waste_reduction | Waste reduction initiatives |
climate_adaptation | Climate adaptation measures |