# French Company Prospector (`silentflow/french-company-prospector`) Actor

Discover French companies by activity code (NAF/APE) and, uniquely, by director age, using open government data. Get company name, SIREN, address, company size, revenue, creation date and directors with ages, ready for prospecting and outreach. No login or API key. Export to JSON, CSV or Excel.

- **URL**: https://apify.com/silentflow/french-company-prospector.md
- **Developed by:** [SilentFlow](https://apify.com/silentflow) (community)
- **Categories:** Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.30 / 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.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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/docs.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.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/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

## French Company Prospector

**Filter French companies by their director's age, crossed with industry and location.** Every company comes with its directors, computed ages, full head-office address, and financials, straight from the official French business registry.

### How it works

![How it works](https://api.apify.com/v2/key-value-stores/BahUAmymaOKgzlXpj/records/how-it-works-v1.png)

### ✨ Why teams choose this over other company data tools

Need every company in one industry near one city, run by someone in a specific age bracket? Tired of company data tools that hand you a firmographic profile and nothing about who is actually in charge?

- 🎂 **Filter by director age.** No other company data actor on Apify lets you search French companies by the age of the person running them. Set `dirigeantAgeMin` to 60 and get a list built for succession and acquisition conversations, not a generic firmographic dump.
- 🏛️ **Straight from the official registry.** Every field traces back to France's own business registry, the same public data banks and administrations rely on, not a resold or scraped-together aggregator.
- 📍 **Matched on the real head office.** Department and postal code filters check the company's actual siège, so a search for Lyon does not return a company registered in Lyon with its real activity somewhere else.
- 💶 **Financials on every company that filed them.** Revenue, net income, and fiscal year come back whenever a company has filed them, so you can qualify a lead before you ever pick up the phone.
- 🧑‍🤝‍🧑 **Every director, not just one name.** Get the full director list with role and type, plus a separate `matchedDirigeants` list of only the ones inside your age filter, so you know exactly who triggered the match.
- 🎯 **Every filter stacks in one run.** Industry, director age, location, size, and creation date combine together, so you get one focused list instead of five broad exports to cross-reference by hand.
- 🔓 **No login, no API key.** Point it at an industry code and a location and run it. Nothing to sign up for, nothing to authenticate.

### 🎯 What you can do with French company data

| Team | What they build |
|------|-----------------|
| **M&A and acquisition scouts** | Lists of companies in a sector whose director is past a chosen age, a starting point for succession and buyout conversations |
| **Business brokers** | Sector-and-region maps of owner-run companies approaching a likely handover window |
| **B2B sales and lead-gen** | Targeted prospect lists by industry and department, with the decision-maker's age as extra context before outreach |
| **Recruiters** | Company populations by sector, size, and location to plan sourcing campaigns |
| **Market analysts** | Sector snapshots by employee range, region, and creation date to track how an industry is structured |
| **Franchise and expansion teams** | Company density and size by department before opening a new location |
| **Investors and due diligence** | Quick checks on a company's status, size, and latest filed revenue and net income before deeper diligence |

### 📥 Input parameters

| Parameter | Type | Description |
|-----------|------|--------------|
| `activityCodes` | array | One or more NAF/APE industry codes, e.g. `62.01Z` (computer programming), `70.22Z` (business consulting) |
| `dirigeantAgeMin` | integer | Only companies with at least one director this age or older |
| `dirigeantAgeMax` | integer | Only companies with at least one director this age or younger |
| `departments` | array | French department codes, e.g. `75`, `69`, `13`, matched on the head office |
| `postalCodes` | array | Exact postal codes, e.g. `75001`, `69002`, matched on the head office |
| `activeOnly` | boolean | Exclude ceased or struck-off companies. Default `true` |
| `employeeRanges` | array | Filter by employee headcount range, from `0` up to `10000+` |
| `createdAfter` | string | Only companies created on or after this date (`YYYY-MM-DD`) |
| `createdBefore` | string | Only companies created on or before this date (`YYYY-MM-DD`) |
| `searchTerms` | string | Optional company name or keyword, combinable with the filters above |
| `maxResults` | integer | Maximum number of companies to return, 1 to 10,000. Default 100 |

At least one of `activityCodes`, `departments`, `postalCodes`, or `searchTerms` is required, so every run stays scoped to an actual segment of companies instead of the entire registry.

### 📊 Output data

#### Company with a director-age match

```json
{
  "siren": "443061841",
  "siret": "44306184100015",
  "tvaNumber": "FR64443061841",
  "companyName": "DOCTOLIB",
  "legalFormCode": "5710",
  "activityCode": "62.01Z",
  "section": "Information et communication",
  "address": "54 Quai Charles Pasqua",
  "postalCode": "92300",
  "city": "Levallois-Perret",
  "department": "92",
  "region": "Ile-de-France",
  "latitude": "48.8938",
  "longitude": "2.2865",
  "employeeRange": "1000-1999",
  "category": "ETI",
  "isActive": true,
  "creationDate": "2013-04-03",
  "revenue": 245000000,
  "netIncome": -52000000,
  "fiscalYear": 2023,
  "dirigeants": [
    { "name": "Stanislas Niox-Chateau", "role": "Président", "birthYear": 1985, "age": 41, "type": "personne physique" }
  ],
  "matchedDirigeants": [
    { "name": "Stanislas Niox-Chateau", "role": "Président", "birthYear": 1985, "age": 41, "type": "personne physique" }
  ],
  "annuaireUrl": "https://annuaire-entreprises.data.gouv.fr/entreprise/443061841",
  "pappersUrl": "https://www.pappers.fr/entreprise/443061841",
  "source": "annuaire-entreprises-api-gouv",
  "scrapedAt": "2026-07-01T10:00:00Z"
}
````

#### Company found without a director-age filter

```json
{
  "siren": "512345678",
  "siret": "51234567800012",
  "companyName": "TECHNOLOGIES DU RHONE",
  "tradeName": "TECHLYON",
  "legalFormCode": "5498",
  "activityCode": "70.22Z",
  "section": "Activités spécialisées, scientifiques et techniques",
  "address": "12 Rue de la Republique",
  "postalCode": "69002",
  "city": "Lyon",
  "department": "69",
  "region": "Auvergne-Rhone-Alpes",
  "latitude": "45.7597",
  "longitude": "4.8422",
  "employeeRange": "3-5",
  "category": "PME",
  "isActive": true,
  "creationDate": "2011-09-12",
  "dirigeants": [
    { "name": "HOLDING RHONE PARTICIPATIONS", "role": "Gérant", "type": "personne morale" }
  ],
  "annuaireUrl": "https://annuaire-entreprises.data.gouv.fr/entreprise/512345678",
  "pappersUrl": "https://www.pappers.fr/entreprise/512345678",
  "source": "annuaire-entreprises-api-gouv",
  "scrapedAt": "2026-07-01T10:00:03Z"
}
```

No `matchedDirigeants` field means no director-age filter was applied on that run, or the matched company has no director whose type carries an age (a `personne morale`, like a holding company, cannot match an age filter). `revenue`, `netIncome`, and `fiscalYear` are only present when the company has filed accounts with the registry.

### 🗂️ Data fields

29 top-level fields per company, plus 5 fields on every director inside `dirigeants[]` and `matchedDirigeants[]`.

| Group | Fields |
|-------|--------|
| **Identity** | `siren`, `siret`, `tvaNumber`, `companyName`, `tradeName`, `legalFormCode` |
| **Activity** | `activityCode`, `section` |
| **Head office (siège)** | `address`, `postalCode`, `city`, `department`, `region`, `latitude`, `longitude` |
| **Size and status** | `employeeRange`, `category`, `isActive`, `creationDate`, `closureDate` |
| **Financials** | `revenue`, `netIncome`, `fiscalYear` |
| **Directors** | `dirigeants[]` (`name`, `role`, `birthYear`, `age`, `type`), `matchedDirigeants[]` (same 5 fields, only the directors inside your age filter) |
| **Links and meta** | `annuaireUrl`, `pappersUrl`, `source`, `scrapedAt` |

`siren` is a stable, permanent company identifier that never changes for the life of the company. `annuaireUrl` and `pappersUrl` are both permanent links you can revisit anytime. `age` is computed at run time from the director's birth date or birth year, so it stays accurate wherever the run happens to fall in the year.

### 🚀 Examples

**Find IT companies in Paris**

```json
{ "activityCodes": ["62.01Z"], "departments": ["75"], "maxResults": 200 }
```

**Find consulting firms whose director is near retirement**

```json
{ "activityCodes": ["70.22Z"], "dirigeantAgeMin": 60, "maxResults": 500 }
```

**Mid-size manufacturers in a specific area, active only**

```json
{ "activityCodes": ["25.62B"], "postalCodes": ["69002", "69003", "69006"], "employeeRanges": ["21", "22"], "activeOnly": true, "maxResults": 300 }
```

**Newly created companies in a department**

```json
{ "departments": ["13"], "createdAfter": "2024-01-01", "maxResults": 1000 }
```

**Niche keyword search combined with a director age band**

```json
{ "searchTerms": "menuiserie", "departments": ["44"], "dirigeantAgeMin": 55, "dirigeantAgeMax": 70, "maxResults": 150 }
```

### 💻 Integrations

#### Build a succession-target list in Python

```python
from apify_client import ApifyClient

client = ApifyClient("<APIFY_TOKEN>")
run = client.actor("silentflow/french-company-prospector").call(run_input={
    "activityCodes": ["43.22A"],
    "departments": ["44", "49", "85"],
    "dirigeantAgeMin": 60,
    "maxResults": 500,
})

targets = [
    {"company": c["companyName"], "city": c["city"], "director": d["name"], "age": d["age"]}
    for c in client.dataset(run["defaultDatasetId"]).iterate_items()
    for d in c.get("matchedDirigeants", [])
]
print(f"{len(targets)} succession targets found")
```

#### Build a lead list in JavaScript

```javascript
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: '<APIFY_TOKEN>' });

const run = await client.actor('silentflow/french-company-prospector').call({
    activityCodes: ['70.22Z'],
    postalCodes: ['69002', '69003'],
    employeeRanges: ['12', '21'],
    maxResults: 200,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
const leads = items.map((c) => ({ name: c.companyName, city: c.city, revenue: c.revenue }));
console.table(leads);
```

#### Export only the director-age matches to CSV

```python
import csv
from apify_client import ApifyClient

client = ApifyClient("<APIFY_TOKEN>")
run = client.actor("silentflow/french-company-prospector").call(run_input={
    "activityCodes": ["62.01Z"],
    "departments": ["75", "92"],
    "dirigeantAgeMin": 58,
    "maxResults": 1000,
})

with open("acquisition_targets.csv", "w", newline="") as f:
    writer = csv.writer(f)
    writer.writerow(["companyName", "city", "director", "age", "revenue", "pappersUrl"])
    for c in client.dataset(run["defaultDatasetId"]).iterate_items():
        for d in c.get("matchedDirigeants", []):
            writer.writerow([c["companyName"], c["city"], d["name"], d["age"], c.get("revenue", ""), c.get("pappersUrl", "")])
```

### 📈 Performance

A run pages through the official registry until it reaches your `maxResults` limit, so cost and runtime scale with exactly how much data you ask for. A single industry code in one department can return anywhere from a handful to several thousand companies depending on how common the activity is, occasionally reaching the 10,000 cap on very broad searches. First results start appearing shortly after the run begins.

### 💡 Tips for best results

- Combine `activityCodes` with `departments` or `postalCodes` for a focused list instead of one broad industry-only filter that returns everything in France.
- Set `dirigeantAgeMin` alone, without a max, when you want "60 and older" rather than a narrow band.
- Department and postal code filters match the head office (siège). Use `postalCodes` when you need a tighter area than a whole department.
- Set `activeOnly` to `false` if you are studying closures or market exits rather than active prospects.
- Start with a smaller `maxResults` to check the field shape and filter combination before scaling up to your full target list.

### ❓ FAQ

**Where does the data come from?**
The official French business registry (Annuaire des Entreprises), the same public source used by government administrations and banks.

**Do I need an account or API key for the source?**
No. The registry is free and public, and this actor needs no login or API key from you either.

**How is director age calculated?**
From the director's birth date when the registry provides it, otherwise from the birth year alone. Age is computed at run time, so it is always accurate for the day you run the actor.

**Can I search without a director-age filter?**
Yes. `dirigeantAgeMin` and `dirigeantAgeMax` are both optional. Without them, you still get the full `dirigeants` list on every company, just no `matchedDirigeants` subset.

**What happens if a company hasn't filed financial accounts?**
`revenue`, `netIncome`, and `fiscalYear` are left out of that company's record. Every other field still comes back normally.

**Does a department filter include companies operating there with a head office elsewhere?**
No. Department and postal code filters match the head office (siège) only, not branch or operational addresses.

**How many companies can I get in one run?**
Up to 10,000, set with `maxResults`. The default is 100 if you don't set it.

**Is this data legal to use?**
Yes. The registry is a public, official French government dataset created for exactly this kind of lookup. You are responsible for how you use any personal data it contains, such as director names and ages, under applicable data protection law.

### 📬 Support

Maintained by [SilentFlow](https://apify.com/silentflow). Have a filter or field this actor doesn't cover yet? Let us know and we will consider it for a future update.

# Actor input Schema

## `activityCodes` (type: `array`):

One or more NAF/APE codes, e.g. 62.01Z (computer programming), 70.22Z (business consulting).

## `dirigeantAgeMin` (type: `integer`):

Only companies with at least one director of this age or older.

## `dirigeantAgeMax` (type: `integer`):

Only companies with at least one director of this age or younger.

## `departments` (type: `array`):

French department codes, e.g. 75, 69, 13.

## `postalCodes` (type: `array`):

Exact postal codes, e.g. 75001, 69002.

## `activeOnly` (type: `boolean`):

Exclude ceased/struck-off companies.

## `employeeRanges` (type: `array`):

Filter by employee headcount range.

## `createdAfter` (type: `string`):

Only companies created on or after this date (YYYY-MM-DD).

## `createdBefore` (type: `string`):

Only companies created on or before this date (YYYY-MM-DD).

## `searchTerms` (type: `string`):

Optional company name or keyword, combinable with the filters above.

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

Maximum number of companies to return (1-10000).

## Actor input object example

```json
{
  "activityCodes": [
    "62.01Z"
  ],
  "activeOnly": true,
  "maxResults": 100
}
```

# Actor output Schema

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

Complete company records including siren, siret, companyName, activityCode, address, employeeRange, revenue, dirigeants, matchedDirigeants, annuaireUrl and more.

# 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 = {
    "activityCodes": [
        "62.01Z"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("silentflow/french-company-prospector").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 = { "activityCodes": ["62.01Z"] }

# Run the Actor and wait for it to finish
run = client.actor("silentflow/french-company-prospector").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 '{
  "activityCodes": [
    "62.01Z"
  ]
}' |
apify call silentflow/french-company-prospector --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "French Company Prospector",
        "description": "Discover French companies by activity code (NAF/APE) and, uniquely, by director age, using open government data. Get company name, SIREN, address, company size, revenue, creation date and directors with ages, ready for prospecting and outreach. No login or API key. Export to JSON, CSV or Excel.",
        "version": "1.0",
        "x-build-id": "JvSlfpwOwTyRTclYj"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/silentflow~french-company-prospector/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-silentflow-french-company-prospector",
                "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/silentflow~french-company-prospector/runs": {
            "post": {
                "operationId": "runs-sync-silentflow-french-company-prospector",
                "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/silentflow~french-company-prospector/run-sync": {
            "post": {
                "operationId": "run-sync-silentflow-french-company-prospector",
                "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": {
                    "activityCodes": {
                        "title": "Activity codes (NAF/APE)",
                        "type": "array",
                        "description": "One or more NAF/APE codes, e.g. 62.01Z (computer programming), 70.22Z (business consulting).",
                        "items": {
                            "type": "string"
                        }
                    },
                    "dirigeantAgeMin": {
                        "title": "Director age - minimum",
                        "minimum": 18,
                        "maximum": 100,
                        "type": "integer",
                        "description": "Only companies with at least one director of this age or older."
                    },
                    "dirigeantAgeMax": {
                        "title": "Director age - maximum",
                        "minimum": 18,
                        "maximum": 100,
                        "type": "integer",
                        "description": "Only companies with at least one director of this age or younger."
                    },
                    "departments": {
                        "title": "Departments",
                        "type": "array",
                        "description": "French department codes, e.g. 75, 69, 13.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "postalCodes": {
                        "title": "Postal codes",
                        "type": "array",
                        "description": "Exact postal codes, e.g. 75001, 69002.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "activeOnly": {
                        "title": "Active companies only",
                        "type": "boolean",
                        "description": "Exclude ceased/struck-off companies.",
                        "default": true
                    },
                    "employeeRanges": {
                        "title": "Company size (employees)",
                        "type": "array",
                        "description": "Filter by employee headcount range.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "00",
                                "01",
                                "02",
                                "03",
                                "11",
                                "12",
                                "21",
                                "22",
                                "31",
                                "32",
                                "41",
                                "42",
                                "51",
                                "52",
                                "53"
                            ],
                            "enumTitles": [
                                "0",
                                "1-2",
                                "3-5",
                                "6-9",
                                "10-19",
                                "20-49",
                                "50-99",
                                "100-199",
                                "200-249",
                                "250-499",
                                "500-999",
                                "1000-1999",
                                "2000-4999",
                                "5000-9999",
                                "10000+"
                            ]
                        }
                    },
                    "createdAfter": {
                        "title": "Created after",
                        "type": "string",
                        "description": "Only companies created on or after this date (YYYY-MM-DD)."
                    },
                    "createdBefore": {
                        "title": "Created before",
                        "type": "string",
                        "description": "Only companies created on or before this date (YYYY-MM-DD)."
                    },
                    "searchTerms": {
                        "title": "Name / keyword",
                        "type": "string",
                        "description": "Optional company name or keyword, combinable with the filters above."
                    },
                    "maxResults": {
                        "title": "Max results",
                        "minimum": 1,
                        "maximum": 10000,
                        "type": "integer",
                        "description": "Maximum number of companies to return (1-10000).",
                        "default": 100
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
