Status
The dataset is experimental and the format of the tables may change in the future.
License
The HowTheyVote.eu data is made available under an open license. If you use data published by HowTheyVote.eu please make sure you’ve read the license terms and provide proper attribution.
Tables
members.csv
Each row represents a Member of the European Parliament (MEP).
| Column | Type | Description |
|---|---|---|
id |
integer | Member ID as used by the MEP Directory. |
first_name |
string | First name |
last_name |
string | Last name |
country_code |
string | 3-letter ISO-3166-1 code |
date_of_birth |
date (optional) | Date of birth |
email |
string (optional) | Email address |
facebook |
string (optional) | Facebook profile URL |
twitter |
string (optional) | Twitter account URL |
countries.csv
Each row represents an EU member state.
| Column | Type | Description |
|---|---|---|
code |
string | 3-letter ISO-3166-1 code |
iso_alpha_2 |
string | 2-letter ISO-3166-1 code |
label |
string | Label as published by the Publications Office of the European Union |
groups.csv
Each row represents a political group in the European Parliament.
| Column | Type | Description |
|---|---|---|
code |
string | Unique identifier for the political group |
official_label |
string | Official label as published by the Publications Office of the European Union |
label |
string | Label based on the official label. Prefixes and suffixes such as "Group" are removed for clarity. |
short_label |
string | Short label or abbreviation |
group_memberships.csv
Each row represents a membership of an MEP in a political group.
MEPs can change their political group during the term, i.e., each MEP is part of one or more political groups over the course of a term. Non-attached MEPs are a member of the NI group.
| Column | Type | Description |
|---|---|---|
member_id |
integer | Member ID |
group_code |
string | Group code |
term |
integer | Parliamentary term |
start_date |
date | Start date |
end_date |
date (optional) | End date. If empty, the MEP the membership is still active. |
votes.csv
Each row represents a roll-call vote in plenary.
| Column | Type | Description |
|---|---|---|
id |
integer | Vote ID |
timestamp |
dateTime | Date and time of the vote |
display_title |
string (optional) | Title that can be used to refer to the vote. In most cases, this is the title published in the roll-call vote results. If the title in the roll-call vote results is empty, this falls back to the procedure title. |
reference |
string (optional) | Reference to a plenary document such as a report or a resolution |
description |
string (optional) | Description of the vote as published in the roll-call vote results |
amendment_subject |
string (optional) | Subject of the specific amendment if applicable. This field is only available for votes starting in 2024 |
amendment_number |
string (optional) | Number of the specific amendment if applicable. This field is only available for votes starting in 2024 |
is_main |
boolean | Whether this vote is a main vote. We classify certain votes as main votes based on the text description in the voting records published by Parliament. For example, if Parliament has voted on amendments, only the vote on the text as a whole is classified as a main vote. Certain votes such as votes on the agenda are not classified as main votes. This is not an official classification by the European Parliament and there may be false negatives. |
procedure_reference |
string (optional) | Procedure reference as listed in the Legislative Observatory |
procedure_title |
string (optional) | Title of the legislative procedure as listed in the Legislative Observatory |
procedure_type |
string (optional) | Procedure type as listed in the Legislative Observatory. This is a 3-letter code such as COD, RSP, or BUD. |
procedure_stage |
string (optional) | Stage of the procedure in which the vote took place. One of OLP_FIRST_READING, OLP_SECOND_READING, OLP_THIRD_READING.This field is only available for votes starting in 2024 and if the vote is part of an Ordinary Legislative Procedure. |
count_for |
integer | Number of MEPs who voted in favor |
count_against |
integer | Number of MEPs who voted against |
count_abstention |
integer | Number of MEPs who abstained |
count_did_not_vote |
integer | Number of MEPs who didn’t participate in the vote |
result |
string (optional) | Vote result. One of ADOPTED, REJECTED, LAPSED. This field is only available for votes starting in 2024. |
texts_adopted_reference |
string (optional) | "EP reference number of the text as it was adopted. This includes all amendments that were adopted to an original text. |
member_votes.csv
Each row represents how an MEP voted in a roll-call vote.
| Column | Type | Description |
|---|---|---|
vote_id |
integer | Vote ID |
member_id |
integer | Member ID |
position |
string | Vote position. One of FOR, AGAINST, ABSTENTION if the MEP participated in the vote or DID_NOT_VOTE if the MEP wasn’t present for the vote. We currently do not differentiate between MEPs who did not vote with or without an excuse. |
country_code |
string | Country code |
group_code |
string (optional) | Group code. This references the political group that the MEP was part of on the day of the vote. This is not necessarily the MEP’s current political group. |
eurovoc_concepts.csv
Each row represents a concept from the EuroVoc thesaurus that is referenced by at least one vote.
| Column | Type | Description |
|---|---|---|
id |
string | EuroVoc concept ID |
label |
string | Label |
eurovoc_concept_votes.csv
Each row represents an EuroVoc concept related to a vote. This information is sourced from EUR-Lex isn’t available for all votes. For example, EUR-Lex doesn’t contain information about motions for resolutions.
| Column | Type | Description |
|---|---|---|
vote_id |
integer | Vote ID |
eurovoc_concept_id |
string | EuroVoc concept ID |
oeil_subjects.csv
Each row represents a subject as used by the Legislative Observatory that is referenced by at least one vote.
| Column | Type | Description |
|---|---|---|
code |
string | Code |
label |
string | Label |
oeil_subject_votes.csv
Each row represents a subject related to a vote.
| Column | Type | Description |
|---|---|---|
vote_id |
integer | Vote ID |
oeil_subject_code |
string | Subject code |
geo_areas.csv
Each row represents a country, territory, or other geopolitical entity that is referenced by at least one vote. The information is based on the reference dataset published by the EU Publications Office.
| Column | Type | Description |
|---|---|---|
code |
string | ISO 3166-1 alpha-3 code if available, otherwise a custom 3-letter code |
label |
string | Label |
iso_alpha_2 |
string (optional) | ISO 3166-1 alpha-2 code if available |
geo_area_votes.csv
Country, territory, or other geopolitical entity related to a vote.
| Column | Type | Description |
|---|---|---|
vote_id |
integer | Vote ID |
geo_area_code |
string | Geographic area code |
committees.csv
Each row represents a committee of the European Parliament.
| Column | Type | Description |
|---|---|---|
code |
string | Unique identifier of the committee |
label |
string | Label |
abbreviation |
string | Abbreviation |
responsible_committee_votes.csv
Committee responsible for the legislative procedure a vote is part of.
| Column | Type | Description |
|---|---|---|
vote_id |
integer | Vote ID |
committee_code |
string | Committee code |
amendment_authors_votes.csv
Authors of the vote if vote is amendment. Multiple authors result in multiple rows. This information is only available for votes starting in 2024.
| Column | Type | Description |
|---|---|---|
vote_id |
integer | Vote ID |
author_type |
string | Either GROUP, COMMITTEE, MEMBERS, ORALLY, ORIGINAL_TEXT, or RAPPORTEUR` |
group_code |
string | Group code, if applicable. |
committee_code |
string | Committee code, if applicable. |