Brazilian Public Tenders API — PNCP (structured JSON)
Pricing
Pay per usage
Brazilian Public Tenders API — PNCP (structured JSON)
Brazilian public tenders API (PNCP / licitações). Query open government procurement tenders as clean, structured JSON — filter by keyword, state (UF) and modality, with built-in dedup returning only new tenders each run. For developers and AI agents building on Brazilian public data. No login.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
Matheus Martins
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Brazilian Public Tenders API — PNCP (structured JSON)
A clean diff feed of open Brazilian public tenders — built for AI agents and developers. Query tenders from PNCP (Brazil's official procurement portal, Law 14.133/2021) as structured JSON. Filter by keyword, state (UF) and modality. Built-in deduplication means each run returns only tenders you haven't seen before — a true diff feed, not a dump.
Official government source. No login, no credentials, no scraping fragility — it reads the official public consultation API.
Why this Actor
If you're building for the Brazilian public-sector market — a procurement tool, a monitoring product, a fintech serving suppliers, a proposal-drafting AI agent — you need tender data as a reliable, deduplicated feed, not a website to scrape or a raw API to babysit. This Actor gives you that feed: paginated, normalized, filtered, deduplicated, schedulable.
Deduplication keeps your costs down. Because repeated tenders are filtered out before they reach your dataset, a scheduled daily run only processes and delivers what actually entered the system since your last run.
Use with AI agents (MCP)
This Actor works as a tool for AI agents via the Apify MCP server — Claude, Cursor, VS Code or any MCP-compatible client can discover it, run it and read the results.
Hosted (recommended): add https://mcp.apify.com as a remote MCP connector in your client and authorize via OAuth, or point directly at this Actor:
json { "mcpServers": { "apify": { "command": "npx", "args": [ "mcp-remote", "https://mcp.apify.com/?tools=syntax_void/radar-editais-pncp", "--header", "Authorization: Bearer <YOUR_APIFY_API_TOKEN>" ] } } }
Example agent prompts once connected:
"Check for new Brazilian public tenders about 'software' in SP and summarize the top 5 by value." "Run the PNCP tenders tool daily and alert me when a tender over R$1M matches 'oxigênio'."
This Actor runs with limited permissions, so it is safe to expose to an agent: it reads a public API and writes only to its own dataset and key-value store.
What it does Fetches contracts with an open proposal-submission window from the PNCP consultation API. Filters and ranks by relevance (accent-insensitive keyword match on object, agency and municipality). Higher matches rank first; ties break by soonest deadline. Deduplicates across runs (state in the Key-Value Store) — each run returns only new tenders. Outputs a structured Dataset plus a DIGEST with the top prioritized items. Retries transient failures. The PNCP API can be slow at times; requests are retried with exponential backoff so a momentary slowdown does not cost you a run. Input Field What it does keywords Terms to filter/rank (object, agency, municipality; accent-insensitive). Empty = all open tenders in the selected modalities. modalidades PNCP modality codes. Required by the PNCP API — it rejects queries without at least one modality. Defaults to ["6", "8"] (Electronic Auction and Waiver), which cover most procurement. Full table: 1 Electronic Auction (Leilão), 2 Competitive Dialogue, 3 Contest, 4 Electronic Concurrence, 5 In-person Concurrence, 6 Electronic Trading (Pregão Eletrônico), 7 In-person Trading, 8 Waiver (Dispensa), 9 Non-enforceability, 10 Expression of Interest, 11 Pre-qualification, 12 Accreditation, 13 In-person Auction. ufs State codes to monitor (e.g., SP, RJ). Empty = all states. minScore 0 = a tender needs to match at least one keyword. 1 = it must match all keywords. No effect when no keywords are given. onlyNew Return only tenders not seen in previous runs (dedup). Keep it on for a clean diff feed. maxResults, pageSize, maxPagesPerQuery Volume and cost controls. Example input json { "keywords": ["software", "tecnologia da informacao"], "modalidades": ["6", "8"], "ufs": ["SP", "RJ"], "onlyNew": true, "maxResults": 200 } Example output (one Dataset item per tender) json { "id": "00394494000136-1-000090/2024", "objeto": "Contratação de serviços de tecnologia da informação", "orgao": "MINISTERIO DA JUSTICA E SEGURANCA PUBLICA", "orgao_cnpj": "00394494000136", "uf": "AL", "municipio": "Maceió", "modalidade": "Pregão - Eletrônico", "valor_estimado": 133931.0, "abertura_proposta": "2024-06-25T08:00:00", "encerramento_proposta": "2024-07-16T09:00:00", "situacao": "Divulgada no PNCP", "link": "https://www.gov.br/compras", "score": 1.0 } How to use Set your keywords, states and modalities (or leave empty for the defaults). Run once — then schedule it (Apify Schedule) for a daily diff feed. Consume via API, MCP, webhooks, or export as JSON, CSV, Excel or HTML. Pricing model
Pay per usage. You are billed for the platform resources a run consumes — there is no subscription and no per-tender surcharge. Runs are cheap: a typical daily run over all states finishes in seconds and costs a fraction of a cent. Deduplication keeps that cost stable over time, because repeated tenders are filtered out instead of being reprocessed and re-delivered.
See the Pricing tab for the current rates.
Limitations Ranking is keyword-relevance based, not semantic — LLM summarization per tender is on the roadmap (V2). Covers the PNCP. State portals that don't publish to PNCP are out of scope for now. The underlying data is public; the value here is the clean, deduplicated, agent-ready feed — not exclusive access. minScore is a coarse switch (0 or 1), not a continuous threshold. Responsible use & compliance
Reads only public, official PNCP data (companies/agencies and administrative acts — no personal data). It does not replace the official consultation and performs no bidding or participation actions — data retrieval and monitoring only.
FAQ Do I need a token or login for PNCP? No. The PNCP consultation API is public. How do I get only today's new tenders? Keep onlyNew on — that's the default. Do I have to set the modality? No, but the PNCP API requires one, so the Actor defaults to ["6", "8"] if you leave the field empty. Set it explicitly to target other modalities. Can my AI agent call this tool? Yes — via the Apify MCP server, as shown above. Note that autonomous payment by an agent requires pay-per-event pricing, which this Actor does not use today; your agent calls it under your own Apify account and token. Can I get tenders opening in the future? It returns tenders whose proposal window is currently open; future-window filtering is a possible extension.