# SUNAT Peru RUC Scraper (`scrapers_lat/sunat-scraper`) Actor

Extract Peru SUNAT taxpayer records by RUC or company name: legal name, status, tax address, CIIU activity, legal representatives and every branch location (establecimientos anexos) with code, type and address.

- **URL**: https://apify.com/scrapers\_lat/sunat-scraper.md
- **Developed by:** [Scrapers Lat](https://apify.com/scrapers_lat) (community)
- **Categories:** Business, Lead generation, Automation
- **Stats:** 2 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $8.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

<!-- actor-banner -->
[![SUNAT Peru RUC Scraper](https://scrapers.lat/banners/sunat-scraper.png)](https://console.apify.com/actors/n5LaUCMdeC2pNthwM/input)
<!-- /actor-banner -->

## SUNAT Peru RUC Scraper

> Extract Peruvian company registry records from SUNAT Consulta RUC, covering every formal business across all 24 departments of Peru

![Apify](https://img.shields.io/badge/Platform-Apify-1CE1CE?logo=apify&logoColor=white)
![Coverage](https://img.shields.io/badge/Coverage-Peru-blue)
![Maintained](https://img.shields.io/badge/Maintained-Yes-brightgreen)
![Output](https://img.shields.io/badge/Output-JSON%20%7C%20CSV%20%7C%20Excel-orange)

<table><tr>
<td align="center"><strong>18 fields</strong><br>per record</td>
<td align="center"><strong>Peru</strong><br>coverage</td>
<td align="center"><strong>JSON / CSV / Excel</strong><br>output formats</td>
<td align="center"><strong>Updated</strong><br>2026-06-19</td>
</tr></table>

<br>

### What you get

Each record is an official SUNAT taxpayer profile that lets you validate, enrich, or build leads from any Peruvian company by RUC or by name.

- **razonSocial**: registered legal name of the taxpayer
- **ruc**: 11-digit RUC tax identification number
- **estado**: taxpayer status (for example ACTIVO or BAJA DE OFICIO)
- **condicion**: taxpayer condition (for example HABIDO or NO HABIDO)
- **tipoContribuyente**: taxpayer type (for example SOCIEDAD ANONIMA, PERSONA NATURAL)
- **nombreComercial**: commercial trade name when the taxpayer declares one
- **direccion**: fiscal domicile street address
- **departamento**: department of the fiscal address
- **provincia**: province of the fiscal address
- **distrito**: district of the fiscal address
- **ciiu**: CIIU economic activity code
- **actividadEconomica**: main economic activity description
- **fechaInscripcion**: RUC registration date
- **fechaInicioActividades**: date activities started
- **representanteLegal\***: list of legal representatives with document type, document number, name, role and start date
- **establishments\*\***: every branch location (establecimientos anexos) with internal code, establishment type, full address and economic activity code
- **url**: public SUNAT consulta link for the taxpayer
- **observedAt**: when this record was last seen by the scraper

*\*Appears when Fetch Legal Representatives is set to true.*
*\*\*Appears when Fetch Branch Locations is set to true. Large companies can return thousands of branches.*

### Who is it for

| Use case | Who benefits |
|---|---|
| Verify a supplier or client RUC before invoicing | Finance and accounting teams |
| Enrich CRM records with official company data | Sales and operations teams |
| Build lead lists by company name across Peru | B2B marketing and lead generation |
| Run compliance and KYC checks on counterparties | Risk and compliance officers |
| Map legal representatives of target companies | Researchers and due-diligence analysts |

### Frequently Asked Questions

**Which companies does this scraper cover?**
It covers every taxpayer registered in SUNAT Consulta RUC, which includes all formal businesses and individuals with a RUC across the 24 departments of Peru. Both active and deregistered taxpayers are returned.

**Can I search by company name instead of RUC?**
Yes. Any 11-digit numeric search term is treated as a direct RUC lookup, and any other text is treated as a company-name search that returns every matching taxpayer. You can mix both in a single run.

**How many records can I collect in one run?**
A direct RUC lookup returns one record per RUC. A name search can return dozens of matching taxpayers per term. Use Max Items to cap the total collected across all search terms.

**Can I get the legal representatives of a company?**
Yes. Enable Fetch Legal Representatives and each record will include the full list of representantes legales with document type, document number, name, role and start date.

**Can I get every branch location of a company?**
Yes. Enable Fetch Branch Locations and each record includes an establishments array with every registered establecimiento anexo: internal code, establishment type, full address and economic activity. Large retailers and public bodies can return hundreds or thousands of branches in a single record.

**What happens if a RUC or name returns no data?**
The scraper logs the term and continues with the rest of your input. A short error record is written to the dataset for that term so you can see exactly which lookups returned nothing.



<!-- related-actors -->
### Related scrapers

Need data from the same space? Here are other scrapers we build and maintain:

- [Colombia SECOP Scraper](https://apify.com/scrapers_lat/colombia-secop-scraper): Extract Colombia public contracts from SECOP II (datos.gov.co): entity and supplier, NIT, contract...
- [Chile Mercado Publico Supplier & Award Scraper](https://apify.com/scrapers_lat/mercado-publico-scraper): Extract Chile state suppliers from Mercado Publico and ChileProveedores with public-procurement...
- [BCRA Argentina Debtor & Credit Risk Scraper](https://apify.com/scrapers_lat/bcra-deudores-scraper): Extract Argentina BCRA Central de Deudores credit-risk records by CUIT or CUIL: debtor name...
- [DataJud Brazil Court Case Scraper](https://apify.com/scrapers_lat/datajud-scraper): Extract Brazilian court process records from the CNJ DataJud public database across 90+ federal...
- [SAT Mexico 69-B Taxpayer Blacklist Scraper](https://apify.com/scrapers_lat/sat-69b-scraper): Extract Mexico SAT Lista 69-B (EFOS) blacklist of taxpayers presumed or confirmed to issue fake...
- [SCE/SEACE Peru Procurement Scraper](https://apify.com/scrapers_lat/seace-scraper): Extract Peru SEACE public procurement future-contracting announcements: entity, dates, type, object...

<!-- /related-actors -->

<!-- scrapers-lat-cta -->
### More scrapers at scrapers.lat

This actor is built and maintained by [scrapers.lat](https://scrapers.lat), where we publish scrapers for Latin American and US public platforms: real estate, jobs, e-commerce, company registries and government data. Browse the full catalog, see live sample output for each one, or ask us for a custom scraper at [scrapers.lat](https://scrapers.lat).

---

> This actor is an independent tool and has no affiliation with SUNAT. It only accesses data that is publicly available on the platform. Use it in accordance with SUNAT's terms of service.

# Actor input Schema

## `maxItems` (type: `integer`):

Maximum number of records to collect across all search terms. Optional.
## `withDetails` (type: `boolean`):

When enabled, the scraper also fetches the legal representatives (representantes legales) for each taxpayer, including document type, document number, full name, role and start date. Slower but richer.
## `withBranches` (type: `boolean`):

When enabled, the scraper also fetches every branch location (establecimientos anexos) registered for each taxpayer: internal code, establishment type, full address and economic activity. Large companies can have thousands of branches, all returned in one establishments array.
## `searchTerms` (type: `array`):

RUC tax-IDs (11 digits) or company names to look up in the SUNAT registry. An 11-digit numeric term is treated as a direct RUC lookup; any other text is treated as a company-name search that returns every matching taxpayer. Add one or more.
## `useProxy` (type: `boolean`):

Route requests through Apify Residential proxy in Peru. Enable this only if SUNAT starts blocking the run; direct requests normally work.

## Actor input object example

```json
{
  "maxItems": 10,
  "withDetails": true,
  "withBranches": false,
  "searchTerms": [
    "20100070970"
  ],
  "useProxy": false
}
````

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "maxItems": 10,
    "searchTerms": [
        "20100070970"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapers_lat/sunat-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "maxItems": 10,
    "searchTerms": ["20100070970"],
}

# Run the Actor and wait for it to finish
run = client.actor("scrapers_lat/sunat-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "maxItems": 10,
  "searchTerms": [
    "20100070970"
  ]
}' |
apify call scrapers_lat/sunat-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=scrapers_lat/sunat-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "SUNAT Peru RUC Scraper",
        "description": "Extract Peru SUNAT taxpayer records by RUC or company name: legal name, status, tax address, CIIU activity, legal representatives and every branch location (establecimientos anexos) with code, type and address.",
        "version": "0.1",
        "x-build-id": "mZ6HLfKlHfmRkMXWK"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/scrapers_lat~sunat-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-scrapers_lat-sunat-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/scrapers_lat~sunat-scraper/runs": {
            "post": {
                "operationId": "runs-sync-scrapers_lat-sunat-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/scrapers_lat~sunat-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-scrapers_lat-sunat-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "maxItems": {
                        "title": "Max Items",
                        "minimum": 1,
                        "maximum": 1000000,
                        "type": "integer",
                        "description": "Maximum number of records to collect across all search terms. Optional."
                    },
                    "withDetails": {
                        "title": "Fetch Legal Representatives",
                        "type": "boolean",
                        "description": "When enabled, the scraper also fetches the legal representatives (representantes legales) for each taxpayer, including document type, document number, full name, role and start date. Slower but richer.",
                        "default": true
                    },
                    "withBranches": {
                        "title": "Fetch Branch Locations (Establecimientos Anexos)",
                        "type": "boolean",
                        "description": "When enabled, the scraper also fetches every branch location (establecimientos anexos) registered for each taxpayer: internal code, establishment type, full address and economic activity. Large companies can have thousands of branches, all returned in one establishments array.",
                        "default": false
                    },
                    "searchTerms": {
                        "title": "Search Terms",
                        "type": "array",
                        "description": "RUC tax-IDs (11 digits) or company names to look up in the SUNAT registry. An 11-digit numeric term is treated as a direct RUC lookup; any other text is treated as a company-name search that returns every matching taxpayer. Add one or more.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "useProxy": {
                        "title": "Use Residential Proxy",
                        "type": "boolean",
                        "description": "Route requests through Apify Residential proxy in Peru. Enable this only if SUNAT starts blocking the run; direct requests normally work.",
                        "default": false
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
