# CySEC (`maximedupre/cysec`) Actor

Search the public CySEC investment-firm register by firm name, license type, license number, or dates. Get normalized records with status, authorized services, financial instruments, office details, and source URLs. Include published revoked and withdrawn entries when needed.

- **URL**: https://apify.com/maximedupre/cysec.md
- **Developed by:** [Maxime Dupré](https://apify.com/maximedupre) (community)
- **Categories:** Developer tools, Automation
- **Stats:** 2 total users, 1 monthly users, 66.7% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$2.70 / 1,000 investment licenses

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 web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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

### 🔎 CySEC investment-firm register

Built for compliance teams, risk analysts, and developers, this Actor reads the public CySEC investment-firm register at run time. It saves one normalized row for each first eligible register entry, with the firm name, license number and type, status, license dates, authorized services, financial instruments, office details, and source URL. Use it to check published license details, review active and former firms, or pass register data to a downstream workflow.

- Search license issue dates with **[CySEC License Issue Date Search](https://apify.com/maximedupre/cysec/examples/cysec-license-issue-date-search)**.
- List revoked entries with **[CySEC Revoked License List](https://apify.com/maximedupre/cysec/examples/cysec-revoked-license-list)**.
- Find a license by number with **[CySEC License Number Search](https://apify.com/maximedupre/cysec/examples/cysec-license-number-search)**.
- Look up a known firm with **[CySEC License Lookup](https://apify.com/maximedupre/cysec/examples/cysec-license-lookup)**.
- Browse regulated firms with **[CySEC Regulated Entities List](https://apify.com/maximedupre/cysec/examples/cysec-regulated-entities-list)**.
- Review the public register with **[CySEC Investment Firm Register](https://apify.com/maximedupre/cysec/examples/cysec-investment-firm-register)**.
- Review entries for a forex search with **[CySEC Forex](https://apify.com/maximedupre/cysec/examples/cysec-forex)**.

#### 📋 CySEC license records

Each dataset row describes one public investment-firm register entry. It includes the firm identity, license details, status, dates, authorized services, financial instruments, office data, responsible persons, parent entities, regulatory actions, and the CySEC source URL. The Actor keeps source values such as `unknown`, `null`, or empty arrays when the register does not provide a detail. If the same source entry appears again during a run, the first eligible occurrence is saved and later matches are ignored.

#### ▶️ Run a CySEC register search

**How to run**

1. Enter any optional filters in the input form.
2. Leave `includeRevoked` off to exclude source-published revoked and withdrawn entries.
3. Turn on `includeRevoked` before using the revocation date filters.
4. Set `maxItems` when you want to stop after a positive number of matching records. Leaving it empty returns all available results until the source is exhausted.
5. Start the Actor and open the `Dataset URL` output to view the saved rows.

The Actor reads the public CySEC source at run time. It does not need a source login. Each run uses one set of filters, so start separate runs for separate filter combinations.

#### ⚙️ Input

Use one set of filters per run.

**Input fields**

| Field | Type | What it does |
| --- | --- | --- |
| `firmName` | string | Filters by an investment firm name. Matching is not case-sensitive. Leave blank to include all firm names. |
| `licenseType` | string | Filters by a license or authorization type as it appears in the register. Leave blank to include all types. |
| `licenseNumber` | string | Filters by one license or registry number. Leave blank to include all numbers. |
| `issuedFrom` | date string | Keeps licenses issued on or after this `YYYY-MM-DD` date. |
| `issuedTo` | date string | Keeps licenses issued on or before this `YYYY-MM-DD` date. |
| `includeRevoked` | boolean | Includes source-published revoked and withdrawn entries when on. It defaults to `false`. Revocation date filters work only when this is on. |
| `revokedFrom` | date string | Keeps included history entries with a published revocation date on or after this `YYYY-MM-DD` date. |
| `revokedTo` | date string | Keeps included history entries with a published revocation date on or before this `YYYY-MM-DD` date. |
| `maxItems` | integer | Stops after this many matching records. It is prefilled with `16`. Leaving it empty returns all available results until the source is exhausted. The schema sets no upper bound. |

**Example input**

This is the public input from the successful current-beta default-input run.

```json
{
  "includeRevoked": false,
  "maxItems": 16
}
```

#### 🧾 Output

**Dataset link**

| Field | Type | What it does |
| --- | --- | --- |
| `results` | URL string | Links to the default dataset view with successful CySEC investment-firm license records. |

**License row**

The default dataset uses one row shape. Nested paths use `.` and `[]` means each array member. A source value can be `null`, empty, or `unknown` when CySEC does not publish it.

| Field | Type | What it does |
| --- | --- | --- |
| `firmName` | string | Gives the investment firm name published in the register. |
| `licenseNumber` | string | Gives the published license or registry number. |
| `licenseType` | string | Gives the published license or authorization type. |
| `status` | string | Gives the published license status. |
| `issueDate` | string | Gives the license issue date, or `unknown` when it is not published. |
| `revocationDate` | string | Gives the revocation or withdrawal date, or `unknown` when it is not published. |
| `authorizedServices` | string\[] | Lists published authorized financial services. |
| `financialInstruments` | string\[] | Lists published financial instruments. |
| `registeredOffice` | object | Holds the published registered office details. |
| `registeredOffice.address` | string | Gives the office street address. |
| `registeredOffice.city` | string | Gives the office city. |
| `registeredOffice.postalCode` | string | Gives the office postal code. |
| `registeredOffice.country` | string | Gives the office country. |
| `registrationCountry` | string | Gives the firm's registration country. |
| `responsiblePersons` | object\[] | Lists published directors or other responsible persons. |
| `responsiblePersons[].name` | string | Gives a responsible person's name. |
| `responsiblePersons[].role` | string | Gives the person's published role. |
| `parentEntities` | object\[] | Lists published parent or controlling entities. |
| `parentEntities[].name` | string | Gives a parent or controlling entity name. |
| `parentEntities[].relationship` | string | Gives the published relationship to the firm. |
| `regulatoryActions` | object\[] | Lists published regulatory actions. |
| `regulatoryActions[].type` | string | Gives the action type. |
| `regulatoryActions[].date` | string | Gives the action date. |
| `regulatoryActions[].description` | string | Gives the action details as published. |
| `regulatoryActions[].amount` | number | Gives the published fine amount when available. |
| `regulatoryActions[].currency` | string | Gives the currency of the fine amount. |
| `sourceUrl` | string | Links to the source register page for the row. |

**Genuine license row**

This genuine row is from the current beta run for `firmName` set to `26 Degrees` with revoked entries excluded. It is shown in full.

```json
{
  "firmName": "26 Degrees Global Markets (EU) Ltd (ex Invast Financial Services (EU) Ltd)",
  "licenseNumber": "435/23",
  "licenseType": "CIF",
  "status": "active",
  "issueDate": "2023-09-04",
  "revocationDate": "unknown",
  "authorizedServices": [
    "Reception and transmission of orders in relation to one or more financial instruments",
    "Execution of orders on behalf of clients",
    "Dealing on own account.",
    "Safekeeping and administration of financial instruments, including custodianship and related services",
    "Granting credits or loans to one or more financial instruments, where the firm granting the credit or loan is involved in the transaction:",
    "Foreign exchange services where these are connected to the provision of investment services:"
  ],
  "financialInstruments": [
    "Transferable securities.",
    "Money-market instruments.",
    "Units in collective investment undertakings.",
    "Options, futures, swaps, forward rate agreements and any other derivative contracts relating to securities, currencies, interest rates or yields, emission allowances or other derivatives instruments, financial indices or financial measures which may be settled physically or in cash.",
    "Options, futures, swaps, forwards and any other derivative contracts relating to commodities that must be settled in cash or may be settled in cash at the option of one of the parties other than by reason of default or other termination event.",
    "Options, futures, swaps, and any other derivative contract relating to commodities that can be physically settled provided that they are traded on a regulated market, a 219 The present English text is for information purposes only and is not legally binding. The legally binding document is in the Greek language. MTF, or an OTF, except for wholesale energy products traded on an OTF that must be physically settled.",
    "Options, futures, swaps, forwards and any other derivative contracts relating to commodities, that can be physically settled not otherwise mentioned in point 6) of this Part and not being for commercial purposes, which have the characteristics of other derivative financial instruments.",
    "Derivative instruments for the transfer of credit risk.",
    "Financial contracts for differences.",
    "Options, futures, swaps, forward-rate agreements and any other derivative contracts relating to climatic variables, freight rates or inflation rates or other official economic statistics that must be settled in cash or may be settled in cash at the option of one of the parties other than by reason of default or other termination event, as well as any other derivative contracts relating to assets, rights, obligations, indices and measures not otherwise mentioned in this Part, which have the characteristics of other derivative financial instruments, having regard to whether, inter alia, they are traded on a regulated market, OTF, or an MTF.",
    "Emission allowances consisting of any units recognised for compliance with the requirements of Directive 2003/87/EC."
  ],
  "registeredOffice": {
    "address": "28th October Avenue,261, View Point, 4th floor, 3035, Limassol, Cyprus",
    "city": "Limassol",
    "postalCode": "3035",
    "country": "Cyprus"
  },
  "registrationCountry": "Cyprus",
  "responsiblePersons": [],
  "parentEntities": [],
  "regulatoryActions": [],
  "sourceUrl": "https://www.cysec.gov.cy/en-GB/entities/investment-firms/cypriot/96061/"
}
```

Use `includeRevoked` with a revocation date range to return source-published former entries too.

#### 💳 Pricing

The Actor uses pay-per-event pricing. The buyer-facing event is `Investment license`, and you are charged for each saved investment-firm license. The Store pricing panel shows the current event price.

#### 🔌 Integrations

Open the default dataset in Apify or read the `results` URL through the Apify API. Export the public rows for downstream review or analysis.

https://www.youtube.com/watch?v=bNACk1\_S\_6w\&list=PLObrtcm1Kw6MUrlLNDbK9QRg8VDJg0gOW\&index=4

#### ❓ FAQ

##### Does this return a CySEC warning list?

No. It returns public investment-firm register entries. It is not a CySEC warning list, sanctions screen, or investment recommendation.

##### Is this the official CySEC service?

The Actor reads the public CySEC investment-firm register at run time. It is not the regulator and does not grant or confirm licenses beyond the values published in the source row.

##### Can I use it to check a CySEC forex firm?

Use the firm name or license number filters to find a public entry for a forex firm. You can then review its published status, dates, services, instruments, and source URL. The Actor does not make a separate forex certification decision.

##### Does this provide CySEC certification?

No. It returns public register data and does not issue a certification or legal opinion.

##### How do I include revoked and withdrawn entries?

Turn on `includeRevoked`. Revocation date filters work only when this option is on. When it is off, source-published revoked and withdrawn entries are excluded.

##### What does an unknown date mean?

It means the source did not publish that date. The Actor keeps unavailable data as `unknown`, `null`, or an empty array when that shape allows it. It does not infer missing values.

##### How does the Actor handle duplicate entries?

If the same source entry appears again during a run, the first eligible occurrence is saved and later matches are ignored. The saved row reflects the first match only.

##### Can one run use several search setups?

No. One run uses one set of filters. Start another run when you need a different filter combination.

##### Does the Actor need a CySEC login?

No. It reads the public CySEC source without a source login.

### 📝 Changelog

**0.0: Initial release**

### 🆘 Support

For issues, questions, or feature requests, [file a ticket](https://console.apify.com/actors/maximedupre~cysec/issues) and I'll fix or implement it in less than 24h 🫡

### 🔗 Related Actors

- [GLEIF LEI Lookup](https://apify.com/maximedupre/gleif-lei-lookup): Add official legal entity identifiers, registration facts, and parent relationships to a firm review.
- [Sanctions & Watchlist Screening — Risk-Scored Decisions](https://apify.com/maximedupre/sanctions-screening): Screen a firm name against official sanctions and watchlists after register review.
- [SAM.gov Vendor Exclusion Screening](https://apify.com/maximedupre/sam-gov-exclusions): Check a vendor against federal exclusion records after reviewing its public license details.
- [Florida License Lookup & Verification](https://apify.com/maximedupre/florida-license-lookup): Compare a second public license register by holder, license number, status, and date.
- [FCC License Search](https://apify.com/maximedupre/fcc-license-search-scraper): Search another public license register by holder, status, service, or license number.

**Made with ❤️ by Maxime Dupré**

# Actor input Schema

## `firmName` (type: `string`):

Filter by a CySEC investment firm name. Matching is not case-sensitive. Leave blank to include all firm names.

## `licenseType` (type: `string`):

Filter by a license or authorization type. Enter the type as it appears in the CySEC register. Leave blank to include all types.

## `licenseNumber` (type: `string`):

Filter by one license or registry number. Leave blank to include all numbers.

## `issuedFrom` (type: `string`):

Only include records with a license issue date on or after this date. Enter a date as YYYY-MM-DD.

## `issuedTo` (type: `string`):

Only include records with a license issue date on or before this date. Enter a date as YYYY-MM-DD.

## `includeRevoked` (type: `boolean`):

Turn this on to include source-published revoked and withdrawn entries. Leave it off to exclude those entries.

## `revokedFrom` (type: `string`):

Only include history entries with a published revocation date on or after this date. This filter is used only when revoked and withdrawn entries are included. Enter a date as YYYY-MM-DD.

## `revokedTo` (type: `string`):

Only include history entries with a published revocation date on or before this date. This filter is used only when revoked and withdrawn entries are included. Enter a date as YYYY-MM-DD.

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

Stop after this many matching records. Leave blank to return all available records until the source is exhausted.

## Actor input object example

```json
{
  "includeRevoked": false,
  "maxItems": 16
}
```

# Actor output Schema

## `results` (type: `string`):

Link to the dataset with successful CySEC investment-firm license records.

# 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 = {
    "maxItems": 16
};

// Run the Actor and wait for it to finish
const run = await client.actor("maximedupre/cysec").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 = { "maxItems": 16 }

# Run the Actor and wait for it to finish
run = client.actor("maximedupre/cysec").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 '{
  "maxItems": 16
}' |
apify call maximedupre/cysec --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,maximedupre/cysec"
        }
    }
}

```

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/OyD1Q5qZ2B4GTWNid/builds/tXcbAsam7Wli67iSy/openapi.json
