Verify a French company, its VAT number, and its address from one API. Built for AI agents that pay per request — no account, no API key, no subscription.
Search by name, SIREN, or SIRET. The full record includes directors, filed finances, employee range, NAF code, and VAT.
Validate any EU VAT number against the European Commission VIES registry. Returns the registered name and address.
Normalize a French address with the official Base Adresse Nationale. Street, postcode, city, coordinates, and confidence score.
A normal GET. The server replies with HTTP 402 and a PAYMENT-REQUIRED header containing the price and the payTo address.
Your wallet signs an EIP-3009 transfer authorization. No gas, no approval transaction, no account.
Send the same request with the PAYMENT-SIGNATURE header. The facilitator verifies and settles on Base.
The response is JSON. If the registry is down or the input is invalid, you get a 4xx/5xx and you are not charged.
# 1. Unpaid request
curl -i "https://veriffr.vercel.app/api/v1/company?q=TotalEnergies"
# HTTP/1.1 402 Payment Required
# PAYMENT-REQUIRED: eyJ4NDAyVmVyc2lvbiI6Miw...
# 2. With an x402 client, payment is automatic
import { wrapFetchWithPayment, x402Client } from "@x402/fetch";
import { ExactEvmScheme } from "@x402/evm/exact/client";
import { privateKeyToAccount } from "viem/accounts";
const account = privateKeyToAccount(process.env.PRIVATE_KEY!);
const client = new x402Client().register(
"eip155:8453",
new ExactEvmScheme(account)
);
const fetchWithPayment = wrapFetchWithPayment(fetch, client);
const response = await fetchWithPayment(
"https://veriffr.vercel.app/api/v1/company?q=TotalEnergies"
);
const data = await response.json();
console.log(data.results[0].vat);
// FR22531680445The French registries are public, but they are built for humans: French-only documentation, different formats, rate limits, and several APIs for one simple question — “who is this company?”
VerifFR normalizes SIRENE, VIES, and BAN into one stable JSON shape. There is no LLM in the request path, so the marginal cost of a call is effectively zero and the price stays at one cent.
The data is cached by the server. A popular lookup does not hammer the official registries, and an agent gets an answer in milliseconds.
/api/v1/discovery./api/v1/demo before you spend anything.A compact, plain-text manual with endpoints, prices, parameters, and response shapes. Point your agent at it.
Open llms.txt →OpenAPI 3.1 with the x402 price, network, asset, and payTo address attached to every paid operation.
Open the spec →Machine-readable catalog: endpoints, prices, free samples, facilitator, and data sources. No payment required.
Fetch the catalog →