eur-lex.europa.eu APIeur-lex.europa.eu ↗
Access EU regulations, directives, decisions, full text, metadata, procedure history, and Official Journal publications via the EUR-Lex API.
curl -X GET 'https://api.parse.bot/scraper/fba146da-e9c1-44ce-a43f-e7ecc1dceebe/search_documents?year=2016&query=data+protection&doc_type=REG' \ -H 'X-API-Key: $PARSE_API_KEY'
Search for EU legal documents using keywords, year, document number, or type. Returns paginated results from the Cellar SPARQL endpoint.
| Param | Type | Description |
|---|---|---|
| page | string | Page number |
| sort | string | Sort field: date or celex |
| year | string | Filter by document year (e.g. 2016) |
| order | string | Sort order: desc or asc |
| query | string | Search keywords to match in document titles |
| number | string | Filter by document number |
| doc_type | string | Filter by document type: REG, DIR, DEC |
{
"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": "2016-04-27",
"link": "https://eur-lex.europa.eu/legal-content/EN/ALL/?uri=CELEX:32016R0679",
"type": "REG",
"celex": "32016R0679",
"title": "Regulation (EU) 2016/679 of the European Parliament and of the Council...",
"author": "CONSIL",
"status": "Not in force"
}
],
"page_size": 20
},
"status": "success"
}
}About the eur-lex.europa.eu API
This API exposes 7 endpoints covering the full EUR-Lex corpus of EU legal documents, from metadata retrieval to full HTML text and national transposition measures. Use search_documents to filter regulations, directives, and decisions by keyword, year, CELEX number, or document type, and use get_document_metadata to pull structured fields including ELI URI, in-force status, authors, and all literal properties stored in the Cellar linked-data repository.
Document Search and Metadata
The search_documents endpoint accepts keyword queries, a year filter, a number filter, and a doc_type parameter (REG, DIR, or DEC). Results are paginated at 20 items per page and can be sorted by date or celex in ascending or descending order. Each result object carries the document's celex identifier, title, date, type, status, author, and a direct link. For a specific document, get_document_metadata returns the full property set: eli (European Legislation Identifier URI), in_force flag, date_document, date_entry_into_force, authors array, and an all_properties object with every literal property available for that work.
Full Text, Summaries, and Official Journal
get_document_text_html returns the complete HTML body of a document in full_text_html alongside an articles array where each entry has id, title, and content. Article extraction works best for OJ-published legislative acts; non-legislative documents may return full text without structured article segmentation. get_document_summary delivers the official plain-language summary in both summary_html and summary_text fields — both return null when no summary exists. get_official_journal_daily accepts a date in DDMMYYYY or YYYY-MM-DD format (defaults to today) and returns the full list of acts published that day, each with celex, title, type, and link.
Procedure History and National Transposition
get_document_procedure reconstructs the legislative lifecycle for a document: the procedure_timeline array lists dated events (signature, entry into force, etc.) while related_documents captures legal basis, amending acts, and repeals with their relationship type. For directives specifically, get_national_transposition returns an array of country objects, each with a measures array listing the national implementing measures with title and link to the source text.
- Monitor newly published EU regulations and directives by querying
get_official_journal_dailyfor each trading day. - Build a compliance tracker that flags documents where
in_forceis 1 anddate_entry_into_forcefalls within a target window. - Extract structured article text from GDPR or other regulations using
get_document_text_htmlto power legal search tools. - Map directive transposition status across EU member states using
get_national_transpositionfor a given directive CELEX number. - Construct a legislative history graph by walking
related_documentsreturned byget_document_procedureacross amending and repealing acts. - Generate plain-language policy briefings using
summary_textfromget_document_summaryfor a curated set of CELEX identifiers. - Filter all decisions from a specific year by combining
doc_type=DECand ayearparameter insearch_documents.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 250 req/min |
One credit = one API call regardless of which marketplace API you call. 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_metadata` return beyond the document title?+
eli URI, the type code, the in_force flag (1 or 0), date_document, date_entry_into_force (which may be a single date or an array), an authors array of corporate body codes, and an all_properties object containing every literal property recorded for that work in the Cellar repository.Does article extraction work for all document types?+
get_document_text_html works best for OJ-published legislative documents such as regulations and directives. Non-legislative documents return content in full_text_html but the articles array may be empty. If article-level parsing for non-legislative document types is important, you can fork the API on Parse and revise the extraction logic for those cases.Can I search documents in languages other than English?+
language parameter targeting other language versions.Is there a way to retrieve the consolidated (amended) version of a regulation rather than the original?+
get_document_procedure, but consolidated text retrieval is not a dedicated endpoint. EUR-Lex does publish consolidated versions under separate CELEX identifiers. You can fork the API on Parse and add an endpoint that targets consolidated CELEX numbers directly.