Discover/HATVP API
live

HATVP APIhatvp.fr

Access HATVP declarations of interests, assets, and the French lobbyist registry. Search by name, mandate type, department, or browse aggregated statistics.

Endpoint health
verified 6d ago
get_statistics
search_by_geographic_zone
search_declarations
get_interests_declaration
list_lobbyists
7/7 passing latest checkself-healing
Endpoints
8
Updated
22d ago

What is the HATVP API?

This API exposes 8 endpoints covering the French High Authority for Transparency in Public Life (HATVP) dataset, including declarations of interests, patrimony filings, and the lobbyist registry. Use search_declarations to find officials by name, title, or department code, then fetch full structured declaration data — financial participations, real estate holdings, consulting activities, and more — via get_declaration_detail or the patrimony-specific get_patrimony_declaration endpoint.

Try it
Filter by official's name (matches against first and last name).
Maximum number of results to return.
General search across name, first name, and title/position.
Filter by official's title or position (e.g. 'Député', 'Sénateur').
Pagination offset (number of results to skip).
Filter by department code (e.g. '75' for Paris, '13' for Bouches-du-Rhône).
Filter by mandate type.
api.parse.bot/scraper/3c4be371-aa76-4641-af45-4e5d0719ded1/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/3c4be371-aa76-4641-af45-4e5d0719ded1/search_declarations?name=LAHMAR&limit=5&query=Macron&title=D%C3%A9put%C3%A9&offset=0&department=75&type_mandat=depute' \
  -H 'X-API-Key: $PARSE_API_KEY'
Python SDK · recommended

Typed, relational, agent-ready

A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.

  • Fully typed · autocompletes
  • Objects link to objects
  • Typed errors & pagination

Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:

uv add parse-sdk
uv run parse init
uv run parse add --marketplace hatvp-fr-api

uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.

"""Walkthrough: HATVP SDK — declarations, lobbyists, and statistics."""
from parse_apis.hatvp_public_declarations_lobbyist_registry_api import (
    Hatvp, MandateType, DeclarationNotFound
)

hatvp = Hatvp()

# Get aggregated statistics about published declarations
stats = hatvp.statistics.get()
print(stats.total_declarations, stats.by_type_mandat)

# Search declarations by function type (deputies)
for decl in hatvp.declarations.by_function(function_type=MandateType.DEPUTE, limit=3):
    print(decl.nom, decl.prenom, decl.qualite, decl.departement)

# Search by geographic zone (Paris)
first_paris = hatvp.declarations.by_zone(zone="75", limit=1).first()
if first_paris:
    print(first_paris.nom, first_paris.type_mandat, first_paris.open_data)

# Get full declaration detail with typed-error handling
try:
    detail = hatvp.declarations.detail(xml_filename="lahmar-abdelkader-dia31320-depute-69.xml")
    print(detail.uuid, detail.dateDepot)
except DeclarationNotFound as exc:
    print(f"not found: {exc.xml_filename}")

# Search lobbyists by sector keyword
for org in hatvp.lobbyists.search(query="energy", limit=3):
    print(org.denomination, org.ville, org.identifiantNational)

print("exercised: statistics.get / declarations.by_function / declarations.by_zone / declarations.detail / lobbyists.search")
All endpoints · 8 totalmissing one? ·

Search for public official declarations by name, title, or department. Returns matching officials from the HATVP open data CSV with their metadata. At least one filter (query, name, title, department, type_mandat) is recommended to narrow results; omitting all filters returns all declarations. Pagination is manual via offset and limit.

Input
ParamTypeDescription
namestringFilter by official's name (matches against first and last name).
limitintegerMaximum number of results to return.
querystringGeneral search across name, first name, and title/position.
titlestringFilter by official's title or position (e.g. 'Député', 'Sénateur').
offsetintegerPagination offset (number of results to skip).
departmentstringFilter by department code (e.g. '75' for Paris, '13' for Bouches-du-Rhône).
type_mandatstringFilter by mandate type.
Response
{
  "type": "object",
  "fields": {
    "limit": "integer max results returned",
    "total": "integer total number of matching declarations",
    "offset": "integer pagination offset",
    "results": "array of declaration objects"
  },
  "sample": {
    "data": {
      "limit": 5,
      "total": 2,
      "offset": 0,
      "results": [
        {
          "nom": "MACRON",
          "prenom": "Emmanuel",
          "qualite": "Président de la République",
          "civilite": "M.",
          "open_data": "",
          "date_depot": "2022-03-01",
          "departement": "",
          "nom_fichier": "macron-emmanuel-dia20721-president.pdf",
          "type_mandat": "president",
          "type_document": "dia",
          "date_publication": "2022-05-16",
          "statut_publication": "Livrée"
        }
      ]
    },
    "status": "success"
  }
}

About the HATVP API

Declaration Search and Filtering

search_declarations queries the HATVP open data across fields including civilite, prenom, nom, type_mandat, qualite, type_document, departement, and date_publication. It accepts filters for official name, title (e.g. Député, Sénateur), department code, and mandate type (depute, senateur, president, gouvernement, commune, region). All results are paginated via offset and limit. For use-case-specific browsing, search_by_function and search_by_geographic_zone offer the same paginated result shape filtered to a single function type or French department code (e.g. 75 for Paris, 971 for Guadeloupe).

Declaration Detail Endpoints

Once you have an xml_filename from a search result's open_data field, get_declaration_detail returns the full structured declaration: mandatElectifDto (elected mandates), activConsultantDto (consulting roles), activProfCinqDerniereDto (professional activities over the last five years), participationDirigeantDto (management participations), and participationFinanciereDto (financial participations). DSP (patrimony) declarations are better handled by get_patrimony_declaration, which returns asset-specific sections: immeubleDto (real estate), comptesBancaireDto (bank accounts), valeursMobilieresDto (securities), vehiculeDto, assuranceVieDto, and passifDto (liabilities). The interests-only view is available via get_interests_declaration.

Lobbyist Registry

list_lobbyists queries the HATVP register of interest representatives. Each result object includes denomination, identifiantNational, categorieOrganisation, adresse, codePostal, plus details on directors, collaborators, clients, affiliations, and activity sectors. The endpoint accepts a free-text query parameter that matches across organization name, sector, directors, and collaborators, with offset/limit pagination.

Statistics

get_statistics returns aggregate counts with no required inputs. The response breaks down total declarations by by_type_mandat (mandate type), by_departement (department code), and by_statut_publication (publication status). Useful for understanding dataset coverage before issuing targeted searches.

Reliability & maintenanceVerified

The HATVP API is a managed, monitored endpoint for hatvp.fr — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when hatvp.fr changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.

This isn't an official hatvp.fr API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.

Last verified
6d ago
Latest check
7/7 endpoints passing
Maintenance
Monitored & self-healing
Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Map all elected officials in a given French department by combining search_by_geographic_zone with department codes.
  • Build a conflict-of-interest tracker by pulling activConsultantDto and participationFinanciereDto fields from get_declaration_detail.
  • Analyze real estate and securities portfolios of public officials using immeubleDto and valeursMobilieresDto from get_patrimony_declaration.
  • Enumerate registered lobbyists in a specific sector using the query parameter in list_lobbyists.
  • Generate per-mandate-type breakdowns of published declarations with get_statistics to inform journalism or research dashboards.
  • Cross-reference an official's professional history over five years via activProfCinqDerniereDto in the interests declaration endpoint.
  • Filter all government ministers' declarations using type_mandat=gouvernement in search_declarations for cabinet-level transparency monitoring.
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo1005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 req/min

One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.

Frequently asked questions
Does HATVP provide an official developer API?+
HATVP publishes open data files (CSV and XML) at data.gouv.fr and on its own portal, but it does not provide a structured REST API with queryable endpoints. This Parse API exposes those datasets through filterable, paginated endpoints.
Which declaration types have detailed XML data available, and which don't?+
get_declaration_detail, get_patrimony_declaration, and get_interests_declaration all require an xml_filename from the open_data field of a search result. Not every declaration record includes this field — only those for which HATVP has published a structured XML file have it populated. Officials without an XML open data entry can be found via search but their detailed field-level content is not accessible through these endpoints.
Can I retrieve historical or archived declarations from earlier mandate periods?+
The API reflects the declarations currently published in the HATVP open data. Historical filing archives or older versions of declarations that are no longer in the active dataset are not currently covered. You can fork the API on Parse and revise it to target archived HATVP data sources if those are available.
What does `get_statistics` return, and does it support filtering by year?+
get_statistics takes no input parameters and returns three aggregate breakdowns: total declaration count, counts by mandate type (by_type_mandat), counts by department (by_departement), and counts by publication status (by_statut_publication). Year-based filtering is not currently supported. You can fork the API on Parse and revise it to add time-range filtering if your use case requires trend analysis over time.
Does the lobbyist endpoint include financial spending figures reported to HATVP?+
The list_lobbyists endpoint returns organizational metadata — name, national identifier, category, address, directors, collaborators, clients, and activity sectors. Declared lobbying expenditure amounts are not currently included in the response fields. You can fork the API on Parse and revise it to add spending data if HATVP's registry exposes those figures in a parseable form.
Page content last updated . Spec covers 8 endpoints from hatvp.fr.
Related APIs in Government PublicSee all →
pappers.fr API
Search French companies and directors to access detailed business profiles, ownership structures, trademark information, and legal filings all in one place. Build professional networks, track company leadership, and monitor business intelligence across France's official registry data.
service-public.fr API
Search the official French public service portal (service-public.fr) for practical guides, legal information, administrative procedures, and support resources. Retrieve structured content from any guide or category page, explore autocomplete suggestions, and access legal references — all through a single unified API.
legifrance.gouv.fr API
Search and retrieve official French legal documents, laws, and unclaimed estate notices from the Journal Officiel (JORF), including the ability to browse the latest published issues. Find specific legal texts and succession notices to stay informed about French legislation and inheritance announcements.
portaltransparencia.gov.br API
Search and analyze Brazilian government spending, including public expenses, contracts, civil servant salaries, benefits, travel records, and sanctions data. Track government transparency information by department, budget programs, and public tenders all in one place.
govdata.de API
Search and retrieve official German government datasets including demographics, economic indicators, and business statistics, or browse available organizations and categories to discover relevant open data resources. Filter results by high-value datasets and access site statistics to learn about recently updated information from Germany's Federal Open Data Portal.
transparenciaportal.gov.br API
Track and analyze Brazilian government spending by accessing detailed records on politician amendments, public servant salaries, beneficiary payments, and government payment card transactions. Monitor how public funds are allocated across different government bodies and identify spending patterns through comprehensive financial data from Brazil's official transparency portal.
hellowork.com API
Search and browse job listings and company profiles on HelloWork, France's leading job board. Filter by keyword, location, contract type, salary, and more.
encheres-publiques.com API
Search and browse real estate, vehicle, art, and equipment auctions across France, viewing detailed lot information and upcoming auction events from various organizers. Filter auction listings by category and type to find specific items and compare auction details to make informed bidding decisions.