Open data · CC BY 4.0
Download data
All 650 roll-call final votes of the 10th term (since July 2024) with 465,349 individual votes — as CSV and JSON, prepared directly from the official EP Open Data Portal. Including vote corrections. Freely reusable with attribution, no share-alike obligation.
Complete package
Individual tables
All tables (ZIP)1,8 MB
CSV + JSON of all tables, README, datapackage.json and licence in one archive.
Status & updates2026-06-24 12:06 CEST
The dataset is updated automatically together with the website. During plenary weeks, only the current session week will be refreshed on weekdays (faster build); older weeks keep their respective state. Each session week therefore carries its own "as of" date (see the per-week download). Source: EP Open Data Portal.
Pick a session week above to download only its data.
votes
| Column | Meaning |
|---|---|
| vote_id | Unique identifier: date_VOT-ITM-number (e.g. 2026-06-17_992855). The date prefix ensures global uniqueness, since procedural agenda votes are numbered only per day. |
| date | Vote date (ISO 8601) |
| title | Title of the file |
| reference | Reference number (e.g. A10-0048/2026) |
| committee | Lead committee (abbreviation) |
| committee_full | Lead committee (full name) |
| rapporteur | Rapporteur (A-reports only) |
| result | Result (ADOPTED / REJECTED / …) |
| count_for | Official number of votes in favour |
| count_against | Official number of votes against |
| count_abstention | Official number of abstentions |
| topics | EuroVoc topics, separated by “; ” |
| rollcall_count | Number of roll-call votes on the file |
| session | Plenary session (label) |
| url | Link to the detail page on openrcv.eu |
member_votes
| Column | Meaning |
|---|---|
| vote_id | Reference to votes.vote_id |
| member_id | Reference to members.member_id (EP MEP ID) |
| position | Position: FOR / AGAINST / ABSTENTION / EXCUSED (officially excused) / DID_NOT_VOTE (in mandate but did not vote) |
| position_corrected | Intended vote per official correction (empty = no correction). The official result is unaffected. |
members
| Column | Meaning |
|---|---|
| member_id | EP MEP ID |
| first_name | First name |
| last_name | Last name |
| country_code | Member state (ISO-2) |
| country | Member state (German name) |
| group_code | Group code |
| group_label | Group (short label) |
| party | National party (abbreviation) |
| party_full | National party (full name) |
groups
| Column | Meaning |
|---|---|
| code | Group code |
| label | Short label |
| label_full | Full name |
countries
| Column | Meaning |
|---|---|
| code | ISO-2 code |
| name | German name |
Licence & attribution
The underlying data come from the European Parliament (Open Data Portal) and are available under CC BY 4.0. When reusing, please cite the source:
Data source: European Parliament (Open Data Portal), prepared by OpenRCV (openrcv.eu), CC BY 4.0.
There is no share-alike obligation — the data are freely reusable.
Quick start
Example with Python/pandas — analyse how a Member voted:
import pandas as pd
votes = pd.read_csv("votes.csv")
mv = pd.read_csv("member_votes.csv")
members = pd.read_csv("members.csv")
# How did MEP 124834 vote?
df = mv[mv.member_id == 124834].merge(votes, on="vote_id")
print(df[["date", "title", "position", "position_corrected"]])