MEP of the week

Open data & the edit log

The dataset

102,583 distinct declared meetings across the 2016-2026 record for 720 current MEPs, updated daily and frozen weekly - free to reuse under CC BY 4.0 with attribution to “MEP of the week”. (As of 8 November 2026.)

Downloads

  • insights.json - the full site dataset: per-MEP profiles, organisations, parties, sectors, trends and the recent publication weeks behind the weekly editions (1.5 MB of JSON, regenerated daily; the link saves the file rather than opening it as text). Its weekly_leaders field is not the MEP of the week: it holds the picks of the retired meeting-week formula, kept for reference, and for weeks since the site launched (2026-W30) it can name a different member from the edition, or a member for a week that has no edition. The recent editions are the pub_weeks records that name a winner.
  • Full row-level CSV exports contain 127,688 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.

Counterpart types in the files

The files name each kind of counterpart - company, business group, NGO, trade union and so on - by a fixed key: the category column of the row-level CSV, the categories counts and each name's bkt in insights.json. The keys stay as they are so that scripts written for earlier files keep working. The pages show the same types under these names:

Key in the filesShown on the pages asFor one organisation
Companies (private)CompaniesCompany
Business groupsBusiness groupsBusiness group
NGOs & non-profitsNGOs & non-profitsNGO or non-profit
Trade unionsTrade unionsTrade union
Think tanks & academiaThink tanks & academiaThink tank or academic body
Public authoritiesPublic authoritiesPublic authority
ReligiousReligious bodiesReligious body
Political partiesPolitical partiesPolitical party
Individuals & personal capacityPeople in a personal capacityPerson in a personal capacity
Diplomatic & governmentDiplomatic & governmentDiplomatic & government
Other / unclassifiedUnclassifiedUnclassified

An organisation's own category field (in top_orgs, for example) holds the name for one organisation, or "Other" for a body the Register files under its own catch-all, "Other organisations, public or mixed entities". Entries under Other / unclassified are left out of every share of counterpart types.

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.json951,048f687657ccdbca86a6aa626b4bc5c84c7e29621a561e21caa1fa8e7e588938e47
data/raw/tr_match.json1,578,0353e3a6c53aff97bb45d894bb9c7e987c5abd296bb0c538f17e3cbd7a8f30b584f
data/raw/ep_official_meetings.json.gz2,603,1738c6d195ac2f5a726921426833f44f6decc4b87fe48432ab7ce20b8bd92c45187
data/raw/ep_full_read.json88,39948f74f0183b08966b149c275d1adea8d6c8325e9a018da9897ff0a75228d5527
data/raw/tr_index.json2,643,065cbf37745d88c092e1dead0c873b9a60228ff63bebf8e681d0533fcd49dbd82f2
data/raw/tr_full.xml117,739,69973c96b023b5d586d186126dada2dd39fb3a84418591d67603ce17110d26b97b6
data/enrichment/*.csv (4,337 files)180,349,2025bd52c3a8f37fbf9b78c532ecb1e579f81710d75469ff3a41ba45f5b0f2f3de5

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 archived6,412115 sitting days, 17 July 2024 to 22 October 2026
Identified as the final vote on a text6069.5% of all roll-calls, across 497 documents
Vote labels our classifier does not recognise460.7% - counted as not-a-final-vote rather than guessed at
Members with a membership record747the 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 17 June 2016 to 6 November 2026.

CheckResult
✓ group seats sum to member total720 of 720
✓ group engagements sum to all rows129924 of 129924
✓ register-linked share within 0-100%49.8%
✓ no future-dated meetings0 rows
✓ rows attributed to a current member98.3% (2236 former-term)
✓ no duplicate meeting IDs0 dupes
✓ every counterpart entry has a type0 without one; 7,588 of the current members' entries typed unclassified
✓ 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 link50%
No declared Register link50%

Separately, we resolved 26.1% 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

70,810 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 18,483 of the unlinked entries (26.1%), lifting the share of counterpart entries with an identified counterpart to 59.0%.

MethodWhat it meansRows
declared-elsewhereSame name already linked in another declaration6,845
register-acronymA registrant's acronym, unique in the register4,201
register-nameExact match on a registrant's name2,786
register-containThe text contains exactly one registrant's name1,560
register-brackets“Long name (acronym)” - either side matches uniquely1,238
embedded-idA register ID typed into the free text1,001
curated-aliasMatched by hand, for a name the automatic rules must refuse840
register-pair“Acronym, full name” - both halves name the same registrant12

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.

50%
eligible entries linked at source
diplomacy excluded
59%
counterpart entries identified
declared link + our matching
94%
counterpart entries given a type
the rest are unclassified
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 this site's record of declarations and compare it with the previous freeze - the table says what joined it and what left it, and why.

Frozen onSnapshotDeclaration recordsChange vs previous
2026-07-11partial baseline73,400*first freeze
2026-07-20weekly114,481backfill to full coverage
2026-07-27weekly115,159+678 new (collection paused)
2026-08-03weekly115,161+2 already held (collection paused)
2026-08-10weekly115,161collection paused
2026-08-17weekly115,161collection paused
2026-08-24weekly115,161collection paused
2026-08-31weekly115,161collection paused
2026-09-07weekly116,338+1,177 new
2026-09-14weekly116,773+435 new
2026-09-28weekly117,823+1,050 new
2026-10-05weekly118,433+610 new
2026-10-12weekly126,400+524 new · +3,307 found late · +4,385 collected earlier · +2 edited versions · −251 replaced versions
2026-10-19weekly127,348+861 new · +85 found late · +2 collected before the last freeze
2026-10-26weekly128,189+776 new · +65 found late
2026-11-02latest129,124+770 new · +165 found late · +1 edited version · −1 replaced version

The 6 freezes from 27 July to 31 August 2026 fell while this site's collection was stopped (no declarations were collected from 24 July to 5 September 2026: the European Parliament's website was answering automated requests with an empty page, and this site was slow to notice and work round it) and are marked “collection paused”: the record they froze was not being updated, so they cannot show whether anything changed at the Parliament in that time. The 2 records added on 3 August 2026 were not newly collected. They were already held, but each had shared a record key with another declaration by the same member, on the same day, to the same counterpart, with a title beginning with the same 40 characters, so earlier freezes counted each pair once. A fix on 27 July 2026 gave every declaration its own key, and this was the first freeze to count both halves of each pair. The 8,218 records added on 12 October 2026 include 4,385 that this site had collected earlier but did not show until 7 October 2026 - 1,597 of meetings in April 2025, 1,125 in March, 611 in February and 377 in January, and 675 of earlier meetings, back to March 2023. Until then, for meetings on or before 29 April 2025 this site showed only the record of an older bulk feed, which lacks them (see the corrections log). “Found late” means declarations this site collected at an unknown time after they were published: found further down a member's list than its newest meetings, or for a member whose list it had never read in full (see the methodology). “Replaced versions” are declarations as this site first read them that the Parliament has since edited - a counterpart renamed, a title reworded. Since 8 October 2026 this site leaves out the version replaced, which until then counted beside the edited one, so that each declaration counts once (see the corrections log); “edited versions” are the versions the Parliament lists now that the previous freeze did not hold. Until 7 October 2026 this site read such an edit as a new declaration, so the records counted as new in the freezes before then include edited versions. “Collected before the last freeze” means declarations this site had collected before the previous freeze that joined the record since. The freeze of 21 September 2026 was taken but never saved (while this site's collection was stopped, 20-23 September 2026: this site's own daily update failed before saving what it read). The next freeze is compared with the last one saved, so a change made in between is still caught.

No declaration has disappeared from this site's record between complete weekly snapshots. What left it were 252 declaration records of replaced versions: the Parliament renamed a counterpart or reworded a title after publishing, and since 8 October 2026 this site counts each such declaration once, as listed now (see the corrections log). One honest limit: a declaration the Parliament deletes after this site collected it stays in this site's record and is still counted, so 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.