# IDB Tenders Scraper — Latin America Procurement & Awards (`foxlabs/iadb-tenders`) Actor

Inter-American Development Bank (IDB/IADB) procurement notices: open tenders, RFPs, expressions of interest and contract awards across 26 Latin America & Caribbean countries. Filter by country, type, keyword, date. Bid documents, deadlines, sectors. B2G leads & tender intel.

- **URL**: https://apify.com/foxlabs/iadb-tenders.md
- **Developed by:** [Berkan Kaplan](https://apify.com/foxlabs) (community)
- **Categories:** Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.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.

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

<p align="center"><a href="https://apify.com/foxlabs/iadb-tenders"><img src="https://data.foxlabs.com.tr/img/iadb-tenders-banner.svg" alt="IDB Tenders Scraper banner" width="100%" /></a></p>

IDB Tenders Scraper pulls **public procurement notices from the [Inter-American Development Bank](https://www.iadb.org/) (IDB / IADB)** — open tenders, specific & general procurement notices, requests for expressions of interest (EOI), requests for information, and contract awards — straight from the official IDB open-data API. Get clean, structured JSON for **B2G lead generation, tender alerts, and procurement intelligence** across 26 Latin America & Caribbean countries.

The IDB is the largest source of development financing for Latin America & the Caribbean, funding billions in works, goods and consulting contracts every year. This actor turns that firehose into a filterable, always-fresh feed.

### Why use IDB Tenders Scraper?

- **Win public contracts** — surface live bidding opportunities in Brazil, Argentina, Mexico, Colombia, Peru and 21 more markets, filtered to your sector and country.
- **Tender alerts** — schedule the actor daily and pipe new notices into Slack, a CRM, or a spreadsheet via the Apify API and integrations.
- **Competitive / market intelligence** — pull `awarded` contracts to see who is winning what, in which sectors, under which procurement method.
- **Always fresh** — the underlying dataset is refreshed daily; this is live data, not a stale snapshot.
- **Clean & structured** — bilingual titles, project metadata, deadlines, sectors and direct document links, normalised into flat JSON.

### How to use IDB Tenders Scraper

1. Click **Try for free**.
2. Pick **What to fetch** — *Open opportunities* (default) or *Contract awards*.
3. Optionally narrow by **Countries** (UPPERCASE English names like `BRAZIL`, `PERU`), a **Keyword** (e.g. `water`, `road`, `agua`), and a **Date range**.
4. Set **Max results** to control cost, then **Start**.
5. Download the results as **JSON, CSV, Excel, or HTML**, or pull them via the Apify API.

### Input

| Field | Description |
|---|---|
| What to fetch | `open` (soliciting), `awarded` (winners), or `all` |
| Countries | English UPPERCASE country names; empty = all 26 members |
| Keyword | Full-text search (bilingual — try local-language terms) |
| Date range | Presets (last 24h → all time) or a custom From/To window |
| Max results | Hard cap on rows (0 = unlimited) |
| Notice types (advanced) | Override status with exact types (SPECIFIC, GENERAL, EOI, RFI, AWARD) |

### Output

Each notice is one record. You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.

```json
{
  "id": "38155",
  "noticeType": "SPECIFIC",
  "noticeTitle": "REHABILITACIÓN DEL RESERVORIO DE AGUA CRUDA 2 ...",
  "noticeDate": "2026-06-18",
  "deadline": "2026-07-27",
  "country": "ECUADOR",
  "projectNumber": "EC-L1242",
  "projectName": "Programa de Agua Potable y Alcantarillado para Quito",
  "loanNumber": "4759/OC-EC",
  "category": "Works",
  "procurementMethod": "National Competitive Bidding",
  "sector": "WATER AND SANITATION",
  "sectorLocal": "AGUA Y SANEAMIENTO",
  "projectStatus": "ACTIVE",
  "processDescription": "Rehabilitación del reservorio de la PTAP ...",
  "documentUrl": "https://idbdocs.iadb.org/wsdocs/getdocument.aspx?docnum=EZIDB0000233-1870518613-2153",
  "projectUrl": "https://www.iadb.org/en/project/EC-L1242",
  "source": "Inter-American Development Bank (IDB) Procurement Notices (CC-BY 4.0)",
  "scrapedAt": "2026-06-19T15:30:00.000Z"
}
````

### Data fields

| Field | Description |
|---|---|
| `id` | IDB notice ID |
| `noticeType` | SPECIFIC, GENERAL, EOI, REQUEST FOR INFORMATION, or AWARD |
| `noticeTitle` | Notice title (original language) |
| `noticeDate` | Publication date (YYYY-MM-DD) |
| `deadline` | Submission deadline (when published) |
| `country` | Borrowing country |
| `projectNumber` / `projectName` / `projectUrl` | Parent IDB project |
| `loanNumber` | IDB loan/operation number |
| `category` | Works, Goods, Consultant Services, … |
| `procurementMethod` | e.g. International Competitive Bidding |
| `sector` / `sectorLocal` | Sector in English / original language |
| `projectStatus` | Project status |
| `processDescription` | Short description of the process |
| `documentUrl` | Direct link to the notice document |
| `source` | Provenance + licence |

### How much does it cost to scrape IDB tenders?

The actor reads a lightweight JSON API, so runs are fast and cheap — pulling a few hundred notices costs a small fraction of a compute unit plus the per-result price shown on this page. Use **Max results** and a tight **Date range** to keep costs predictable.

### Tips

- For daily **tender alerts**, set Date range = *Last 24 hours* and schedule the actor every morning.
- For **market intelligence**, set What to fetch = *Contract awards* and a wide date range.
- Keyword search is bilingual — combine English and Spanish/Portuguese terms for full coverage.
- Country names must be the IDB English spelling in UPPERCASE; case is normalised for you but spelling must match.

### FAQ, disclaimers & support

- **Is this legal / official?** Yes. Data comes from the IDB's official open-data portal and is published under **Creative Commons Attribution 4.0 (CC-BY 4.0)**, which permits commercial reuse with attribution. This actor is not affiliated with or endorsed by the IDB.
- **How fresh is the data?** The source dataset is refreshed daily.
- **Coverage?** ~36,000 historical and current notices across all 26 IDB member countries in Latin America & the Caribbean.
- **Found a bug or need a field?** Open an issue on the actor's **Issues** tab — feedback and custom-solution requests are welcome.

***

### More foXLabs data tools

This Actor is part of the **[foXLabs data platform](https://data.foxlabs.com.tr/)** — a suite of public-data scrapers for company intelligence, procurement, financial and AI-search visibility data. Browse the full Actor suite and free how-to guides at **[data.foxlabs.com.tr](https://data.foxlabs.com.tr/)**.

# Actor input Schema

## `status` (type: `string`):

Open opportunities are still soliciting (specific & general notices, expressions of interest, RFIs — deadline usually filled). Awards are closed contracts (who won — market intelligence).

## `countries` (type: `array`):

Filter by borrowing country, using the IDB English country name in UPPERCASE (e.g. BRAZIL, ARGENTINA, ECUADOR, COLOMBIA, PERU, MEXICO, JAMAICA, BARBADOS). Case is normalised automatically. Leave empty for all 26 member countries. Each country is queried separately.

## `searchTerm` (type: `string`):

Optional full-text search across the notice title, project and description (e.g. 'water', 'road', 'solar', 'consulting'). Notices are bilingual (Spanish/Portuguese/English) — try local-language terms too ('agua', 'carretera'). Leave empty to skip.

## `datePreset` (type: `string`):

Quick filter on the notice publication date. Pick 'Custom' to use the From/To fields below. Choose 'All time' to ignore dates.

## `dateFrom` (type: `string`):

YYYY-MM-DD (e.g. 2026-05-01). Only used when Date range = Custom.

## `dateTo` (type: `string`):

YYYY-MM-DD. Only used when Date range = Custom. Leave empty for 'today'.

## `maxResults` (type: `integer`):

Hard cap on dataset rows (across all selected countries). Helps control cost. Set to 0 for unlimited.

## `noticeTypes` (type: `array`):

Override 'What to fetch' with exact notice types. Leave empty to use the Status option above.

## Actor input object example

```json
{
  "status": "open",
  "countries": [],
  "datePreset": "last_30_days",
  "maxResults": 500,
  "noticeTypes": []
}
```

# Actor output Schema

## `dataset` (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 = {
    "countries": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("foxlabs/iadb-tenders").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 = { "countries": [] }

# Run the Actor and wait for it to finish
run = client.actor("foxlabs/iadb-tenders").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 '{
  "countries": []
}' |
apify call foxlabs/iadb-tenders --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "IDB Tenders Scraper — Latin America Procurement & Awards",
        "description": "Inter-American Development Bank (IDB/IADB) procurement notices: open tenders, RFPs, expressions of interest and contract awards across 26 Latin America & Caribbean countries. Filter by country, type, keyword, date. Bid documents, deadlines, sectors. B2G leads & tender intel.",
        "version": "0.1",
        "x-build-id": "f2lCt1KxasRPWxx6q"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/foxlabs~iadb-tenders/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-foxlabs-iadb-tenders",
                "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/foxlabs~iadb-tenders/runs": {
            "post": {
                "operationId": "runs-sync-foxlabs-iadb-tenders",
                "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/foxlabs~iadb-tenders/run-sync": {
            "post": {
                "operationId": "run-sync-foxlabs-iadb-tenders",
                "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": {
                    "status": {
                        "title": "What to fetch",
                        "enum": [
                            "open",
                            "awarded",
                            "all"
                        ],
                        "type": "string",
                        "description": "Open opportunities are still soliciting (specific & general notices, expressions of interest, RFIs — deadline usually filled). Awards are closed contracts (who won — market intelligence).",
                        "default": "open"
                    },
                    "countries": {
                        "title": "Countries",
                        "type": "array",
                        "description": "Filter by borrowing country, using the IDB English country name in UPPERCASE (e.g. BRAZIL, ARGENTINA, ECUADOR, COLOMBIA, PERU, MEXICO, JAMAICA, BARBADOS). Case is normalised automatically. Leave empty for all 26 member countries. Each country is queried separately.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "searchTerm": {
                        "title": "Keyword (full-text search)",
                        "type": "string",
                        "description": "Optional full-text search across the notice title, project and description (e.g. 'water', 'road', 'solar', 'consulting'). Notices are bilingual (Spanish/Portuguese/English) — try local-language terms too ('agua', 'carretera'). Leave empty to skip."
                    },
                    "datePreset": {
                        "title": "Date range (by publication date)",
                        "enum": [
                            "last_24_hours",
                            "last_7_days",
                            "last_30_days",
                            "last_90_days",
                            "last_year",
                            "ytd",
                            "all_time",
                            "custom"
                        ],
                        "type": "string",
                        "description": "Quick filter on the notice publication date. Pick 'Custom' to use the From/To fields below. Choose 'All time' to ignore dates.",
                        "default": "last_30_days"
                    },
                    "dateFrom": {
                        "title": "Custom from date",
                        "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}$",
                        "type": "string",
                        "description": "YYYY-MM-DD (e.g. 2026-05-01). Only used when Date range = Custom."
                    },
                    "dateTo": {
                        "title": "Custom to date",
                        "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}$",
                        "type": "string",
                        "description": "YYYY-MM-DD. Only used when Date range = Custom. Leave empty for 'today'."
                    },
                    "maxResults": {
                        "title": "Max results",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Hard cap on dataset rows (across all selected countries). Helps control cost. Set to 0 for unlimited.",
                        "default": 500
                    },
                    "noticeTypes": {
                        "title": "Advanced — specific notice types",
                        "type": "array",
                        "description": "Override 'What to fetch' with exact notice types. Leave empty to use the Status option above.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "SPECIFIC",
                                "GENERAL",
                                "EOI",
                                "REQUEST FOR INFORMATION",
                                "AWARD"
                            ],
                            "enumTitles": [
                                "Specific procurement notice",
                                "General procurement notice",
                                "Expression of interest (EOI)",
                                "Request for information (RFI)",
                                "Contract award"
                            ]
                        },
                        "default": []
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
