MEP of the week

Open data & the edit log

The dataset

91,711 distinct declared meetings across the 2019-2026 record for 719 current MEPs, updated daily and frozen weekly - free to reuse under CC BY 4.0 with attribution to “MEP of the week”. (As of 14 September 2026.)

Downloads

  • insights.json - the full site dataset: per-MEP profiles, organisations, parties, sectors, trends and weekly leaders (~1 MB JSON, regenerated daily).
  • Full row-level CSV exports contain 114,963 counterpart entries: one counterpart entry per row, so a meeting with multiple declared counterparts appears on multiple rows. The weekly snapshot diffs are also produced by the pipeline - email us and we will send the latest cut, or any per-country / per-group / per-organisation slice.

Licence & citation

Underlying records: © European Union (EP declarations, Transparency Register), reusable under the EU institutions' reuse policies. LobbyFacts-derived fields: © Corporate Europe Observatory / LobbyControl. Our processing and derived dataset: CC BY 4.0.

Cite as: MEP of the week, “[page title]”, mepoftheweek.com, accessed [date] - and link the page you used.

Method

Sources, matching and counting rules are documented in the methodology; the audit that each daily build must pass is described there too.

Exact input fingerprint

Each build records the byte size and SHA-256 digest of every primary input. The LobbyFacts enrichment cache is represented by one deterministic digest over its sorted files. This identifies the exact source cut behind the published totals even when an upstream file later changes.

InputBytesSHA-256
data/raw/mepmeetings.json31,282,2357c46bcc4ab230e5a886029f8a8e6644a02c175c15e380d1e326fc5415be3341c
data/raw/meps.json916,010def64f4a5bb8092d59ab9cd7ddb526e09f9473eb50f45ec377098899ccbe6dc2
data/raw/tr_match.json1,578,0353e3a6c53aff97bb45d894bb9c7e987c5abd296bb0c538f17e3cbd7a8f30b584f
data/raw/ep_official_meetings.json.gz2,323,610024b9110c5be2913071a40c32d64f9b4186cbb61b2b74cca11c52147689b3e01
data/raw/tr_index.json2,614,350128764fe9475c832f131fb029940f90ca21fb5c76fbe87fbe910bb1bc2d4d400
data/raw/tr_full.xml115,886,401298c4d32eac1a07443656e7a618077580def8693d8b0d1c6ae8a826f70dff39d
data/enrichment/*.csv (3,660 files)163,723,487255c1b724140c4eabe91b48b562d3c29ed637d075fd29515c88ab64da1d6fe0a

Roll-call vote coverage

Which roll-call counts as the final vote on a text is our own classification, derived from the Parliament's published label for each vote. It is an explicit list of label endings rather than a guess, so the share it cannot place is knowable - and it is published here rather than assumed away. How we count votes.

MeasureCountDetail
Roll-call votes held and archived5,568103 sitting days, 17 July 2024 to 9 July 2026
Identified as the final vote on a text5379.6% of all roll-calls, across 421 documents
Vote labels our classifier does not recognise370.7% - counted as not-a-final-vote rather than guessed at
Members with a membership record743the term roster including members who have since left

Checks & balances

Automated integrity checks run on every build (8 of 8 passing), plus a classifier regression gate on a manually reviewed reference set: it is re-tested on every build and below 97% the build refuses to ship. This build reproduced 263 of 263 reference labels; this is not a population-wide accuracy estimate. Data spans 02-07-2019 to 11-09-2026.

CheckResult
✓ group seats sum to member total719 of 719
✓ group engagements sum to all rows116773 of 116773
✓ register-linked share within 0-100%48.6%
✓ no future-dated meetings0 rows
✓ rows attributed to a current member98.4% (1810 former-term)
✓ no duplicate meeting IDs0 dupes
✓ every counterpart categorised0 unmapped
✓ machine matches never contradict declared links0 contradictions

Which entries carry a Register link?

Share of eligible declared counterpart entries that carry a Transparency Register link in the MEP declaration. Diplomatic and institutional counterpart entries, which need no register entry, are excluded.

Carries a declared Register link49%
No declared Register link51%

Separately, we resolved 27.0% of unlinked entries to a Register identity from the name. Those inferred identities do not change the declared-link rate above.

How we identify who is in the room

65,066 counterpart entries carry no declared Register link - the counterpart is free text, typed by hand. We match those names against the full Transparency Register, deterministically and only when exactly one registrant fits; ambiguity means no match. What members declared is never altered - our matches are a separate layer, and every row in the CSV export carries its match method. So far this identifies 17,565 of the unlinked entries (27.0%), lifting the share of counterpart entries with an identified counterpart to 58.7%.

MethodWhat it meansRows
register-acronymA registrant's acronym, unique in the register5,271
declared-elsewhereSame name already linked in another declaration5,251
register-nameExact match on a registrant's name2,919
register-containThe text contains exactly one registrant's name1,601
register-brackets“Long name (acronym)” - either side matches uniquely1,389
embedded-idA register ID typed into the free text1,003
curated-aliasHand-curated alias (documented in the repo file)131

Names neither linked nor matched are categorised by conservative name rules, and the remaining tail by a reviewed, versioned curation file. Every label is marked with its source in the export.

49%
eligible entries linked at source
diplomatic excluded
59%
counterpart entries identified
declared link + our matching
96%
counterpart entries categorised
98%
entries attributed to a sitting MEP

The edit log - weekly snapshots

The Parliament keeps no history: a declaration can be edited or deleted at any time, silently. So each Monday we freeze the full declaration record and compare it with the previous freeze - that is how a retroactive change becomes visible.

Frozen onSnapshotDeclaration recordsChange vs previous
2026-07-11partial baseline73,400*first freeze
2026-07-20weekly114,481- backfill to full coverage
2026-07-27weekly115,159+678 new
2026-08-03weekly115,161+2 new
2026-08-10weekly115,161no change
2026-08-17weekly115,161no change
2026-08-24weekly115,161no change
2026-08-31weekly115,161no change
2026-09-07weekly116,338+1,177 new
2026-09-14current116,773+435 new

Nothing in this site's collected record has changed between complete weekly snapshots. New declarations arrive in bursts that follow the Parliament's calendar and this site's own collection. One honest limit: our record of official declarations is append-only, so a declaration deleted upstream after we collected it would not show here as a removal.

A declaration record is one line - one MEP, one counterpart entry and one declared meeting - so these totals track counterpart-entry rows and run higher than the site's count of distinct meetings. Rows marked * were frozen before the dataset was fully ingested. The weekly diff files ship with the dataset - ask for the archive.

Get the weekly email if you want the edit log and the week's pick in your inbox.