# LatAm Official Gazette Monitor: Diário Oficial, DOF, Boletín (`frankely84/latam-official-gazette-monitor`) Actor

Keyword search & daily alerts in Latin American official gazettes: Brazil municipal Diários Oficiais, Mexico DOF, Buenos Aires Boletín Oficial. Tenders, regulations, concessions. Official open-data APIs. $2 per 1,000 publications.

- **URL**: https://apify.com/frankely84/latam-official-gazette-monitor.md
- **Developed by:** [Frankelys Hernandez](https://apify.com/frankely84) (community)
- **Categories:** Lead generation, Business, News
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$2.00 / 1,000 publications

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/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## LatAm Official Gazette Monitor – Diário Oficial, DOF & Boletín Oficial (keyword alerts)

**Search and monitor Latin American official gazettes by keyword and date range.** One Actor, one clean JSON schema for **Brazil's municipal Diários Oficiais** (hundreds of cities indexed by Querido Diário), **Mexico's Diario Oficial de la Federación (DOF)** and the **Boletín Oficial de la Ciudad de Buenos Aires**. Get tenders (licitações / licitaciones), concessions, regulations, appointments, public contests and more – with **daily alerts that return only new publications**.

🇬🇧 [English](#english) · 🇪🇸 [Español](#español) · 🇧🇷 [Português](#português)

***

### English

#### What can it do?

- 🔎 **Keyword search** across official gazettes (accent-insensitive, exact phrases with quotes).
- 📅 **Any date range** (`dateFrom`/`dateTo`) or simply the **last N days**.
- 🔔 **Alert mode** (`onlyNew`): schedule it daily and get only publications you haven't seen yet – perfect for email/Slack/Make/Zapier/n8n alerts.
- 🇧🇷 Filter Brazil by **state (UF)** or **municipality (IBGE code)**.
- 🧾 Output: date, gazette, jurisdiction, edition, section, document type, number, issuer, title, keyword **excerpts**, matched keywords and links to the official PDF / text.

#### Use cases

Government tender & procurement monitoring (**licitações, pregão eletrônico, licitación pública**), regulatory & compliance tracking, legal research, lobbying/public affairs, journalism, B2G sales lead generation, monitoring mentions of your company or brand in official gazettes.

#### Input example

```json
{ "keywords": ["\"pregão eletrônico\" software", "licitación"], "sources": ["BR_MUNICIPAL", "MX_DOF", "AR_CABA"],
  "lastDays": 1, "onlyNew": true, "monitorName": "software-tenders", "brazilStates": ["SP", "MG"] }
```

#### Output example

```json
{ "publishedAt": "2026-10-27", "country": "BR", "gazette": "Diário Oficial Municipal",
  "jurisdiction": "São Francisco de Paula - RS", "edition": "711",
  "title": "Diário Oficial de São Francisco de Paula (RS) 2026-10-27 – Ed. 711",
  "excerpts": ["LICITAÇÃO Nº 100/2026, PREGÃO ELETRÔNICO Nº 70/2026 ..."], "matchedKeywords": ["pregão eletrônico"],
  "url": "https://data.queridodiario.ok.org.br/.../871682bb.pdf", "textUrl": "https://data.queridodiario.ok.org.br/.../871682bb.txt",
  "source": "Querido Diário – Open Knowledge Brasil (CC BY 4.0)" }
```

#### Pricing

Pay-per-event: **$0.002 per publication returned** ($2 / 1,000). No start fee. Empty runs cost almost nothing.

#### Sources (official / open data)

| Gazette | Source | Coverage |
|---|---|---|
| Brazil – municipal Diários Oficiais | [Querido Diário](https://queridodiario.ok.org.br) API (Open Knowledge Brasil, CC BY 4.0) | Hundreds of municipalities (growing), full text |
| Mexico – Diario Oficial de la Federación | [SIDOF open-data web services](https://sidof.segob.gob.mx/datos_abiertos) (SEGOB) | All federal notes, daily |
| Argentina – Boletín Oficial CABA | [Official public REST API](https://api-restboletinoficial.buenosaires.gob.ar/api/doc/) (GCBA) | All City of Buenos Aires acts |

Attribution is included in every item (`source`). This Actor is not affiliated with any government. Publications are reproduced for information; the official PDF is authoritative. Roadmap: more gazettes when reliable open APIs exist.

#### FAQ

**How do alerts work?** With `onlyNew: true` the Actor stores IDs already returned under `monitorName`; schedule it (e.g. daily) and connect a webhook/integration.
**Is it legal?** It uses only official open-data APIs and open licences; official acts are public information.

***

### Español

**Monitor de boletines y diarios oficiales de Latinoamérica**: busca por palabras clave y rango de fechas en el **Diario Oficial de la Federación (DOF, México)**, el **Boletín Oficial de la Ciudad de Buenos Aires** y los **Diários Oficiais municipales de Brasil**. Ideal para **monitoreo de licitaciones**, cumplimiento normativo, concesiones, nombramientos, investigación legal y generación de leads B2G.

- Búsqueda sin acentos, frases exactas entre comillas.
- Rango de fechas o últimos N días.
- **Modo alerta**: programa una ejecución diaria y recibe solo publicaciones nuevas.
- **$0,002 por publicación** (US$2 por mil), sin costo de inicio.
- Fuentes oficiales y abiertas, con atribución en cada registro.

***

### Português

**Monitor de Diários Oficiais**: busque por palavras-chave e período nos **Diários Oficiais municipais do Brasil** (centenas de municípios via Querido Diário), no **DOF do México** e no **Boletim Oficial de Buenos Aires**. Perfeito para **monitorar licitações, pregão eletrônico, dispensas, contratos**, nomeações, concursos e menções à sua empresa.

- Filtro por estado (UF) e município (código IBGE).
- Trechos (excertos) com as palavras encontradas + links para PDF e texto.
- **Modo alerta**: agende diariamente e receba só publicações novas (integração com e-mail, Slack, Make, Zapier, n8n).
- **US$ 0,002 por publicação**, sem taxa de início.

# Actor input Schema

## `keywords` (type: `array`):

Words or phrases to search (OR between items). Use quotes for exact phrases, e.g. "pregão eletrônico". Accent-insensitive. Leave empty to get every publication in the range (capped by Max items).

## `sources` (type: `array`):

BR_MUNICIPAL = Brazil municipal Diários Oficiais (Querido Diário); MX_DOF = Mexico Diario Oficial de la Federación; AR_CABA = Boletín Oficial de la Ciudad de Buenos Aires.

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

Start date (YYYY-MM-DD). If empty, uses 'Last N days'.

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

End date (YYYY-MM-DD). Default: today.

## `lastDays` (type: `integer`):

Used when Date from is empty. 1 = today only.

## `onlyNew` (type: `boolean`):

Remember what was already returned (per monitor name) and output only new publications. Schedule the Actor daily for alerts.

## `monitorName` (type: `string`):

Name of this alert (keeps a separate memory of seen publications).

## `brazilStates` (type: `array`):

Optional filter for Brazil, e.g. SP, RJ, MG.

## `brazilTerritoryIds` (type: `array`):

Optional IBGE 7-digit codes, e.g. 3550308 (São Paulo), 3509502 (Campinas).

## `maxItems` (type: `integer`):

Maximum publications to return (and charge) per run.

## Actor input object example

```json
{
  "keywords": [
    "licitação",
    "licitación",
    "concesión"
  ],
  "sources": [
    "BR_MUNICIPAL",
    "MX_DOF",
    "AR_CABA"
  ],
  "lastDays": 3,
  "onlyNew": false,
  "monitorName": "default",
  "maxItems": 1000
}
```

# Actor output Schema

## `publications` (type: `string`):

Matching publications (overview).

## `publicationsDetailed` (type: `string`):

All fields including excerpts and links.

## `summary` (type: `string`):

Counts per gazette.

# 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 = {
    "keywords": [
        "licitação",
        "licitación",
        "concesión"
    ],
    "sources": [
        "BR_MUNICIPAL",
        "MX_DOF",
        "AR_CABA"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("frankely84/latam-official-gazette-monitor").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 = {
    "keywords": [
        "licitação",
        "licitación",
        "concesión",
    ],
    "sources": [
        "BR_MUNICIPAL",
        "MX_DOF",
        "AR_CABA",
    ],
}

# Run the Actor and wait for it to finish
run = client.actor("frankely84/latam-official-gazette-monitor").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "keywords": [
    "licitação",
    "licitación",
    "concesión"
  ],
  "sources": [
    "BR_MUNICIPAL",
    "MX_DOF",
    "AR_CABA"
  ]
}' |
apify call frankely84/latam-official-gazette-monitor --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,frankely84/latam-official-gazette-monitor"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/U7yQh1SdWOTK9WVg4/builds/TuWZgs4Mc2kTTfPs9/openapi.json
