SUNAT RUC Supplier Registry Verification avatar

SUNAT RUC Supplier Registry Verification

Pricing

from $5.72 / 1,000 item extracteds

Go to Apify Store
SUNAT RUC Supplier Registry Verification

SUNAT RUC Supplier Registry Verification

Verify supplied Peruvian company RUCs against the official SUNAT reduced-register snapshot. Export names, taxpayer status, domicile condition, fiscal-address components and dated provenance; no contacts or real-time lookup.

Pricing

from $5.72 / 1,000 item extracteds

Rating

0.0

(0)

Developer

Automation Lab

Automation Lab

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

12 days ago

Last modified

Categories

Share

Verify supplied Peruvian supplier identifiers against the official SUNAT RUC registry reduced-register snapshot. Get the registered name, taxpayer status, domicile condition and available fiscal-address components, with dated source provenance and explicit missing fields.

This Actor serves procurement and compliance teams checking a supplier spreadsheet. It verifies registry facts, not the supplier's trustworthiness or eligibility. It is a batch snapshot checker, not real-time Consulta RUC, contact enrichment or legal advice.

Why use this Actor?

  • Join verified records back to your supplier list using the exact RUC.
  • Distinguish missing address fields from identifiers absent from the snapshot.
  • Preserve the publication date when documenting onboarding checks.
  • Check archive integrity before relying on any found or not_found result.
  • Export only the company identifiers you supply, not the nationwide taxpayer register.

Who is it for?

Procurement analysts onboarding Peruvian suppliers, compliance teams refreshing registered status, and data engineers joining official address components to an authorized supplier list. It does not complete bespoke contact-enrichment assignments.

Getting started

  1. Copy company RUCs from your spreadsheet as strings, preserving all 11 digits.
  2. Supply only identifiers starting with 20; personal taxpayer identifiers are unsupported.
  3. Paste them into rucs and run the Actor.
  4. Inspect the snapshot date and verification result before updating your supplier records.
  5. Export the default dataset as JSON, CSV or Excel from Apify Console.

Example input:

{"rucs":["20272209325","20101599206"]}

These examples identify existing companies in the observed snapshot; they are not endorsements or claims of current active status.

Input parameters

ParameterMeaning
rucsRequired array of 1–10000 company RUC strings, each 11 digits beginning with 20. Surrounding whitespace is removed.

Matching is exact by identifier, not by name or substring. Duplicate inputs yield one row in first-occurrence order. Numeric values, unsupported fields, names, arbitrary URLs and personal taxpayer RUCs fail validation. There are no search, discovery, proxy or interactive lookup modes. A run checks the complete published snapshot, regardless of where the requested identifiers occur.

SUNAT RUC registry fields

FieldMeaning
rucNormalized supplied identifier
verificationResultfound or not_found in the validated snapshot
legalNameNOMBRE O RAZÓN SOCIAL
taxpayerStatusESTADO DEL CONTRIBUYENTE, retained in Spanish
domicileConditionCONDICIÓN DE DOMICILIO, retained in Spanish
ubigeoSource geographic code; no region-name enrichment
roadType, roadNameSource street type and street name
zoneCode, zoneTypeSource zone components
number, interior, lotSource address units
department, block, kilometerSource address components; department is the address unit, not a geographic department name
missingFieldsNames of blank/dash fields, or all registry fields when not_found
snapshotDateOfficial page publication date, YYYY-MM-DD
sourceUrl, sourcePageUrlOfficial archive and dated download page
sourceLastModifiedArchive's HTTP Last-Modified header
retrievedAtRetrieval time, not the company's change timestamp
dataModeofficial_reduced_register_snapshot
excludedFieldsEconomic activity, representatives, phone and email are outside scope

Blank or dash-valued source fields become null. The Actor does not infer absent address values. UBIGEO remains a string so leading zeros are preserved.

Output example

This public company was observed in the 2026-10-12 snapshot:

{
"ruc":"20272209325",
"verificationResult":"found",
"legalName":"PESCA PERU MOLLENDO S.A.",
"taxpayerStatus":"BAJA DEFINITIVA",
"domicileCondition":"HABIDO",
"ubigeo":"150122",
"roadType":"AV.",
"roadName":"JOSE PARDO",
"number":"601",
"interior":"1603",
"zoneCode":null,
"zoneType":null,
"lot":null,
"department":null,
"block":null,
"kilometer":null,
"missingFields":["zoneCode","zoneType","lot","department","block","kilometer"],
"snapshotDate":"2026-10-12",
"sourceUrl":"https://www2.sunat.gob.pe/padron_reducido_ruc.zip",
"sourcePageUrl":"https://www.sunat.gob.pe/descargaPRR/mrc137_padron_reducido.html",
"sourceLastModified":"Mon, 12 Oct 2026 07:32:47 GMT",
"retrievedAt":"2026-10-12T20:08:53.163Z",
"dataMode":"official_reduced_register_snapshot",
"excludedFields":["economicActivity","legalRepresentatives","phone","email"]
}

The default key-value store contains a SUMMARY scan receipt (not separately charged): requested unique count, matched and not-found counts, scan rows, archive bytes and snapshot date. It does not contain the downloaded register.

How much does it cost to verify SUNAT supplier RUCs?

Pay-per-event billing charges one start event per valid run plus one item event for each unique verification row, including a useful not_found finding. Duplicate input identifiers have no separate event charge. Malformed input is rejected before the explicit start event. A valid run that subsequently fails downloading or validating the source may retain its start charge, but produces no verification rows.

BRONZE pricing: $0.012 per run plus $0.0095384 per verification row. Estimated event charges: two rows $0.0310768, 100 rows $0.96584, 1000 rows $9.5504.

Apify spend tierPrice per verification row
FREE$0.010969
BRONZE$0.0095384
SILVER$0.00744
GOLD / PLATINUM / DIAMOND$0.005723

The $0.012 start charge is the same for all tiers. Spend tiers follow your qualifying aggregate monthly Apify Store spend, not the number of RUCs in this Actor. See the Pricing tab for your subscription-tier price and set an appropriate maximum total charge. Platform billing limits may truncate delivery; compare dataset row count with the scan receipt before treating a batch as fully delivered. These event charges are separate from any fees your plan imposes for integrations or storage.

Batching reduces repeat downloads: each run currently transfers about 394 MB and validates approximately 18.5 million registry lines, even for a small list. There is no shared cached registry or residential-proxy cost.

Official source and integrity

The SUNAT reduced-register page identifies the published archive. The Actor uses its HTTPS download, checks publication-date agreement, ZIP structure, uncompressed length and CRC before emitting results. A single known non-taxpayer sentinel is ignored. No source-side login or paid API is required.

Snapshot freshness and limitations

  • The official download page determines publication date; retrieval time is not live taxpayer status.
  • An identifier absent from this snapshot may still exist elsewhere or have changed since publication.
  • No historical series, autonomous alerting, economic activity, legal representatives, phone or email.
  • No company discovery or person-name searches; the full register is not exported.
  • Source fields can be incomplete or outdated. Resolve critical decisions with SUNAT and qualified local advisers.
  • Download and archive parsing are bounded; source outages, corruption and unexpected schemas fail rather than yielding false not_found findings.

Integrations

For supplier onboarding, export the dataset to a spreadsheet and join on ruc. Keep original supplied address columns alongside source fields so a reviewer can inspect discrepancies rather than blindly overwrite them.

For periodic refreshes, schedule the same input in Apify, store each dated result downstream, and compare taxpayerStatus, domicileCondition and address components. Scheduling and downstream comparisons are integrations, not built-in alerts or source history.

Connect Apify to Make, Zapier, an ERP pipeline or a warehouse. Export only necessary fields and retain the snapshot date with every verification receipt.

API usage

Start a run with your own token held securely in an environment variable:

curl -X POST "https://api.apify.com/v2/acts/automation-lab~sunat-ruc-supplier-verification/runs" \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"rucs":["20272209325","20101599206"]}'

Wait for that same run to finish, then retrieve its default dataset. Do not launch another run just to poll.

JavaScript:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/sunat-ruc-supplier-verification')
.call({ rucs: ['20272209325', '20101599206'] });
const { items } = await client.dataset(run.defaultDatasetId).listItems({ limit: 100 });
console.log(items);

Python:

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('automation-lab/sunat-ruc-supplier-verification').call(
run_input={'rucs': ['20272209325', '20101599206']})
items = client.dataset(run['defaultDatasetId']).list_items(limit=100).items
print(items)

MCP use

For a compatible client, select this Actor's stable tool subset:

claude mcp add --transport http apify \
"https://mcp.apify.com?tools=automation-lab/sunat-ruc-supplier-verification"

For Claude Desktop, Cursor and VS Code, use the equivalent client configuration and the client's supported authentication flow:

{"mcpServers":{"apify":{"url":"https://mcp.apify.com?tools=automation-lab/sunat-ruc-supplier-verification"}}}

Discover actual tool names and schemas with scoped tools/list; selected Actor tools also include run/data helpers. Example prompts for authorized use: “Verify these supplied company RUCs against the SUNAT snapshot and show their publication date and missing address fields.”

Start once and retain run and storage IDs. call-actor waits at most 45 seconds; a nonterminal response contains metadata, not result rows. Follow the same run with get-actor-run, backing off 2, 4, 8 seconds up to 10 seconds, with a 300-second overall deadline. Set a client request timeout above the server wait plus transport margin. On timeout recover the known run; if its ID is unknown, report uncertainty instead of restarting. At the deadline, report pending, include the run ID, and stop polling. Report terminal failure honestly: any available dataset rows are partial, not a successful complete verification.

After success, call get-dataset-items with the run's defaultDatasetId. The scoped discovered schema uses a string datasetId, integer limit, numeric offset, and comma-separated string fields. Example tool arguments (replace the placeholder with the returned dataset ID):

{
"datasetId": "<defaultDatasetId>",
"limit": 20,
"offset": 0,
"fields": "ruc,verificationResult,legalName,taxpayerStatus,domicileCondition,missingFields,snapshotDate"
}

Read pages of 20 source rows from offset 0, then 20, 40, 60 and 80; stop earlier at dataset exhaustion. Keep default forward ordering and avoid cleaning, filtering or flattening for predictable paging. Track source offsets and pagination metadata, not transformed returned-row counts: transformations can change those counts. If a page is only partially admitted to context, disclose the omitted source rows rather than silently skipping them.

Apply a total consumer budget of at most 100 rows and 64 KiB of serialized UTF-8 result content across all pages entering model context, whichever comes first. Process pages host-side before model injection; omit or summarize even an oversized single row/page with disclosure. Clients unable to intercept oversized responses cannot guarantee that byte limit and should not request unbounded results. Stop at exhaustion or budget and report admitted row count, the continuation source offset, and partial/truncated status when incomplete. Keep complete exports outside model context. This consumer limit does not alter the Actor's input capacity. Discovery, execution and aborting each require appropriate authorization.

Legality and privacy

Use public registry facts only for legitimate supplier verification. Public availability does not remove privacy or compliance obligations. Supply company identifiers you are authorized to process, restrict exports and use suitable retention policies. This Actor is not affiliated with or endorsed by SUNAT.

The archive is streamed through bounded buffers using HTTP ranges; it is not stored on disk or in shared Actor storage. Only supplied company matches and their not_found findings enter output storage. Failed operations send sanitized diagnostic input, exceptions and actor/build/run IDs to our private GlitchTip service for repair; secret fields and URL queries are removed and reports are retained for 30 days.

FAQ and troubleshooting

Why does a valid RUC show not_found? It was absent from the complete dated snapshot. Verify spelling and date, and do not interpret absence as a definitive live legal conclusion.

Why are address fields null? The reduced register has a blank or dash for that component. No web enrichment is attempted.

Why did the run fail? Review logs for unsupported inputs, source HTTP errors, date mismatch, corruption or changed header. A source failure cannot establish not_found. There is one bounded snapshot attempt, with no automatic full-stream restart; source failures stop the run before findings are emitted.

Why does a small batch still take time? Every run verifies the full archive's CRC and uncompressed size. Combine supplier checks rather than launching one run for each RUC.

Support and data retention

Open an issue on this Actor's Apify Store page with the run ID and a minimal reproducible example, without credentials or confidential supplier spreadsheets. We investigate documented behavior and source changes; the Actor uses no AI or LLM at runtime.

Apify retains run inputs, datasets, summary and logs under your account's storage policies; delete those records when no longer needed. The Actor creates no persistent shared archive or cache. Range streams are closed at completion or failure. Private diagnostic reports have a 30-day retention period.

This is a standalone Peru registry checker. Use your existing spreadsheet or supplier-management pipeline for discrepancy review; country-specific registry semantics should not be treated as interchangeable. No unverified related-Actor coverage is promised.