Example Eu Regulatory Site APIexample-eu-regulatory-site.com ↗
Access structured GDPR fine and penalty data from enforcementtracker.com. Search by company, filter by country or fine amount, and retrieve enforcement statistics via 7 endpoints.
What is the Example Eu Regulatory Site API?
This API exposes 7 endpoints covering GDPR enforcement actions tracked at enforcementtracker.com, returning structured records with fields like fine_amount_eur, authority, violation_type, summary, and source_link. The get_penalties_list endpoint delivers paginated access to the full database, while search_penalties and filter_penalties let you narrow records by keyword, country, sector, date range, or fine amount. A dedicated get_statistics_summary endpoint aggregates totals across all fines and surfaces the top 10 countries and sectors by enforcement amount.
curl -X GET 'https://api.parse.bot/scraper/76190776-fa32-4339-960a-09fdaddb89ba/get_penalties_list?limit=5&offset=0' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace example-eu-regulatory-site-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
from parse_apis.gdpr_enforcement_tracker_api import EnforcementTracker, Penalty, Summary, Category, Country, PenaltyNotFound
tracker = EnforcementTracker()
# Get aggregate statistics
stats = tracker.summaries.get()
print(stats.total_count, stats.total_fine_amount_eur)
# Search for Google penalties
for penalty in tracker.penalties.search(query="Google"):
print(penalty.id, penalty.company, penalty.fine_amount_eur, penalty.country)
# Get a specific penalty by ETid
detail = tracker.penalties.get(id="ETid-23")
print(detail.company, detail.date, detail.authority, detail.violation_type)
# Filter penalties by country using the Country enum
for penalty in tracker.penalties.filter(country=Country.FRANCE, min_fine=1000000):
print(penalty.id, penalty.company, penalty.fine_amount_eur)
# Get recent penalties
for penalty in tracker.penalties.recent():
print(penalty.id, penalty.date, penalty.company, penalty.country)
# Get violation categories
cats = tracker.categories.get()
for cat in cats.categories:
print(cat)
Retrieve a paginated list of all penalty/fine records from the GDPR enforcement tracker database. Records are ordered by their ETid (ascending). Use offset and limit for pagination.
| Param | Type | Description |
|---|---|---|
| limit | integer | Max results per page. |
| offset | integer | Number of records to skip for pagination. |
{
"type": "object",
"fields": {
"limit": "integer max results requested",
"total": "integer total number of records in database",
"offset": "integer number of records skipped",
"penalties": "array of penalty record objects with id, country, authority, date, fine_amount_eur, fine_amount_str, company, sector, quoted_articles, violation_type, summary, source_link, direct_url"
},
"sample": {
"data": {
"limit": 5,
"total": 3194,
"offset": 0,
"penalties": [
{
"id": "ETid-1",
"date": "2018-12-09",
"sector": "Industry and Commerce",
"company": "Betting place",
"country": "Austria",
"summary": "Insufficient fulfilment of information obligations",
"authority": "Austrian Data Protection Authority (dsb)",
"direct_url": "https://www.enforcementtracker.com/ETid-1",
"source_link": "https://www.dsb.gv.at/documents/22758/116802/Straferkenntnis+DSB-D550.038+0003-DSB+2018.pdf/fb0bb313-8651-44ac-a713-c286d83e3f19",
"violation_type": "Insufficient fulfilment of information obligations",
"fine_amount_eur": 4800,
"fine_amount_str": "4,800",
"quoted_articles": "Art. 13 GDPR"
}
]
},
"status": "success"
}
}About the Example Eu Regulatory Site API
Penalty Records and Pagination
The get_penalties_list endpoint returns the complete enforcement database, ordered by ETid, with total, offset, and limit fields for cursor-style pagination. Each record in the penalties array includes id, country, authority, date, fine_amount_eur, fine_amount_str, company, sector, and quoted_artic. For a full record — including summary, source_link, direct_url, and violation_type — call get_penalty_detail with the record's ETid string (e.g. ETid-23).
Search and Filtering
search_penalties accepts a query string and matches it across all fields: company name, authority, sector, country, violation type, and quoted articles. It returns the same paginated structure as the list endpoint. filter_penalties gives column-level control: pass country, authority, sector, min_fine, max_fine, end_date, or any combination. Fine-range filters automatically exclude records where the amount is unknown. Omitting all filter parameters returns all records, making it a filtered alternative to get_penalties_list.
Taxonomy and Statistics
get_violation_categories returns a sorted array of every distinct category string used in the database — useful for building filter UIs or validating inputs before calling filter_penalties. get_statistics_summary returns total_count, count_with_fine, total_fine_amount_eur, top_countries_by_amount, and top_sectors_by_amount (both top-10 maps of name to EUR total). get_recent_penalties returns the most recently dated records, sorted descending by enforcement date, and only includes records with a parseable date field.
Coverage Scope
Records span EU and EEA enforcement authorities. The authority field names the specific data protection authority (DPA) that issued the fine, and country reflects where the penalty was issued — not necessarily where the fined company is headquartered. Fine amounts are normalized to EUR in fine_amount_eur; the original string representation is preserved in fine_amount_str. Records where the fine amount is undisclosed remain in the database but are excluded from range filters and statistical aggregations.
The Example Eu Regulatory Site API is a managed, monitored endpoint for example-eu-regulatory-site.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when example-eu-regulatory-site.com 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 example-eu-regulatory-site.com 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?+
- Build a GDPR compliance dashboard showing fine trends by country using top_countries_by_amount from get_statistics_summary.
- Alert legal teams when a competitor or partner appears in new enforcement actions by polling get_recent_penalties.
- Benchmark sector exposure by querying filter_penalties with a specific sector and aggregating fine_amount_eur values.
- Populate a searchable internal database of enforcement actions using search_penalties with company or violation keyword.
- Generate violation category breakdowns for a regulatory risk report using get_violation_categories combined with filter_penalties.
- Retrieve primary source documents for specific fines via the source_link field returned by get_penalty_detail.
- Identify the most active enforcement authorities by filtering on authority and counting records per DPA.
| 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 | 100 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.