EuropeScopeEU

API Documentation

A public, open-data REST API for European Parliament voting records. No authentication required. Built for journalists, researchers and civic developers.

Base URL

https://api.europescope.eu/v1

Authentication

v1 is public and unauthenticated. No API key needed. Keys with higher rate limits are planned for v2.

Rate limits

No hard limit in v1. For bulk data use the CSV exports rather than paginating the whole dataset. Per-key limits planned for v2.

Versioning

Versioned in the URL path (/v1/…). Breaking changes ship under a new prefix; /v1 stays stable.

Response format

JSON. List endpoints return {total, limit, offset, results}. Positions: F=For, A=Against, B=Abstain, N=Absent.

Data license

ODC-By 1.0. Source: the European Parliament. Please attribute EuropeScope EU.

Quickstart

Every endpoint is a plain HTTP GET returning JSON. For example:

# the 10 closest votes of the term
curl "https://api.europescope.eu/v1/analytics/close-votes?limit=10"

# compare two MEPs
curl "https://api.europescope.eu/v1/compare/meps?ids=197490,197491"

In Python:

import requests
r = requests.get("https://api.europescope.eu/v1/analytics/rebel-votes",
                 params={"country": "RO", "limit": 10})
for mep in r.json()["results"]:
    print(mep["full_name"], mep["rebel_vote_count"])

A fuller example is in the downloadable Python script.

Endpoints

MEPs

Members of the European Parliament, their profiles, votes and statistics.

GET/v1/members

List MEPs. Filters: country, group, search, current_term.

Try: /v1/members?country=RO&limit=5
GET/v1/members/{id}

A single MEP's profile.

Try: /v1/members/197490
GET/v1/members/{id}/votes

An MEP's individual vote positions.

Try: /v1/members/197490/votes?limit=10
GET/v1/members/{id}/statistics

Attendance, loyalty, rebel counts.

Try: /v1/members/197490/statistics
GET/v1/members/{id}/similar

MEPs who vote most similarly.

Try: /v1/members/197490/similar

Votes

Roll-call votes, breakdowns by group and country, per-vote topics.

GET/v1/votes

List votes. Filters: search, main_only, sort, importance, collapse.

Try: /v1/votes?sort=importance&importance=key&limit=5
GET/v1/votes/{id}

Full vote detail with analysis and importance.

Try: /v1/votes/192375
GET/v1/votes/{id}/members

Every MEP's position on a vote.

Try: /v1/votes/192375/members
GET/v1/votes/{id}/groups

Breakdown of a vote by political group.

Try: /v1/votes/192375/groups
GET/v1/votes/{id}/countries

Breakdown of a vote by country.

Try: /v1/votes/192375/countries
GET/v1/votes/{id}/topics

Topics assigned to a vote (with evidence).

Try: /v1/votes/192375/topics

Countries

National delegations and the comprehensive country dashboard.

GET/v1/countries

List all 27 EU countries.

Try: /v1/countries
GET/v1/countries/{code}

Country overview + delegation members.

Try: /v1/countries/RO
GET/v1/countries/{code}/dashboard

Full dashboard: topics, rankings, split votes, vs-EU, similarity.

Try: /v1/countries/RO/dashboard

Topics

Policy topics and topic-level vote listings.

GET/v1/topics

All policy topics with vote counts.

Try: /v1/topics
GET/v1/topics/{slug}

A single topic.

Try: /v1/topics/budget
GET/v1/topics/{slug}/votes

Votes tagged with a topic.

Try: /v1/topics/budget/votes?limit=10
GET/v1/topics/{slug}/countries

Country breakdown for a topic.

Try: /v1/topics/budget/countries

Analytics

Cross-cutting analytics.

GET/v1/analytics/close-votes

Main votes decided by the narrowest margins.

Try: /v1/analytics/close-votes?limit=10
GET/v1/analytics/rebel-votes

MEPs ranked by votes against their group.

Try: /v1/analytics/rebel-votes?country=RO&limit=10

Compare

MEP search and head-to-head comparison.

GET/v1/search/meps

Typeahead MEP search.

Try: /v1/search/meps?q=tudose
GET/v1/compare/meps

Compare 2–4 MEPs (similarity, topics, disagreements).

Try: /v1/compare/meps?ids=197490,197491

Methodology & audit

Every number is traceable to a formula and version.

GET/v1/methodology

Registry of all calculation methodologies.

Try: /v1/methodology
GET/v1/methodology/{slug}

A single methodology with formula + limitations.

Try: /v1/methodology/attendance
GET/v1/audit/mep/{id}/{metric}

'Why this number?' audit for an MEP metric.

Try: /v1/audit/mep/197490/attendance

Exports

CSV exports for offline analysis in Excel, R, pandas.

GET/v1/votes.csv

Download votes as CSV.

Try: /v1/votes.csv?main_only=true&limit=2000
GET/v1/members.csv

Download MEPs + statistics as CSV.

Try: /v1/members.csv?country=RO

System

Health checks and data-quality dashboard.

GET/v1/health

Liveness probe + uptime.

Try: /v1/health
GET/v1/data-health

Operational + data-quality metrics.

Try: /v1/data-health
GET/v1/stats/summary

Platform-wide totals.

Try: /v1/stats/summary

Changelog

v0.1.0-mvp
2026-05

Initial public API: MEPs, votes, countries, topics, analytics, compare, methodology/audit, CSV exports.

Contact

Questions, bug reports, or research collaboration: data@openparliament.eu. Source code and issues: GitHub ↗.