France SIRENE Company Scraper avatar

France SIRENE Company Scraper

Pricing

from $2.00 / 1,000 results

Go to Apify Store
France SIRENE Company Scraper

France SIRENE Company Scraper

Scrape French company data from the INSEE SIRENE register. Get establishment details, legal units, and business activity codes.

Pricing

from $2.00 / 1,000 results

Rating

0.0

(0)

Developer

Ivo Sandoval

Ivo Sandoval

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 days ago

Last modified

Share

Scrape French company and establishment data from the SIRENE register via the open data API. Search by company name, SIREN, SIRET, activity code, or department. Optional Pappers.fr enrichment.

Data Source

  • API: https://recherche-entreprises.api.gouv.fr/search
  • Origin: INSEE SIRENE register (updated daily by data.gouv.fr)
  • Auth required: No (open data API, no credentials needed)
  • Rate limits: Reasonable use (no hard documented limit)

Enrichment (optional)

Output Example

{
"siren": "443061841",
"siret": "44306184100015",
"denomination": "GOOGLE FRANCE",
"categorie_juridique": "5710",
"activite_principale": "62.01Z",
"tranche_effectifs": "51",
"date_creation": "2002-03-21",
"etat_administratif": "A",
"adresse": "8 RUE DE LONDRES 75009 PARIS 9",
"code_postal": "75009",
"commune": "PARIS 9",
"departement": "75",
"etablissement_siege": true,
"categorie_entreprise": "GE",
"dirigeant_principal": "SEBASTIEN MISSOFFE",
"nombre_etablissements": 4,
"tva_intracommunautaire": "FR27443061841"
}

Output Schema

FieldTypeDescription
sirenstringSIREN number (9 digits, legal unit)
siretstringSIRET number (14 digits, establishment)
denominationstringCompany name
categorie_juridiquestringLegal category code
activite_principalestringNAF/APE activity code
tranche_effectifsstringEmployee count bracket
date_creationstringCreation date
etat_administratifstringAdministrative status (A=active, C=closed)
adressestringFull address
code_postalstringPostal code
communestringCity
departementstringDepartment code
etablissement_siegebooleanWhether this is the headquarters
categorie_entreprisestringCompany category (PME, ETI, GE)
dirigeant_principalstringPrincipal officer name
nombre_etablissementsintegerNumber of open establishments
tva_intracommunautairestringEU VAT number

With Pappers enrichment enabled:

FieldTypeDescription
chiffre_affairesnumberRevenue (EUR)
effectifintegerHeadcount
capitalnumberCapital (EUR)

Input Parameters

ParameterTypeRequiredDescription
search_querystringNoCompany name, SIREN, or SIRET to search
siren_numbersarrayNoSpecific SIREN numbers to fetch
siret_numbersarrayNoSpecific SIRET numbers to fetch
activite_principalestringNoFilter by NAF/APE code (e.g. 62.01Z)
departementstringNoFilter by department code (e.g. 75 for Paris)
enrich_with_pappersbooleanNoEnable Pappers enrichment (default: false)
pappers_api_keystringNoAPI key for Pappers.fr enrichment
max_resultsintegerNoMax results (default: 100, max: 10000)
database_urlstringNoPostgreSQL URL for persistence
proxy_configurationobjectNoApify proxy config

Database

  • Database name: datamon_france_sirene
  • Tables: unites_legales, etablissements
  • Upsert: by siren (legal units) and siret (establishments)

Running

Via Apify CLI

cd actors/france-sirene
python3.12 -m venv .venv && .venv/bin/pip install -r requirements.txt
apify run --purge

Local runner (no Apify dependency)

cd actors/france-sirene
# Print to stdout (no DB)
.venv/bin/python runner.py --search-query "Total" --max-results 10 --no-db
# Search by SIREN numbers
.venv/bin/python runner.py --siren-numbers 443061841,356000000 --no-db
# Filter by department (Paris)
.venv/bin/python runner.py --departement 75 --max-results 20 --no-db
# Persist to PostgreSQL
DATABASE_URL="postgresql+asyncpg://user:pass@host:5432/datamon_france_sirene" \
.venv/bin/python runner.py --search-query "Renault" --max-results 50

Cron (daily at 07:00)

0 7 * * * cd /opt/datamon/actors/france-sirene && set -a && source .env && set +a && .venv/bin/python runner.py --search-query "*" --max-results 1000 >> /var/log/datamon/sirene.log 2>&1

Pricing (Apify Store)

  • Model: Pay-per-event (PPE)
  • Price: $2.00 / 1,000 results

Status

  • Scraper implementation (recherche-entreprises.api.gouv.fr, search, SIREN/SIRET lookup)
  • Database models + migrations
  • Input/output schemas
  • DB persistence (persist.py with upsert on two tables)
  • Local runner (runner.py - no Apify dependency)
  • Injectable logger (scraper works with Apify or stdlib logging)
  • Optional Pappers.fr enrichment (financial data, officers)
  • Tests
  • Apify Store listing