Phone info
Enrich a list of phone numbers with carrier, line type, portability and operator metadata — from the official ARCEP registry plus a live-portability check.
Phone info
The phone_info module takes a list of phone numbers and returns one enriched row per number. For each French number it identifies the carrier originally allocated the range by ARCEP (Orange, SFR, Bouygues, Free, MVNOs), plus the carrier's commercial name, SIRET, head office, RCS, and ARCEP registration date. When available it also returns the current carrier after portability and a reachability flag.
This is a pipelinable enrichment module: chain it after a discovery job, an import, or any list that carries a phone column.
Inputs
A list of items, each carrying at least one phone field. Other columns are preserved as-is.
| Field | Required | Notes |
|---|---|---|
phone (or telephone, phone_number, numero, number) |
yes | French or international number. Accepts spaces, +, 00 and bare 10-digit. |
nom (or name) |
no | Surfaced in the output for display. |
| any other column | no | Preserved unchanged. |
Batch size: 1 to 10 000 items per job.
Job-level options:
| Option | Default | Notes |
|---|---|---|
live_mode |
"cache_only" |
"cache_only" reads only what's already in the live-portability cache. "with_live" attempts a live check for French mobile numbers not yet in cache. |
source_job_id |
none | ID of an upstream job for lineage in pipelines. |
Outputs
Each input row is returned with the columns below appended.
| Column | Type | Description |
|---|---|---|
phone_e164 |
string | Canonical international format. |
phone_national |
string | Pretty national format. |
phone_country |
string | ISO 3166-1 alpha-2. |
phone_line_type |
string | mobile, fixed_line, fixed_or_mobile, other. |
phone_carrier_original |
string | Carrier allocated the range by ARCEP. |
phone_operator_siret |
string | SIRET of the original carrier. |
phone_operator_rcs |
string | RCS city. |
phone_operator_address |
string | Head office address. |
phone_operator_registered_since |
string | Date the carrier was registered with ARCEP. |
phone_tranche_attribution_date |
string | Day the range was allocated. |
phone_territory |
string | Mainland, Réunion, Mayotte, etc. |
phone_carrier_current |
string | Carrier currently attached to the number (post-portability) when available. |
phone_is_ported |
string | yes, no, unknown. |
phone_is_reachable |
string | yes, no, unknown. |
phone_is_valid |
string | yes, no. |
phone_status |
string | ok, not_french, invalid, no_match. |
Pipeline
needs: telephone
produces: phone_e164, phone_carrier_original, phone_carrier_current, phone_is_ported, ...
Typical chains:
scrap → phone_info → filter (by carrier) → sms_campaign
import → phone_info → emails enrichment …
Endpoints
POST /api/jobs/phone-info
Create a new phone-info job from a list of items.
Body
| Field | Type | Required | Description |
|---|---|---|---|
items |
array | yes | 1 to 10 000 entries. Each must carry a phone field. |
live_mode |
string | no | "cache_only" (default) or "with_live". |
source_job_id |
string (uuid) | no | Upstream job ID when chaining. |
Response
Standard JobPublic envelope.
Example
POST /api/jobs/phone-info
Content-Type: application/json
{
"items": [
{ "nom": "Acme", "phone": "+33612345678" },
{ "nom": "Beta", "phone": "0142868828" }
],
"live_mode": "cache_only"
}
Data sources
- MAJNUM — ranges allocated to each carrier (Open data ARCEP)
- Identifiants CE — commercial name, SIRET, RCS, head office, and declaration date (Open data ARCEP)
- A weekly cron refreshes the local copy after each ARCEP board meeting.