Getting Started: EU Legal Data Search
From sign-up to your first search result in under 5 minutes. Query EUR-Lex, TED, IATE, CURIA and 20 more EU data sources through a single API.
1. Sign up
Create a free account
Go to pauhu.eu/keys/ and sign in with your Google or Microsoft account. No credit card required.
After authentication, your API key is displayed on the dashboard. It starts with pk_. Copy it and keep it safe — you will use it in every request.
Free tier
The free tier gives you 3 requests per day across all products. This is enough to evaluate the API and test your integration. Paid plans remove the daily limit and unlock higher throughput.
Set your API key as an environment variable so the examples below work directly:
export PAUHU_KEY="pk_your_key_here"
2. Your first search
Search EUR-Lex for the AI Act
The /v1/search/{product} endpoint returns documents ranked by relevance. Let's search EUR-Lex for the EU Artificial Intelligence Act:
curl "https://staging.pauhu.eu/v1/search/eurlex?q=AI+Act&lang=en&limit=3" \
-H "Authorization: Bearer $PAUHU_KEY"
The response is a JSON array of results. Each result contains these fields:
| Field | Type | Description |
|---|---|---|
title |
string | Document title as published by the source institution. |
celex |
string | CELEX identifier (EUR-Lex documents). A unique key like 32024R1689 for the AI Act regulation. |
score |
number | Relevance score between 0 and 1. Higher means closer semantic match to your query. |
text |
string | The matched paragraph or excerpt from the document, providing immediate context. |
source_url |
string | Direct link to the original document on the EU institution's website (e.g. eur-lex.europa.eu). |
Example response (truncated):
{
"results": [
{
"title": "Regulation (EU) 2024/1689 — Artificial Intelligence Act",
"celex": "32024R1689",
"score": 0.94,
"text": "This Regulation lays down harmonised rules on artificial intelligence...",
"source_url": "https://eur-lex.europa.eu/eli/reg/2024/1689/oj"
}
],
"total": 127,
"lang": "en",
"product": "eurlex"
}
3. Using filters
Every search endpoint supports query parameters to narrow results. Combine them to find exactly what you need.
Filter by language
Use lang to get results in a specific EU language. Pauhu supports all 24 official EU languages. For example, to search in Finnish:
curl "https://staging.pauhu.eu/v1/search/eurlex?q=tekoäly&lang=fi&limit=5" \
-H "Authorization: Bearer $PAUHU_KEY"
Language codes follow ISO 639-1: en, fi, de, fr, sv, es, it, pt, nl, pl, cs, da, el, et, hu, lt, lv, mt, sl, sk, bg, ro, hr, ga.
Limit results
Use limit to control how many results are returned (default: 10, max: 50):
curl "https://staging.pauhu.eu/v1/search/eurlex?q=GDPR&lang=en&limit=20" \
-H "Authorization: Bearer $PAUHU_KEY"
Filter by topic
Use the topic parameter to scope results to a specific subject area. Topics correspond to EuroVoc descriptors used by EU institutions to classify documents:
curl "https://staging.pauhu.eu/v1/search/eurlex?q=regulation&lang=en&topic=environment&limit=5" \
-H "Authorization: Bearer $PAUHU_KEY"
Available topics include: environment, transport, finance, agriculture, energy, health, trade, and more. See the data catalog for the full list.
4. Trying other products
The same /v1/search/{product} pattern works for all 24 data products. Replace the product name in the URL to search a different source. Here are some commonly used products:
TED — Public procurement
Search Tenders Electronic Daily for EU public procurement notices. Find contracts, awards, and procurement opportunities:
curl "https://staging.pauhu.eu/v1/search/ted?q=hospital+construction+Finland&lang=en&limit=5" \
-H "Authorization: Bearer $PAUHU_KEY"
TED results include fields like buyer_name, contract_value, and cpv_code (Common Procurement Vocabulary) in addition to the standard response fields.
IATE — EU terminology
Search the Inter-Active Terminology for Europe database with 2.4 million terms in 24 languages. Useful for translators, legal professionals, and localisation teams:
curl "https://staging.pauhu.eu/v1/search/iate?q=carbon+border+adjustment&lang=en&limit=5" \
-H "Authorization: Bearer $PAUHU_KEY"
IATE results include the term in your requested language, its reliability level, the source institution, and subject domain.
CURIA — EU case law
Search judgments, opinions, and orders from the Court of Justice of the European Union:
curl "https://staging.pauhu.eu/v1/search/curia?q=right+to+be+forgotten&lang=en&limit=5" \
-H "Authorization: Bearer $PAUHU_KEY"
CURIA results include the case number (e.g. C-131/12), the court chamber, date of judgment, and the relevant paragraph text.
For the full list of available products, see the Products page or the API reference.
5. Exporting results
Save JSON to a file
Pipe the API response directly to a file for later processing:
curl -s "https://staging.pauhu.eu/v1/search/eurlex?q=AI+Act&lang=en&limit=50" \
-H "Authorization: Bearer $PAUHU_KEY" \
-o ai-act-results.json
Convert to CSV
Use jq to transform the JSON response into CSV format for spreadsheets and data analysis tools:
curl -s "https://staging.pauhu.eu/v1/search/eurlex?q=AI+Act&lang=en&limit=50" \
-H "Authorization: Bearer $PAUHU_KEY" \
| jq -r '.results[] | [.celex, .score, .title] | @csv' \
> ai-act-results.csv
This produces a CSV file with columns for CELEX number, relevance score, and document title. Adjust the jq filter to include whichever fields you need.
6. Chat (grounded answers)
Ask a question, get a cited answer
The /v1/chat endpoint generates natural-language answers grounded in real EU documents. Responses stream via Server-Sent Events (SSE), so you see tokens as they arrive:
curl -N -X POST "https://staging.pauhu.eu/v1/chat" \
-H "Authorization: Bearer $PAUHU_KEY" \
-H "Content-Type: application/json" \
-d '{"query": "Is deploying a chatbot regulated under the AI Act?"}'
The SSE stream emits events of these types:
| Event | Description |
|---|---|
token |
A single text token of the generated answer. Concatenate these to build the full response. |
citation |
A source reference with celex, title, and source_url. Every factual claim in the answer is backed by at least one citation. |
done |
Signals the stream is complete. Contains a confidence score for the overall answer quality. |
error |
Returned if the request fails (e.g. invalid API key, rate limit exceeded). |
Example SSE output:
event: token
data: {"text": "Yes. Under the AI Act "}
event: token
data: {"text": "(Regulation 2024/1689), chatbots are classified as "}
event: citation
data: {"celex": "32024R1689", "title": "AI Act", "source_url": "https://eur-lex.europa.eu/eli/reg/2024/1689/oj"}
event: token
data: {"text": "limited-risk AI systems that must comply with transparency obligations under Article 50..."}
event: done
data: {"confidence": 0.91}
Every answer links back to its source documents, so you can verify claims directly at the official EU publication.
7. Next steps
Questions? Contact us at api@pauhu.eu.