# CMF Chile Issuer & Disclosure Scraper (`jungle_synthesizer/cmf-issuer-chile-disclosure-scraper`) Actor

Scrapes public issuer filings, hechos esenciales (material disclosures), and director data from Chile's Comisión para el Mercado Financiero (CMF). Covers ~500 listed issuers on the securities market (RVEMI). No login required.

- **URL**: https://apify.com/jungle\_synthesizer/cmf-issuer-chile-disclosure-scraper.md
- **Developed by:** [BowTiedRaccoon](https://apify.com/jungle_synthesizer) (community)
- **Categories:** Business, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event

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

## CMF Chile Issuer & Disclosure Scraper

Scrapes public issuer profiles and material disclosures (hechos esenciales) from [Chile's Comisión para el Mercado Financiero (CMF)](https://www.cmfchile.cl). Returns registered entities with RUT, sector classification, directors, CEO, and financial statement links — or a rolling seven-day feed of all regulatory filings across the market.

---

### CMF Chile Scraper Features

- Extracts all ~1,134 RVEMI issuers (listed securities companies) from the CMF public registry
- Collects issuer identification data — razón social, RUT, trading name, domicilio, ciudad, región
- Returns board of directors with individual roles, and CEO identification where available
- Scrapes published financial statement URLs (EEFF) for each issuer
- Pulls the last 7 days of hechos esenciales (material disclosures) across all entities in one run
- Two operating modes — issuer profiles or recent filings — configurable via a single input field
- No browser required. No proxies needed. CMF is a government portal with no anti-bot measures.

---

### What Can You Do With CMF Data?

- **Investment research teams** — pull fresh issuer profiles and filing alerts without monitoring the CMF portal manually
- **Compliance and legal teams** — track material disclosures filed by Chilean listed companies for due diligence workflows
- **Data vendors and aggregators** — build a structured, queryable dataset of Chilean securities market participants
- **Fintech developers** — feed issuer registry data into applications that need company identity verification or board composition data
- **Academic and policy researchers** — study corporate governance patterns, director networks, or disclosure frequency across Chile's public markets

---

### How CMF Chile Scraper Works

1. **Pick a mode.** Set `mode` to `"filings"` for recent hechos esenciales or `"issuers"` for full issuer profiles.
2. **Filings mode** hits the `hechos_portada.php` feed, which CMF publishes in real time. One page, no pagination — returns every filing from the last seven days.
3. **Issuers mode** starts from the full entity listing, filters to your target type (default: RVEMI), and walks a four-step chain: listing → identification tab → directors tab → financial statements tab. Three to four requests per issuer.
4. Results land in the Apify dataset — structured JSON, consistent field names, ready to export or pipe into downstream tools.

---

### Input

```json
{
  "maxItems": 50,
  "mode": "filings"
}
````

| Field | Type | Default | Description |
|-------|------|---------|-------------|
| `maxItems` | integer | `10` | Maximum number of records to return |
| `mode` | string | `"filings"` | Scrape mode: `"filings"` for recent disclosures, `"issuers"` for issuer profiles |
| `issuer_type` | string | `"RVEMI"` | Issuer type filter (issuers mode only). `RVEMI` = public securities issuers |

**Issuers mode example:**

```json
{
  "maxItems": 100,
  "mode": "issuers",
  "issuer_type": "RVEMI"
}
```

***

### CMF Chile Scraper Output Fields

#### Filings Mode

Returns one record per disclosure filed in the last seven days.

```json
{
  "source": "filings",
  "issuer_name": "BANCO DE CHILE",
  "rut": null,
  "ticker": null,
  "filing_type": "Hecho Esencial",
  "filing_date": "11/05/2026 - 09:14",
  "title": "N 1234 - Hecho Esencial",
  "description": "Hecho Esencial",
  "attachments": "https://www.cmfchile.cl/sitio/aplic/serdoc/ver_sgd.php?s=...",
  "scraped_at": "2026-05-11T05:34:49.000Z"
}
```

| Field | Type | Description |
|-------|------|-------------|
| `source` | string | Always `"filings"` in this mode |
| `issuer_name` | string | Issuer legal name as listed on the filing |
| `rut` | string | Chilean tax ID (null in filings mode) |
| `filing_type` | string | Disclosure category (e.g. Hecho Esencial, Estado Financiero) |
| `filing_date` | string | Filing submission date and time |
| `title` | string | Document number or filing title |
| `description` | string | Subject matter of the disclosure |
| `attachments` | string | URL to the filing document |
| `scraped_at` | string | ISO timestamp of when the record was scraped |

#### Issuers Mode

Returns one record per issuer, assembled from four CMF pages.

```json
{
  "source": "issuers",
  "issuer_id": "96806890-6",
  "issuer_name": "BANCO SANTANDER-CHILE",
  "ticker": "BSANTANDER",
  "rut": "96806890-6",
  "sector": "Emisores de Valores de Oferta Publica",
  "fiscal_period": "202412",
  "ceo": "Matias Sanchez Morales",
  "board": "Ricardo Awad Brandao (Director); Claudio Melandri Hinojosa (Presidente)",
  "detail_url": "https://www.cmfchile.cl/institucional/mercados/entidad.php?...",
  "eeff_url": "https://www.cmfchile.cl/sitio/aplic/serdoc/ver_sgd.php?s=...",
  "vigencia": "Vigente",
  "domicilio": "Bandera 140, Piso 3",
  "ciudad": "Santiago",
  "region": "Metropolitana de Santiago",
  "revenue_clp": null,
  "operating_income_clp": null,
  "net_income_clp": null,
  "equity_clp": null,
  "scraped_at": "2026-05-11T05:34:49.000Z"
}
```

| Field | Type | Description |
|-------|------|-------------|
| `source` | string | Always `"issuers"` in this mode |
| `issuer_id` | string | CMF internal identifier (RUT) |
| `issuer_name` | string | Issuer legal name (razon social) |
| `ticker` | string | Stock exchange trading name (nemotecnico) |
| `rut` | string | Chilean tax ID |
| `sector` | string | Entity type classification |
| `vigencia` | string | Registration status: `Vigente` (active) or `No Vigente` |
| `fiscal_period` | string | Most recent EEFF period (e.g. `202412`) |
| `ceo` | string | Chief Executive Officer name |
| `board` | string | Directors, each as `Name (Role)`, semicolon-separated |
| `detail_url` | string | URL to the CMF issuer detail page |
| `eeff_url` | string | URL to the most recent published financial statements |
| `domicilio` | string | Registered street address |
| `ciudad` | string | City of registration |
| `region` | string | Region of registration |
| `revenue_clp` | number | Always null — financial figures are in XML/PDF files, not HTML |
| `operating_income_clp` | number | Always null |
| `net_income_clp` | number | Always null |
| `equity_clp` | number | Always null |
| `scraped_at` | string | ISO timestamp of when the record was scraped |

***

### FAQ

#### How do I scrape CMF Chile issuer data?

CMF Chile Scraper runs against the CMF public portal at cmfchile.cl. Set `mode` to `"issuers"` and `issuer_type` to `"RVEMI"` for listed public companies, then set `maxItems` to however many records you need. The registry has around 1,134 RVEMI entities.

#### How much does CMF Chile Scraper cost to run?

Pricing is $0.10 per start plus $0.00125 per record. A full run of all 1,134 RVEMI issuers costs roughly $1.52 in data charges.

#### What is a hecho esencial?

A material disclosure — a regulatory filing that Chilean listed companies must submit to CMF when something significant happens: acquisitions, board changes, credit downgrades, earnings surprises. The filings mode returns everything filed in the last seven days, across all registered entities.

#### Does CMF Chile Scraper need proxies?

No. CMF is a Chilean government financial regulator. The portal has no CAPTCHA, no rate limiting, and no anti-bot measures on the public pages. Standard HTTP requests work fine.

#### Can I get financial figures like revenue and net income?

CMF Chile Scraper returns links to the EEFF documents (financial statements), but not the figures themselves. Revenue, income, and equity data live inside XML and PDF files — the scraper's output includes the `eeff_url` field pointing to the most recent one.

***

### Need More Features?

Need historical filings beyond seven days, financial figure extraction, or a different issuer type? [File an issue](https://console.apify.com/actors/issues) or get in touch.

### Why Use CMF Chile Scraper?

- **No proxies, no browser** — the CMF portal is fully accessible via standard HTTP, which keeps runs fast and cheap
- **Two modes, one tool** — monitoring recent filings and building an issuer registry are different workflows; this actor handles both without configuration gymnastics
- **Clean field structure** — flat JSON output with consistent field names, so the data lands in your database without a cleanup pass

# Actor input Schema

## `sp_intended_usage` (type: `string`):

Please describe how you plan to use the data extracted by this crawler.

## `sp_improvement_suggestions` (type: `string`):

Provide any feedback or suggestions for improvements.

## `sp_contact` (type: `string`):

Provide your email address so we can get in touch with you.

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

Maximum number of records to return (issuers or filings)

## `mode` (type: `string`):

What to scrape: 'issuers' for issuer profiles, 'filings' for recent hechos esenciales (last 7 days)

## `issuer_type` (type: `string`):

Filter issuers by type (only used in 'issuers' mode). 'RVEMI' = public securities issuers (listed companies)

## Actor input object example

```json
{
  "sp_intended_usage": "Describe your intended use...",
  "sp_improvement_suggestions": "Share your suggestions here...",
  "sp_contact": "Share your email here...",
  "maxItems": 10,
  "mode": "filings",
  "issuer_type": "RVEMI"
}
```

# Actor output Schema

## `results` (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 = {
    "sp_intended_usage": "Describe your intended use...",
    "sp_improvement_suggestions": "Share your suggestions here...",
    "sp_contact": "Share your email here...",
    "maxItems": 10,
    "mode": "filings",
    "issuer_type": "RVEMI"
};

// Run the Actor and wait for it to finish
const run = await client.actor("jungle_synthesizer/cmf-issuer-chile-disclosure-scraper").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 = {
    "sp_intended_usage": "Describe your intended use...",
    "sp_improvement_suggestions": "Share your suggestions here...",
    "sp_contact": "Share your email here...",
    "maxItems": 10,
    "mode": "filings",
    "issuer_type": "RVEMI",
}

# Run the Actor and wait for it to finish
run = client.actor("jungle_synthesizer/cmf-issuer-chile-disclosure-scraper").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 '{
  "sp_intended_usage": "Describe your intended use...",
  "sp_improvement_suggestions": "Share your suggestions here...",
  "sp_contact": "Share your email here...",
  "maxItems": 10,
  "mode": "filings",
  "issuer_type": "RVEMI"
}' |
apify call jungle_synthesizer/cmf-issuer-chile-disclosure-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=jungle_synthesizer/cmf-issuer-chile-disclosure-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "CMF Chile Issuer & Disclosure Scraper",
        "description": "Scrapes public issuer filings, hechos esenciales (material disclosures), and director data from Chile's Comisión para el Mercado Financiero (CMF). Covers ~500 listed issuers on the securities market (RVEMI). No login required.",
        "version": "0.1",
        "x-build-id": "VhOXPSxMlszb7rf0N"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/jungle_synthesizer~cmf-issuer-chile-disclosure-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-jungle_synthesizer-cmf-issuer-chile-disclosure-scraper",
                "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/jungle_synthesizer~cmf-issuer-chile-disclosure-scraper/runs": {
            "post": {
                "operationId": "runs-sync-jungle_synthesizer-cmf-issuer-chile-disclosure-scraper",
                "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/jungle_synthesizer~cmf-issuer-chile-disclosure-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-jungle_synthesizer-cmf-issuer-chile-disclosure-scraper",
                "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",
                "required": [
                    "maxItems"
                ],
                "properties": {
                    "sp_intended_usage": {
                        "title": "What is the intended usage of this data?",
                        "minLength": 1,
                        "type": "string",
                        "description": "Please describe how you plan to use the data extracted by this crawler."
                    },
                    "sp_improvement_suggestions": {
                        "title": "How can we improve this crawler for you?",
                        "minLength": 1,
                        "type": "string",
                        "description": "Provide any feedback or suggestions for improvements."
                    },
                    "sp_contact": {
                        "title": "Contact Email",
                        "minLength": 1,
                        "type": "string",
                        "description": "Provide your email address so we can get in touch with you."
                    },
                    "maxItems": {
                        "title": "Max Items",
                        "type": "integer",
                        "description": "Maximum number of records to return (issuers or filings)",
                        "default": 10
                    },
                    "mode": {
                        "title": "Scrape Mode",
                        "enum": [
                            "issuers",
                            "filings"
                        ],
                        "type": "string",
                        "description": "What to scrape: 'issuers' for issuer profiles, 'filings' for recent hechos esenciales (last 7 days)",
                        "default": "filings"
                    },
                    "issuer_type": {
                        "title": "Issuer Type Filter",
                        "type": "string",
                        "description": "Filter issuers by type (only used in 'issuers' mode). 'RVEMI' = public securities issuers (listed companies)",
                        "default": "RVEMI"
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
