Europa APIeur-lex.europa.eu ↗
Access EU regulations, directives, decisions, and Official Journal publications. Search, retrieve full text, metadata, procedures, and national transpositions.
What is the Europa API?
This API exposes 8 endpoints covering the full EUR-Lex corpus of European Union legal documents — regulations, directives, decisions, and more. Use search_documents to query by keyword, year, document number, or type, or call get_document_metadata to retrieve structured fields like CELEX, ELI, authors, in-force status, and all literal properties for a known act. Full legislative text, plain-language summaries, procedure timelines, and national transposition records are also available.
curl -X GET 'https://api.parse.bot/scraper/fba146da-e9c1-44ce-a43f-e7ecc1dceebe/search_documents?page=1&sort=celex&year=2024&order=desc&doc_type=REG' \ -H 'X-API-Key: $PARSE_API_KEY'
Search for EU legal documents using keywords, year, document number, or type, against the EU Publications Office knowledge graph that backs EUR-Lex. Returns paginated results of 20 per page (page selects the page; omitting it returns page 1), each with celex, title (English), date, type, status, author and link. Text search (query parameter) performs a case-insensitive title match. When at least one of year, doc_type, number or query is given, every page holds 20 distinct documents that have an English title; with no filter at all the most recent documents across the whole corpus are ranked first and pages may hold fewer than 20 rows because documents without an English title are dropped after ranking. Sort by date or celex, ascending or descending. An empty results array means nothing matched.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number (20 results per page) |
| sort | string | Sort field |
| year | string | Filter by document year as a 4-digit year (e.g. 2024); any other form is rejected as input_format_invalid |
| order | string | Sort order |
| query | string | Search keywords to match in document titles (case-insensitive substring match). Works best combined with year or doc_type filters. |
| number | string | Filter by document number (the natural number of the act, e.g. 1689 for Regulation (EU) 2024/1689) |
| doc_type | string | Filter by document type code (letters and underscores only; REGULATION/DIRECTIVE/DECISION are accepted as aliases of REG/DIR/DEC, other resource-type codes such as REG_IMPL are forwarded as given) |
{
"type": "object",
"fields": {
"page": "integer current page number",
"results": "array of document objects with celex, title, date, type, status, author, link",
"page_size": "integer results per page (20)"
},
"sample": {
"data": {
"page": 1,
"results": [
{
"date": "2025-12-05",
"link": "https://eur-lex.europa.eu/legal-content/EN/ALL/?uri=CELEX:32024R1679R(01)",
"type": "REG",
"celex": "32024R1679R(01)",
"title": "Corrigendum to Regulation (EU) 2024/1679...",
"author": "CONSIL",
"status": ""
}
],
"page_size": 20
},
"status": "success"
}
}About the Europa API
Searching and Identifying EU Legal Acts
The search_documents endpoint accepts query (case-insensitive substring match against titles), year (four-digit, e.g. 2024), number (the natural act number, e.g. 1689), and doc_type (codes such as REGULATION, DIRECTIVE, or DECISION). Results are paginated at 20 per page via the page parameter, and each result carries a celex, title, date, type, status, author, and link. Once you have a CELEX number, get_document_metadata returns the full metadata record: eli, type, year, in_force, date_document, authors, and an all_properties object containing every available literal property from the underlying knowledge graph.
Full Text, Structure, and Summaries
get_document_text_html returns the full English XHTML body of a document (full_text_html) along with a best-effort articles array where each entry has id, title, and content. For machine-readable processing, get_document_structure delivers the same legislative content as clean nested JSON — articles broken into paragraphs, subparagraphs, and points (with label, text, and recursive sub-points), plus annexes structured into sections and paragraphs. Counts are returned as article_count and annex_count. For human-readable context, get_document_summary retrieves the official plain-language legislative summary as both summary_html and summary_text (null when no summary is published for that act).
Procedures, Official Journal, and Transposition
get_document_procedure returns a procedure_timeline array of dated events (signature, entry into force, etc.) and a related_documents array that captures the relationship type (legal basis, amendment, repeal) alongside CELEX, title, date, and type. get_official_journal_daily lists all acts published on a given date — passed as DDMMYYYY or YYYY-MM-DD, defaulting to today — returning acts with celex, title, type, and link. For directives, get_national_transposition returns one object per EU Member State sorted alphabetically, each containing country, country_code (ISO alpha-3), and a measures array of implementing acts with title and link.
The Europa API is a managed, monitored endpoint for eur-lex.europa.eu — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when eur-lex.europa.eu changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official eur-lex.europa.eu API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Monitor new EU regulations published daily by polling
get_official_journal_dailyfor fresh CELEX numbers. - Build a compliance dashboard that checks
in_forcestatus and transposition measures for all relevant directives viaget_national_transposition. - Extract article-level text from regulations using
get_document_structurefor automated legal analysis or NLP pipelines. - Track the amendment and repeal history of any EU act by reading the
related_documentsarray fromget_document_procedure. - Compare national implementation progress across Member States for a directive by iterating the
national_transpositioncountry objects. - Index EU legal documents for full-text search by combining
search_documentspagination withget_document_text_htmlbulk retrieval. - Generate readable legislative summaries alongside structured metadata by pairing
get_document_summarywithget_document_metadata.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does EUR-Lex have an official developer API?+
What does `get_document_structure` return that `get_document_text_html` does not?+
get_document_text_html returns the raw HTML body plus a best-effort flat articles array. get_document_structure returns deeply nested JSON: articles with numbered paragraphs, subparagraphs, and points (each carrying label and text), plus annexes broken into sections. It also returns article_count and annex_count as integers. Use the structured endpoint when you need programmatic access to individual provisions rather than raw markup.Does the API cover EU documents in languages other than English?+
get_document_text_html, get_document_structure, get_document_summary) retrieve English-language content, and search_documents matches against English titles. EUR-Lex publishes documents in all 24 official EU languages. You can fork this API on Parse and revise it to target a different language version of the document store.What are the pagination limits for `search_documents`?+
page parameter selects the page; omitting it returns page 1. The response includes page and page_size fields but does not return a total result count or total page count, so you must paginate until an empty results array is returned to determine the full set.