# European Parliament API
> The European Parliament as an API, powered by the official European Parliament Open Data portal (data.europarl.europa.eu). Track the EU's directly-elected legislature: list the Members of the European Parliament (MEPs) for any parliamentary term — term 10 is the current 2024-2029 Parliament — with pagination; read an individual MEP's profile including their full name, country of representation, gender, contact email, official photo and place of birth, together with their committee, political-group and delegation memberships split into current and past, each with the role held (member, chair, vice-chair, …) and start/end dates; and browse the Parliament's corporate bodies — its standing and special committees (such as ECON, ENVI, LIBE), political groups and inter-parliamentary delegations — with their id, acronym, label and type. The organization id that appears in an MEP's memberships matches a corporate body, so you can resolve exactly which committee or group a member sits on. Ideal for civic-tech and transparency tools, political research and journalism, lobbying and public-affairs monitoring, and EU-policy analytics. MEP ids come from the MEPs endpoint. Data from the European Parliament (CC-BY 4.0).

## Authentication
All requests require your oanor API key in the `x-oanor-key` header. Get one at https://www.oanor.com/developer/keys.

```bash
curl -H "x-oanor-key: oanor_live_…" "https://api.oanor.com/europarl-api/..."
```

## Pricing
- **Free** (Free) — 555 calls/Mo, 2 req/s
- **Starter** ($7/Mo) — 20,900 calls/Mo, 6 req/s
- **Pro** ($21/Mo) — 92,500 calls/Mo, 15 req/s
- **Mega** ($58/Mo) — 402,000 calls/Mo, 40 req/s

## Endpoints

### Parliament

#### `GET /v1/bodies` — Committees, groups & delegations

**Parameters:**
- `q` (query, optional, string) — Filter by acronym/label, e.g. econ

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/europarl-api/v1/bodies"
```

**Response:**
```json
{
    "data": {
        "count": 30,
        "bodies": [
            {
                "id": "1",
                "code": "1",
                "type": "COMMITTEE_PARLIAMENTARY_STANDING",
                "label": "ECON"
            },
            {
                "id": "10",
                "code": "10",
                "type": "COMMITTEE_PARLIAMENTARY_STANDING",
                "label": "REGI"
            },
            {
                "id": "100",
                "code": "100",
                "type": "COMMITTEE_PARLIAMENTARY_STANDING",
                "label": "REGI"
            },
            {
                "id": "1000",
                "code": "1000",
                "type": "DELEGATION_PARLIAMENTARY",
                "label": "D06"
            },
            {
                "id": "1001",
                "code": "1001",
                "type": "DELEGATION_PARLIAMENTARY",
                "label": "D07"
            },
            {
                "id": "1002",
                "code": "1002",
                "type": "DELEGATION_PARLIAMENTARY",
                "label": "D08"
            },
            {
                "id": "1003",
                "code": "1003",
                "type": "DELEGATION_PARLIAMENTARY",
                "label": "D09"
            },
            {
                "id": "1004",
                "code": "1004",
                "type": "DELEGATION_PARLIAMENTARY",
                "label": "D-US"
            },
            {
                "id":
…(truncated, see openapi.json for full schema)
```

#### `GET /v1/mep` — An MEP profile & memberships

**Parameters:**
- `id` (query, required, string) — MEP id, e.g. 1294 Example: `1294`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/europarl-api/v1/mep?id=1294"
```

**Response:**
```json
{
    "data": {
        "mep": {
            "id": "1294",
            "name": "Elio DI RUPO",
            "email": "mailto:elio.dirupo@europarl.europa.eu",
            "image": "https://www.europarl.europa.eu/mepphoto/1294.jpg",
            "gender": "MALE",
            "country": "BEL",
            "given_name": "Elio",
            "family_name": "Di Rupo",
            "place_of_birth": "Morlanwelz",
            "membership_count": 28,
            "past_memberships": [
                {
                    "end": "1991-06-10",
                    "role": "MEMBER",
                    "start": "1989-07-26",
                    "current": false,
                    "organization": "214",
                    "classification": "DELEGATION_PARLIAMENTARY"
                },
                {
                    "end": "1991-12-16",
                    "role": "MEMBER",
                    "start": "1989-07-25",
                    "current": false,
                    "organization": "485",
                    "classification": "EU_POLITICAL_GROUP"
                },
                {
                    "end": "1991-12-16",
                    "role": "MEMBER",
                    "start": "1991-06-10",
                    "current": false,
                    "organization": "213",
                    "classification": "DELEGATION_PARLIAMENTARY"
                },
                {
                    "end": "1991-12-16",
                    "role": "MEMBER",
                  
…(truncated, see openapi.json for full schema)
```

#### `GET /v1/meps` — MEPs for a parliamentary term

**Parameters:**
- `term` (query, required, string) — Parliamentary term 1-10 (10 = current) Example: `10`
- `limit` (query, optional, string) — Max results (1-800)
- `offset` (query, optional, string) — Offset

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/europarl-api/v1/meps?term=10"
```

**Response:**
```json
{
    "data": {
        "meps": [
            {
                "id": "1294",
                "name": "Elio DI RUPO",
                "sort_name": "DIRUPO"
            },
            {
                "id": "1909",
                "name": "Bernd LANGE",
                "sort_name": "LANGE BERND"
            },
            {
                "id": "1917",
                "name": "Markus FERBER",
                "sort_name": "FERBER"
            },
            {
                "id": "1927",
                "name": "Peter LIESE",
                "sort_name": "LIESE"
            },
            {
                "id": "2152",
                "name": "Leoluca ORLANDO",
                "sort_name": "ORLANDO"
            },
            {
                "id": "22418",
                "name": "Esther HERRANZ GARCÍA",
                "sort_name": "HERRANZGARCIA"
            },
            {
                "id": "2268",
                "name": "Jonas SJÖSTEDT",
                "sort_name": "SJOESTEDT"
            },
            {
                "id": "22858",
                "name": "Fabienne KELLER",
                "sort_name": "KELLER"
            },
            {
                "id": "2341",
                "name": "Michael GAHLER",
                "sort_name": "GAHLER"
            },
            {
                "id": "23699",
                "name": "Kateřina KONEČNÁ",
                "sort_name": "KONECNA"
            },
            {
                "id": "23781",
     
…(truncated, see openapi.json for full schema)
```

### Meta

#### `GET /v1/meta` — Usage notes

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/europarl-api/v1/meta"
```

**Response:**
```json
{
    "data": {
        "note": "Official open data of the European Parliament. /v1/meps?term=10 = the Members of the European Parliament (MEPs) for a parliamentary term (10 is the current 2024-2029 term; paginate with limit & offset), each with their id and name; /v1/mep?id=1294 = an MEP's profile — full name, country of representation (ISO3), gender, email, photo and place of birth — together with their committee, political-group and delegation memberships, split into current and past, each with the organization id, the role held (member, chair, vice-chair…) and the start/end dates; /v1/bodies?q=econ = the Parliament's corporate bodies — standing and special committees, political groups and delegations — with their id, acronym, label and type. The organization id in an MEP's memberships matches a corporate body's id, so you can resolve which committee or group a member belongs to. MEP ids come from /v1/meps. Data from the European Parliament (CC-BY 4.0). For other legislatures see the US Congress, UK Parliament, Bundestag and Canadian Parliament APIs.",
        "source": "European Parliament Open Data (data.europarl.europa.eu)",
        "endpoints": [
            "/v1/meps",
            "/v1/mep",
            "/v1/bodies",
            "/v1/meta"
        ]
    },
    "meta": {
        "timestamp": "2026-06-01T16:24:11.349Z",
        "request_id": "0769fe8a-f132-4d4d-bdc0-562d9f5d4555"
    },
    "status": "ok",
    "message": "Meta retrieved",
    "success": true
}
```


---
Marketplace page: https://www.oanor.com/api/europarl-api
OpenAPI spec: https://www.oanor.com/api/europarl-api/openapi.json
