Licitaciones Feed — Buenos Aires Government Tenders Scraper
Pricing
from $7.00 / 1,000 tender matcheds
Licitaciones Feed — Buenos Aires Government Tenders Scraper
CABA-only public procurement / licitaciones scraper over Buenos Aires Compras (BAC) open-data CSV. Two modes: query (search with filters) and sync (return new tenders since last run). CC-BY-4.0 licensed data. Honest about ~7-17 week data lag.
Pricing
from $7.00 / 1,000 tender matcheds
Rating
0.0
(0)
Developer
Mariano Ferreras
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Licitaciones Feed — Buenos Aires Public Procurement Tenders
Pay-per-event — zero monthly fee, zero subscription. Search and monitor public tenders Argentina from Buenos Aires Compras (BAC) — the official procurement platform for the City of Buenos Aires. Track licitaciones and compras publicas with OCDS-structured data, keyword search, and sync mode for new tenders. Pay per matched tender. No rental. No idle fees.
What it does
This actor provides a searchable feed of licitaciones CABA (Buenos Aires City government procurement tenders — not national) from the official Buenos Aires Compras open-data CSV. It serves two use cases in one actor: ad-hoc keyword search (query mode) and scheduled monitoring (sync mode) that detects only new tenders since your last run. Source data is CC-BY-4.0 licensed and published quarterly on the Buenos Aires government CDN — fully compliant, no proxy needed, no anti-bot risk. There are 2 other procurement actors covering Argentina: karmic_mastodon/licitaciones-latam (5 users, covers 6 LATAM countries including Argentina) and our own BAC-specific focus.
If you're looking for Buenos Aires City procurement data specifically, this gives you structured JSON with OCDS identifiers, procuring entities, amounts, deadlines, and tender categories at pay-per-event pricing. Integrate it with your supplier lead-gen pipeline for pennies per result.
Source: Buenos Aires Compras OCDS — flattened OCDS CSV at https://cdn.buenosaires.gob.ar/datosabiertos/datasets/ministerio-de-economia-y-finanzas/buenos-aires-compras/bac_anual.csv.
How it works
Two modes:
query (default)
Downloads bac_anual.csv (~55MB), parses all records, applies your filters (keywords, buyer, amount range, status, date range), and returns matching tenders. Each returned tender triggers a tender-matched event charge.
sync
Downloads bac_anual.csv, compares it against stored KVS state (licitaciones-feed-state). If the file hasn't changed (same Last-Modified header), exits with "no new data". If changed, returns only the new OCIDs (tenders not seen in previous runs) and updates the KVS. Each new tender triggers a tender-new event charge.
Input
| Field | Type | Default | Description |
|---|---|---|---|
mode | enum | "query" | "query" or "sync" |
sources | string[] | ["bac"] | Currently only "bac" |
keywords | string[] | [] | Case-insensitive OR match against title + description |
buyerName | string | — | Substring match on procuring entity |
minAmount | number | 0 | Minimum amount (ARS) |
maxAmount | number | — | Maximum amount (ARS). 0 = no limit. |
status | enum | "active" | "active", "complete", or "all" |
publishedAfter | string | — | ISO date filter (published on or after) |
publishedBefore | string | — | ISO date filter (published on or before) |
maxResults | int | 50 | Max results (1–1000) |
slackWebhookUrl | string (secret) | — | Slack incoming webhook URL. If set, sends a summary after runs with matched/new tenders. |
discordWebhookUrl | string (secret) | — | Discord channel webhook URL. Same trigger as Slack. |
notifyOnEmpty | boolean | false | Also notify when a run finds zero matched/new tenders |
Output (per tender)
| Field | Type | Description |
|---|---|---|
source | string | Always "bac" |
ocid | string | OCDS identifier (e.g. ocds-bulbcf-10002-0321-LPU26-1-0) |
processNumber | string | BAC process number (e.g. 10002-0321-LPU26) |
title | string | Tender title |
description | string | Tender description (may be empty) |
buyer | string | Procuring entity name |
buyerId | string|null | Buyer government unit code |
amount | number | Tender value in ARS (many BAC entries are 0.0) |
currency | string | Currency (always "ARS") |
status | string | Mapped: "active", "complete", "cancelled" |
procurementMethod | string|null | e.g. "LICITACION PUBLICA" |
category | string|null | e.g. "goods", "services" |
publishedAt | ISO|null | Tender period start date |
deadline | ISO|null | Tender period end date |
url | string|null | Pliego details URL on BAC portal |
sourceLastModified | string | HTTP Last-Modified of the CSV |
ingestedAt | ISO | When this record was processed |
Pricing
This actor uses pay-per-event pricing. You are never charged for zero-result queries, unchanged sync runs, or failed downloads.
| Event | Price | When charged |
|---|---|---|
tender-matched | $0.007 | Per tender returned in query mode (no charge for 0 results) |
tender-new | $0.02 | Per new tender detected in sync mode |
At $0.007–0.02 per tender, a 500-tender query costs $3.50–10. Monitoring licitaciones CABA weekly costs well under $1/month even in active periods.
Use cases
- Procurement monitoring — daily sync to catch new licitaciones and compras publicas in Buenos Aires
- Market research — keyword-search active tenders by category or buyer across public tenders Argentina (CABA)
- Supplier lead gen — find tenders matching specific goods/services; plug into your proveedores del estado pipeline
- Agent / LLM tool — plug into an MCP toolchain for contrataciones del estado and government procurement Argentina data
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 search Buenos Aires public procurement tenders 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/licitaciones-feed","--header","Authorization: Bearer <YOUR_API_TOKEN>"]}}}
Example agent prompts
- "Find all active IT services tenders from Buenos Aires Compras"
- "Check for new licitaciones in CABA since yesterday"
- "Pull all procurement tenders from the Buenos Aires health ministry over $1M ARS"
The actor returns structured OCDS JSON with the same fields shown above. Agentic workflows (Claude Code, Cursor, any MCP-compatible AI) can search government procurement Argentina tenders and match them against your product catalog in the same run.
Slack / Discord alerts
Set slackWebhookUrl and/or discordWebhookUrl in the input and the actor will POST a compact summary at the end of any run that returns matched (query) or new (sync) tenders — no extra actor, no polling, no Apify task webhook config needed. This is the natural pairing for sync mode on a daily schedule: run it once a day and get pinged only when something new shows up.
Behavior guarantees:
- Leave both fields empty → zero change in behavior, no network calls.
- By default, a run with zero matched/new tenders sends no notification. Set
notifyOnEmpty: trueto also get a "nothing found" ping (useful to confirm your schedule is still alive). - A webhook failure (bad URL, channel deleted, Slack/Discord outage) is logged as a warning and never fails the run — your dataset output and PPE charge are unaffected either way.
- Only up to 5 tenders are listed by name in the message body (the rest are summarized as "+N más" — the full list is always in the Apify dataset).
- Amount totals only count tenders with
amount > 0, since BAC frequently reports0.0— the message says how many of the listed tenders had a real amount.
Setup: Slack
- Go to api.slack.com/apps → Create New App → From scratch.
- Pick a name (e.g. "Licitaciones CABA") and your workspace.
- In the app's sidebar, open Incoming Webhooks → toggle it On.
- Click Add New Webhook to Workspace, pick the channel, Allow.
- Copy the URL (looks like
https://hooks.slack.com/services/T000/B000/XXXXXXXX) into this actor'sslackWebhookUrlinput field.
Setup: Discord
- In Discord, open the target channel's Settings → Integrations → Webhooks.
- Click New Webhook, name it, pick the channel, Copy Webhook URL.
- Paste the URL (looks like
https://discord.com/api/webhooks/000000/XXXXXXXX) into this actor'sdiscordWebhookUrlinput field.
Both fields are marked as secret inputs on the Apify platform (masked in the console UI and encrypted at rest) — but treat the URL like a password regardless: anyone who has it can post messages to your channel.
Example message (Slack, sync mode, 2 new tenders)
🆕 2 licitaciones nuevas — Buenos Aires Compras (BAC)Monto total (1 con monto informado): $2.500.000 ARS• Señales de Radio• Mantenimiento Edilicio — $2.500.000 ARS
(Titles render as clickable links to the tender's url when one is available — shown as plain text here.)
Example message (Discord, query mode, 2 matched tenders)
🔎 2 licitaciones encontradas — Buenos Aires Compras (BAC)┌─────────────────────────────────────────┐│ Licitaciones encontradas ││ ││ Señales de Radio ││ Monto no informado ││ ││ Mantenimiento Edilicio ││ Ver pliego — $2.500.000 ARS ││ ││ Monto total (1 con monto informado): ││ $2.500.000 ARS │└─────────────────────────────────────────┘
(The box above represents a Discord embed — "Ver pliego" is a clickable link to the tender's url.)
Limitations (v1)
- Data lag (critical): BAC publishes quarterly; the CSV on CDN may lag 7–17 weeks behind live tenders. This is a historical search / slow alert product, not a real-time feed.
- CABA only: no national COMPR.AR (ToS conflict), no Mendoza (6.5 months stale).
- Amounts often 0.0: many BAC entries have
tender/value/amount = 0.0. Filter with caution. - No award/contract data: v1 covers only the tender stage (awards/contracts live in
bac.csv, 2.5GB — v2 candidate). - Webhook alerts are best-effort: Slack/Discord delivery never blocks or fails a run (see Slack / Discord alerts above); the Apify dataset is always the source of truth.
- No items flattening: nested
tender/itemsdata is skipped in v1.
Attribution
Data source: Buenos Aires Compras — https://cdn.buenosaires.gob.ar/datosabiertos/datasets/ministerio-de-economia-y-finanzas/buenos-aires-compras/bac_anual.csv. Licensed under CC-BY-4.0. Government open data published by the City of Buenos Aires.
Changelog
See ./CHANGELOG.md.