For Algorithmic Trading Desks

Programmatic Policy Data

A REST API and bulk datasets covering European MAR 19 insider transactions, TED tenders and lobbying meetings, linked to companies. Ticker, ISIN and LEI are available for mapped entities, a subset that is still growing.

Timestamped Records
Observation Timestamps
Real 12-Month Procurement SampleDirect Download

Real extract: EU contract awards from the last 12 months, with source links

// Example payload shape (invented values)
{
  "event_type": "entity_resolution_match",
  "timestamp": "2026-08-07T12:00:01.421Z",
  "data": {
    "entity_name": "TechLobbying Partners GmbH",
    "matched_individual": {
      "name": "Klaus Schmidt",
      "former_role": "MEP (DE)",
      "committee": "IMCO (Internal Market)",
      "resignation_date": "2026-03-15"
    },
    "match_method": "name_match",
    "active_dossiers": ["AI Act Implementation", "Digital Markets Act"]
  }
}

Structured Policy Datasets

Explore exactly how our normalized datasets map directly to algorithmic trading strategies.

Datasets

Corporate Entities

Parent corporate entities. Responses include a `security` array (ticker, ISIN, LEI) for entities with an accepted mapping.

Fields

idnamesectorheadquarters_countrycreated_at
GET /api/v1/corporate-entities (Quant Desk)
curl -H "Authorization: Bearer $ALTDATAEU_API_KEY" \
  "https://www.altdataeu.com/api/v1/corporate-entities?limit=20&offset=0"

Entity Resolution Engine

Messy EU registers output strings like "Airbus Operations GmbH". We map registered names to corporate entities and, where we can, to LEIs and tickers. Coverage is still growing, so check a sample for the companies you care about.

First-Seen Timestamps

Records carry the time we first observed them, which lets you restrict a backtest to what was visible on a given date. Source registers can still overwrite history, so treat earlier periods with care.

Daily Ingestion

Scrapers run on a daily schedule. New TED notices and insider filings appear in the terminal and the REST API after the next run, so this is a daily dataset, not a tick feed.

Real data · Jupyter Notebook

Python walkthrough: EU public procurement, last 12 months

A real extract of contract awards from the production database, each row with a link to its TED notice. The notebook loads it, aggregates it by month and currency, and finds the rows linked to a listed security. It uses no prices and shows no performance.

Loads the real 12-month procurement extract directly into Pandas.Real extract, 9 Oct 2026
# 1. Load a real extract of EU contract awards (last 12 months)
import pandas as pd

url = "https://www.altdataeu.com/samples/eu_procurement_contracts_12m_sample.csv"
df = pd.read_csv(url, parse_dates=["award_date", "ingested_at"])

print(f"{len(df):,} contract awards, {df['award_date'].min().date()} to {df['award_date'].max().date()}")
print(df[["award_date", "buyer_name", "winner_name_raw", "awarded_amount", "awarded_currency", "source_url"]].head())

# Every row links to its notice on ted.europa.eu (source_url).
# ingested_at is when AltDataEU first stored the row.
Need the raw files for local Pandas / Polars work?

API Endpoints & Data Dictionary

Coverage varies by source and country. See the data health notes in the docs.

Feed TypeUpdate CadenceHistoryPrimary Analysis Use Case
Public Procurement (TED)DailyVaries by sourceTracking public contract awards
Lobbying RegistersDailyVaries by sourceRegulatory risk, upcoming legislative roadblocks
Insider Trading (BaFin/AMF)DailyVaries by sourceDirectors' dealings correlated with lobbying velocity
Legislative VelocityDailyVaries by sourceFollowing legislative progress by sector

Test the API (No Sales Call)

Drop your work email below. You'll receive a 7-day, rate-limited trial key by email (15 requests/minute, 500/day). We'll only follow up after you've had a chance to test it.

By submitting you accept our terms. Trial key provides 120 requests/minute and 250 rows/page for 7 days.