Catalog / Company registries & public records
COMPANY REGISTRIES & PUBLIC RECORDS · PERU
Peru SUNAT RUC
Look up taxpayers in Peru's official SUNAT RUC registry by RUC number or company name: status, condition, fiscal address and economic activity.
About this data
Look up taxpayers in Peru's official SUNAT RUC registry by RUC number or company name: status, condition, fiscal address and economic activity. On-demand lookup — fresh registry answers every run.
From the actor’s Apify Store listing. The per-call endpoint may return a bounded subset; its own description is below.
Buy per call over x402
2 endpoints at api.ssh.autos. Each call is one JSON POST, paid in USDC with no account or API key, and answered in the same HTTP response.
Peru company lookup by RUC
POST /v1/pe/sunat/ruc
Fetch one taxpayer's live record from Peru's official SUNAT RUC registry: legal name, taxpayer type, status (ACTIVO/BAJA...), condition (HABIDO/NO HALLADO...), fiscal address, economic activities and registration dates. Source: SUNAT official registry.
Input
Send a JSON body to POST https://api.ssh.autos/v1/pe/sunat/ruc.
| Field | Type | Required | Notes |
|---|---|---|---|
ruc | string | required | 11-digit Peruvian RUC (checksum-validated). pattern ^\d{11}$ |
Returned fields
The answer is JSON: records, a list, and summary, the run status and counts. Each record has these 17 fields; a field the source does not publish comes back null.
17 fields per record
| Field | Type | Notes |
|---|---|---|
ruc | string | 11-digit RUC number from Peru's SUNAT registry. |
companyKey | string | Composite unique key: source:ruc (e.g. e-consultaruc.sunat.gob.pe:20131312955). |
razonSocial | string | Registered legal name (razón social). |
estado | string | Taxpayer status, e.g. ACTIVO, BAJA DE OFICIO. |
condicion | string | Taxpayer condition, e.g. HABIDO, NO HABIDO (full record only). |
domicilioFiscal | string | Fiscal address as registered, whitespace-normalized (full record only). |
actividadEconomica | string | Principal economic activity, CIIU code and text (full record only). |
tipoContribuyente | string | Taxpayer type, e.g. PERSONA JURIDICA (full record only). |
nombreComercial | string | Trade name if registered, null when the registry shows '-' (full record only). |
detailError | string | Detail-lookup error message recorded on a name-search row when its full registry detail could not be fetched; the row keeps the search-card fields (full record only). |
fechaInscripcion | string | RUC registration date, DD/MM/YYYY as shown by SUNAT (full record only). |
fechaInicioActividades | string | Activity start date, DD/MM/YYYY as shown by SUNAT (full record only). |
ubicacion | string | Location (usually department) shown on the name-search result card. |
matchType | string | How the record was found: 'ruc' (direct number lookup) or 'name' (company-name search). |
sourceQuery | string | The RUC or company name the run queried. |
source | string | Source website hostname. |
scrapedAt | string | UTC ISO-8601 collection timestamp. |
Example call
npx agentcash@latest fetch https://api.ssh.autos/v1/pe/sunat/ruc -m POST -b '{"ruc": "20131312955"}'
The example values come from the API spec or the actor’s own sample input. Running it is a paid call.
Peru company search by name
POST /v1/pe/sunat/search
Search Peru's official SUNAT RUC registry by company name and get up to 30 matches (RUC, legal name, location, status). Source: SUNAT official registry.
Use the RUC endpoint for a match's full record.
Input
Send a JSON body to POST https://api.ssh.autos/v1/pe/sunat/search.
| Field | Type | Required | Notes |
|---|---|---|---|
companyName | string | required | Company name (razón social) fragment, 5+ characters. 5–120 characters |
maxResults | integer | optional | Maximum matches (SUNAT returns at most 30). 1–30; default 30 |
Returned fields
The answer is JSON: records, a list of up to 30, and summary, the run status and counts. Each record has these 17 fields; a field the source does not publish comes back null.
17 fields per record
| Field | Type | Notes |
|---|---|---|
ruc | string | 11-digit RUC number from Peru's SUNAT registry. |
companyKey | string | Composite unique key: source:ruc (e.g. e-consultaruc.sunat.gob.pe:20131312955). |
razonSocial | string | Registered legal name (razón social). |
estado | string | Taxpayer status, e.g. ACTIVO, BAJA DE OFICIO. |
condicion | string | Taxpayer condition, e.g. HABIDO, NO HABIDO (full record only). |
domicilioFiscal | string | Fiscal address as registered, whitespace-normalized (full record only). |
actividadEconomica | string | Principal economic activity, CIIU code and text (full record only). |
tipoContribuyente | string | Taxpayer type, e.g. PERSONA JURIDICA (full record only). |
nombreComercial | string | Trade name if registered, null when the registry shows '-' (full record only). |
detailError | string | Detail-lookup error message recorded on a name-search row when its full registry detail could not be fetched; the row keeps the search-card fields (full record only). |
fechaInscripcion | string | RUC registration date, DD/MM/YYYY as shown by SUNAT (full record only). |
fechaInicioActividades | string | Activity start date, DD/MM/YYYY as shown by SUNAT (full record only). |
ubicacion | string | Location (usually department) shown on the name-search result card. |
matchType | string | How the record was found: 'ruc' (direct number lookup) or 'name' (company-name search). |
sourceQuery | string | The RUC or company name the run queried. |
source | string | Source website hostname. |
scrapedAt | string | UTC ISO-8601 collection timestamp. |
Example call
npx agentcash@latest fetch https://api.ssh.autos/v1/pe/sunat/search -m POST -b '{"companyName": "BANCO DE CREDITO", "maxResults": 3}'
The example values come from the API spec or the actor’s own sample input. Running it is a paid call.
What is and isn’t charged
You pay the call price for
- An answer, including a definitive “not found” or an empty result.
- Peru company lookup by RUC: A RUC that SUNAT positively reports as unknown returns records: [] with status succeeded_empty (charged: it is an answer).
- Peru company search by name: No matches returns records: [] with status succeeded_empty (charged).
Free
- Invalid input (422), busy (503), source failure (502), timeout (504) and calls whose client hung up are never charged.
- Peru company lookup by RUC: Invalid input and registry failures are not charged.
- Peru company search by name: Invalid input and registry failures are not charged.
Prefer a subscription? Run it on Apify
This data source is a public actor on the Apify Store: Peru SUNAT RUC Scraper. Run it with your Apify account and plan for larger, scheduled or exported runs; it may offer more input options than the per-call endpoint.
How x402 payment works
- Your client sends the request. The API answers
402 Payment Requiredwith the price and where to pay. - The client pays from its own wallet: USDC on Base or Solana over x402, or over MPP on Tempo. No account, sign-up or API key.
- The client retries with the payment attached and gets the JSON answer in the same call. You are only charged for answers.
The AgentCash CLI in the example does all three steps for you and pays from your AgentCash wallet. Any x402 or MPP client works the same way.
Machine-readable: openapi.json · llms.txt