CUIT Lookup — AFIP Argentine Taxpayer Registry Search
Pricing
from $2.00 / 1,000 cuit founds
CUIT Lookup — AFIP Argentine Taxpayer Registry Search
Bulk-ingested AFIP taxpayer registry — consulta CUIT/CUIL instant lookup. Two modes: refresh (downloads the official weekly zip, parses ~6M records into a sharded index) and lookup (instant CUIT queries from the index). Pay per successful lookup — not-found queries are free.
Pricing
from $2.00 / 1,000 cuit founds
Rating
0.0
(0)
Developer
Mariano Ferreras
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Pay-per-event — zero monthly fee, zero subscription. Look up Argentine CUITs (tax IDs) against the official AFIP taxpayer registry. Covers ~6.2M records — individuals (física) and companies (jurídica) — with tax status, employer flag, and monotributo category. Pay only for found records. No rental. No idle fees.
What it does
This is a cuit lookup tool that performs a cuit search against the official AFIP padron AFIP — the weekly bulk file published by Argentina's tax authority (apellidoNombreDenominacion.zip). It downloads and indexes the file on refresh (~86MB weekly, ~320MB uncompressed, ~6 million fixed-width records), then serves cuit online lookups in milliseconds from a sharded Key-Value Store index (256 shards by SHA-256 prefix).
Each result includes the person or company name, CUIT/CUIL display format (XX-XXXXXXXX-X), person type (física/jurídica), income tax status, VAT status, monotributo category, employer flag, and society member flag. This actor uses the official AFIP padrón bulk file (re-downloaded weekly) rather than scraping the CuitOnline web interface — this means direct AFIP-sourced data with no third-party dependency, but at most ~7 days of freshness lag.
How it works
Two modes:
refresh (run weekly)
Downloads and indexes the official AFIP padrón zip. Parses ~6 million fixed-width records, stores them in a sharded Key-Value Store index. Pushes one summary row to the dataset. This mode is never charged, but it is not free to run — a full ingest takes ~2.5 minutes and processes ~6M records.
You don't have to run refresh before your first lookup — since each customer's index lives in their own Apify account, a lookup run automatically bootstraps the index inline the first time it finds none (adds ~2-3 minutes to that one run, still uncharged). After that, schedule refresh weekly via Apify Scheduler to keep the index current — lookup only ever bootstraps a missing index, it never refreshes a stale one.
Freshness guard (built-in): since each customer's index lives in their own account, it's easy to end up re-running refresh more often than the source data actually changes (AFIP publishes the padrón weekly). To avoid burning a ~2.5-minute ingest for nothing, refresh checks the existing index's age first:
- If the stored index is younger than
minRefreshAgeHours(default 72), the run logs askippedresult row and exits immediately — no download, no re-ingest. - Set
forceRefresh: trueto bypass the guard and re-ingest unconditionally (useful right after AFIP publishes a new weekly file, or if you suspect the index is corrupt). - The very first refresh on a fresh account always runs in full — there's nothing to compare against yet.
If you schedule refresh weekly (recommended), the guard is normally a no-op — a real weekly schedule and a 72h default rarely collide. It mainly protects against accidental re-triggers, tighter-than-weekly schedules, or manual re-runs.
lookup (default)
Given one or more Argentine tax ID numbers (CUITs, 11 digits), reads the relevant index shard (millisecond response) and returns each record. Invalid CUITs (bad check digit) are skipped with a warning and not charged. Only found records trigger a cuit-lookup event charge.
Input
| Field | Type | Default | Description |
|---|---|---|---|
mode | enum | "lookup" | "refresh" or "lookup" |
cuits | string[] | — | Argentine CUITs (11 digits, with or without dashes). Required in lookup mode. Capped at 100,000 entries — lookup cost is always bounded by this explicit list. |
maxItems | int | 50 | Max results in lookup mode (0 = unlimited). |
minRefreshAgeHours | int | 72 | refresh mode only. Skip re-ingest if the stored index is younger than this many hours. |
forceRefresh | bool | false | refresh mode only. Ignore minRefreshAgeHours and re-ingest unconditionally. |
Output (per CUIT)
| Field | Type | Description |
|---|---|---|
cuit | string | Display format XX-XXXXXXXX-X |
found | bool | Whether the CUIT was found in the index |
name | string|null | Full name or business name |
personType | "fisica"|"juridica"|null | Derived from CUIT prefix (20/23/24/27 = física) |
incomeTaxStatus | string|null | Raw Impuesto a las Ganancias status (AC, EX, NC, NI, etc.) |
vatStatus | string|null | Raw IVA status (AC, EX, NC, NI, etc.) |
monotributoCategory | string|null | Monotributo category (A–K, or NN) |
isSocietyMember | bool|null | Integrante de sociedad |
isEmployer | bool|null | Empleador |
indexRefreshedAt | ISO|null | When the index was last refreshed |
Pricing
This actor uses pay-per-event pricing. You are never charged for not-found lookups, invalid CUITs, or failed requests.
| Event | Price | When charged |
|---|---|---|
cuit-lookup | $0.002 | Per CUIT record found in the index. Not-found lookups are free. |
At $0.002 per found CUIT, 1,000 lookups cost $2.00 — competitive vs. $3/1k alternatives. Taxpayer verification at scale costs pennies.
refresh runs are never charged, but a full ingest (~2.5 minutes, ~6M records) is not free to run — schedule it weekly (matching AFIP's publish cadence and the default minRefreshAgeHours: 72) rather than more often; the built-in freshness guard (see above) will skip redundant re-runs automatically either way.
Use cases
- KYC / onboarding pre-fill — validate a CUIT and pre-fill business name during merchant onboarding
- Supplier verification — batch-check supplier CUITs for tax status and employer registration
- B2B due diligence — verify company registration before issuing invoices or contracts
- Fintech batch enrichment — enrich customer lists with taxpayer names and types
- Agent / LLM tool — plug into an MCP toolchain for Argentine company lookups
Use with AI agents (MCP)
This actor is available as a tool for AI assistants via the Apify MCP server. Agents can call it to look up Argentine CUITs directly — no Apify console needed, just a single function call.
MCP setup
{"mcpServers": {"apify": {"command": "npx","args": ["mcp-remote","https://mcp.apify.com?tools=mfapitools/cuit-lookup","--header","Authorization: Bearer <YOUR_API_TOKEN>"]}}}
Example agent prompts
- "Look up the CUIT for this Argentine company and tell me its tax status"
- "Batch verify these 20 supplier CUITs and flag any that aren't found"
- "Check if this CUIT belongs to a person or a company"
The actor returns structured JSON with the same fields shown above. Agentic workflows (Claude Code, Cursor, any MCP-compatible AI) can perform taxpayer verification and CUIT lookups in the same run they're processing KYC or supplier data.
Limitations (v1)
- Province and main economic activity are NOT available — these fields are absent from the AFIP bulk file; they would require the SOAP-based
ws_sr_constancia_inscripcionservice (needs an AFIP digital certificate, v2 candidate). - Freshness ≤ 7 days — the AFIP zip is published weekly. The
Last-Modifiedheader is logged during refresh. - No name search — v1 is CUIT-keyed only. Name/denominación search would require a separate trigram index (v2 candidate).
- Natural persons included — the AFIP file contains full names and tax statuses of individuals. This is official public registry data published by the state, but the README must note this for compliance. Contact us if you need a
juridicasOnlyfilter. - Unofficial redistribution — this actor redistributes AFIP's public file in a more queryable form. Attribution: "Fuente: AFIP — www.afip.gob.ar"
Legal
Data source: Administración Federal de Ingresos Públicos (AFIP) — official public taxpayer registry file at https://www.afip.gob.ar/genericos/cInscripcion/archivos/apellidoNombreDenominacion.zip. This is government data published specifically for third-party taxpayer verification. We will remove any record upon credible legal complaint.
Changelog
See ./CHANGELOG.md.