# EU Safety Gate RAPEX Product Alerts Scraper (`parseforge/eu-safety-gate-rapex-scraper`) Actor

Track dangerous product alerts from the EU Safety Gate (RAPEX) rapid alert system across 31 countries. Pull product name, brand, category, risk type, notifying country, alert number, measures, and image for compliance monitoring, recall research, and consumer safety analysis.

- **URL**: https://apify.com/parseforge/eu-safety-gate-rapex-scraper.md
- **Developed by:** [ParseForge](https://apify.com/parseforge) (community)
- **Categories:** Automation, Developer tools, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $7.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
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.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

![ParseForge Banner](https://github.com/ParseForge/apify-assets/blob/ad35ccc13ddd068b9d6cba33f323962e39aed5b2/banner.jpg?raw=true)

## 🛡️ EU Safety Gate (RAPEX) Product Alerts Scraper

> 🚀 **Turn the EU Safety Gate rapid alert system into a clean feed of dangerous product alerts.** Pull 24 fields per alert from a database of more than 31,000 notifications spanning 31 European countries.

> 🕒 **Last updated:** 2026-06-04 · **📊 24 fields** per record · 31,000+ alerts · 31 countries · daily refreshed source

The EU Safety Gate (formerly RAPEX) is the European Union rapid alert system for dangerous non-food products. National authorities notify the European Commission whenever a product on their market poses a risk to consumer health and safety, and the Commission publishes those notifications for everyone. This Actor collects those alerts into structured records so you can monitor them at scale.

**Coverage:** every alert includes the product name, brand, category, risk type, the notifying country, the country of origin, the alert number, the alert date, the corrective measures taken, and a product image. You can filter by country, product category, risk level, keyword, and date range, then collect anywhere from a handful of alerts to the full historical archive.

| 🎯 Target Audience | 💡 Primary Use Cases |
|---|---|
| Product safety and compliance teams | Monitor new alerts for your product categories |
| Importers, retailers, and marketplaces | Screen suppliers and listings against active alerts |
| Consumer protection researchers | Analyze risk trends across countries and categories |
| Brand protection and legal teams | Track counterfeit and non-compliant product notices |

### 📋 What the EU Safety Gate Scraper does

This Actor reads the official Safety Gate (RAPEX) notification database and returns each alert as a structured record. It pulls the product details (name, brand, model, description, barcode), the risk assessment (risk level, risk types, risk and alert descriptions), the geography (notifying country, country of origin), the administrative metadata (alert number, alert date, alert group, counterfeit flag), the corrective measures ordered, and product images. Server side filters let you target a specific country, category, risk level, keyword, or date window before any data is collected.

### 🎬 Full Demo (_🚧 Coming soon_)

### ⚙️ Input

| Field | Type | Description |
|---|---|---|
| `keyword` | string | Free text search across product name, brand, and description |
| `maxItems` | integer | Maximum number of alerts to collect (free plan caps at 10) |
| `country` | select | Notifying country, one of 31 European countries |
| `category` | select | Product category as classified in Safety Gate |
| `riskLevel` | select | Serious risk, Other risk levels, or Other types of alerts |
| `dateFrom` | string | Only alerts on or after this date (YYYY-MM-DD) |
| `dateTo` | string | Only alerts on or before this date (YYYY-MM-DD) |

**Example 1. Recent serious toy alerts**
```json
{
  "maxItems": 50,
  "category": "Toys",
  "riskLevel": "Serious risk"
}
````

**Example 2. Keyword search within a date range**

```json
{
  "maxItems": 100,
  "keyword": "drone",
  "dateFrom": "2025-01-01",
  "dateTo": "2026-06-01"
}
```

> ⚠️ **Good to Know:** filters combine with AND logic. The source orders alerts by date, newest first, so leaving filters empty returns the most recent notifications first. Some optional fields such as brand, barcode, and batch number are blank on alerts where the authority did not record them.

### 📊 Output

Each record contains the following fields.

| Field | Description |
|---|---|
| 🖼 `imageUrl` | Primary product image hosted by the European Commission |
| 📌 `productName` | Product name as recorded in the notification |
| ⚠️ `riskLevel` | Serious risk, Other risk levels, or Other types of alerts |
| 🔗 `url` | Link to the full alert detail page on Safety Gate |
| 🔢 `alertNumber` | Official Safety Gate alert reference number |
| 📅 `alertDate` | Date the alert was published |
| 🏷 `brand` | Product brand |
| 📦 `category` | Product category |
| 🧩 `productType` | Short product type label |
| 📝 `productDescription` | Description of the product |
| 🆔 `modelType` | Model or type reference |
| ☣️ `riskTypes` | List of risk types (for example Choking, Chemical) |
| 🚨 `riskDescription` | Why the product is considered dangerous |
| 📋 `alertDescription` | Detailed description of the defect |
| 🌍 `notifyingCountry` | Country that issued the alert |
| 🏭 `originCountry` | Country of origin of the product |
| 👥 `alertGroup` | Consumer or Professional |
| 🔁 `counterfeit` | Whether the product is counterfeit |
| 🛠 `measures` | Corrective measures ordered |
| 📊 `barcode` | Product barcode if recorded |
| 🔖 `batchNumber` | Batch number if recorded |
| 🖼 `additionalImages` | List of further product image URLs |
| ✏️ `modificationDate` | When the notification was last modified |
| 🕒 `scrapedAt` | When this record was collected |

**Real sample records**

```json
{
  "imageUrl": "https://ec.europa.eu/safety-gate-alerts/public/api/notification/image/11009286",
  "productName": "CONSTRUCCIONES",
  "riskLevel": "Serious risk",
  "url": "https://ec.europa.eu/safety-gate-alerts/screen/webReport/alertDetail/10098916",
  "alertNumber": "SR/01505/26",
  "alertDate": "2026-05-29",
  "brand": "JUMBO GOULA",
  "category": "Toys",
  "productType": "Toy set",
  "riskTypes": ["Choking"],
  "notifyingCountry": "Spain",
  "originCountry": "People's Republic of China",
  "counterfeit": "Unknown",
  "measures": ["Measures ordered by public authorities (to: Retailer) Withdrawal of the product from market"],
  "barcode": "8410446502037"
}
```

```json
{
  "imageUrl": "https://ec.europa.eu/safety-gate-alerts/public/api/notification/image/11009308",
  "productName": null,
  "riskLevel": "Serious risk",
  "url": "https://ec.europa.eu/safety-gate-alerts/screen/webReport/alertDetail/10098933",
  "alertNumber": "SR/01503/26",
  "alertDate": "2026-05-29",
  "brand": "YOYOSO",
  "category": "Toys",
  "productType": "Soft toy with key ring",
  "riskTypes": ["Choking"],
  "notifyingCountry": "Austria",
  "originCountry": "People's Republic of China",
  "measures": ["Measures ordered by economic operators (to: Importer) Recall of the product from end users"],
  "barcode": "4010135400056"
}
```

```json
{
  "imageUrl": "https://ec.europa.eu/safety-gate-alerts/public/api/notification/image/11009292",
  "productName": "Noglering Key Ring",
  "riskLevel": "Serious risk",
  "url": "https://ec.europa.eu/safety-gate-alerts/screen/webReport/alertDetail/10098930",
  "alertNumber": "SR/01479/26",
  "alertDate": "2026-05-29",
  "brand": "Flying Tiger Copenhagen",
  "category": "Toys",
  "productType": "Key ring with toy",
  "riskTypes": ["Choking"],
  "notifyingCountry": "Austria",
  "originCountry": "People's Republic of China",
  "measures": ["Measures ordered by economic operators (to: Distributor) Recall of the product from end users"],
  "barcode": "200030694839"
}
```

### ✨ Why choose this Actor

- 24 structured fields per alert, including product images and the full corrective measures list.
- Filter by country, category, risk level, keyword, and date range before any data is collected.
- Built on the official European Commission open data, covering more than 31,000 alerts.
- Newest alerts first, so monitoring runs surface fresh notifications immediately.
- No login, no cookies, and no manual paging through the Safety Gate website.

### 📈 How it compares to alternatives

| Approach | Filtering | Images | Maintenance |
|---|---|---|---|
| Browsing the Safety Gate website | Manual, page by page | Click each alert | High, no structured output |
| Hand built scrapers | Fragile, breaks on redesigns | Hard to extract | High |
| This Actor | Country, category, risk, keyword, date | Included per alert | Low, structured records |

### 🚀 How to use

1. Sign up for a free Apify account using [this link](https://console.apify.com/sign-up?fpr=vmoqkp).
2. Open the EU Safety Gate (RAPEX) Product Alerts Scraper.
3. Set your filters (country, category, risk level, keyword, or date range) and a value for `maxItems`.
4. Click **Start** and let the run finish.
5. Collect your structured alerts from the run output or through the Apify API.

### 💼 Business use cases

#### Compliance monitoring

| Goal | How this helps |
|---|---|
| Catch new alerts in your categories | Filter by category and risk level, run on a schedule |
| Document due diligence | Keep a structured archive of relevant notifications |

#### Marketplace and retail screening

| Goal | How this helps |
|---|---|
| Screen listings against alerts | Match product names and brands to active notifications |
| Vet suppliers | Track how often a brand or origin country appears |

#### Risk and trend research

| Goal | How this helps |
|---|---|
| Analyze risk patterns | Group alerts by risk type, category, and country |
| Study origin trends | Compare country of origin across thousands of alerts |

#### Brand protection

| Goal | How this helps |
|---|---|
| Spot counterfeit notices | Filter alerts flagged as counterfeit |
| Watch a brand name | Use keyword search to follow a specific brand |

### 🔌 Automating EU Safety Gate Scraper

Connect runs and output to the tools you already use.

- **Make** and **Zapier** to trigger workflows on new alerts.
- **Slack** to post fresh notifications to a channel.
- **Airbyte** to load alerts into a warehouse.
- **GitHub** Actions to schedule recurring runs.
- **Google Drive** to archive collected records.

### 🌟 Beyond business use cases

- **Research:** study consumer safety trends across the EU single market.
- **Personal:** check whether a product you own has been flagged.
- **Non-profit:** support consumer advocacy and awareness campaigns.
- **Experimentation:** build dashboards and alerting prototypes on open data.

### 🤖 Ask an AI assistant

Drop the output into your favorite assistant to summarize or analyze it.

- [ChatGPT](https://chat.openai.com/)
- [Claude](https://claude.ai/)
- [Perplexity](https://www.perplexity.ai/)
- [Microsoft Copilot](https://copilot.microsoft.com/)

### ❓ Frequently Asked Questions

**What is the EU Safety Gate?**
It is the European Union rapid alert system for dangerous non-food products, formerly called RAPEX. National authorities report risky products and the European Commission publishes the alerts.

**What is the difference between Safety Gate and RAPEX?**
RAPEX is the former name. The system was rebranded as Safety Gate, but many people still call the data RAPEX. They refer to the same alert system.

**How many alerts are available?**
The source holds more than 31,000 alerts and grows as new notifications are published.

**How fresh is the data?**
Alerts are returned newest first. The underlying source is updated regularly, and the most recent alerts in testing were only days old.

**Which countries are covered?**
31 European countries participate, including all EU member states plus Iceland, Norway, and the United Kingdom for legacy and Northern Ireland notifications.

**Can I filter by product category?**
Yes. The `category` input lets you target categories such as Toys, Cosmetics, Electrical appliances and equipment, and many more.

**Can I search by keyword?**
Yes. The `keyword` input searches across product name, brand, and description.

**Can I limit results to a date range?**
Yes. Use `dateFrom` and `dateTo` in YYYY-MM-DD form to bound the alert date.

**Why are some fields blank?**
Fields such as brand, barcode, and batch number are only filled when the notifying authority recorded them. Blanks reflect the source data, not a collection error.

**Do alerts include images?**
Yes. Each alert returns a primary `imageUrl`, and many also include a list of `additionalImages`.

**How many alerts can I collect?**
Free plans are limited to 10 alerts per run. Paid plans can collect up to 1,000,000.

**Is this affiliated with the European Commission?**
No. This is an independent tool that collects publicly available data published by the Commission.

### 🔌 Integrate with any app

Every run produces structured records you can pull through the Apify API, connect to Make or Zapier, or load into your own database and dashboards.

### 🔗 Recommended Actors

- [CPSC Recalls Scraper](https://apify.com/parseforge/cpsc-recalls-scraper). US Consumer Product Safety Commission recalls.
- [FDA Recalls Scraper](https://apify.com/parseforge/fda-recalls-scraper). US Food and Drug Administration recall notices.
- [NHTSA Vehicle Recalls Scraper](https://apify.com/parseforge/nhtsa-vehicle-recalls-scraper). US vehicle safety recalls.
- [USDA Recall Watch Scraper](https://apify.com/parseforge/usda-recall-watch-scraper). US food safety recalls.
- [FMCSA Carrier Safety Scraper](https://apify.com/parseforge/fmcsa-carrier-safety-scraper). US motor carrier safety records.

> 💡 **Pro Tip:** browse the complete [ParseForge collection](https://apify.com/parseforge).

**🆘 Need Help?** [Open our contact form](https://tally.so/r/BzdKgA)

> **⚠️ Disclaimer:** independent tool, not affiliated with the European Commission or the Safety Gate system. Only publicly available data is collected.

# Actor input Schema

## `keyword` (type: `string`):

Free-text search across product name, brand, and description (for example "drone", "baby carrier", "USB charger"). Leave empty to return all alerts.

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

Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000

## `country` (type: `string`):

Filter by the country that issued the alert.

## `category` (type: `string`):

Filter by product category as classified in Safety Gate.

## `riskLevel` (type: `string`):

Filter by the alert risk level.

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

Only include alerts on or after this date (YYYY-MM-DD).

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

Only include alerts on or before this date (YYYY-MM-DD).

## Actor input object example

```json
{
  "keyword": "drone",
  "maxItems": 10
}
```

# 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 = {
    "keyword": "drone",
    "maxItems": 10,
    "dateFrom": "",
    "dateTo": ""
};

// Run the Actor and wait for it to finish
const run = await client.actor("parseforge/eu-safety-gate-rapex-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 = {
    "keyword": "drone",
    "maxItems": 10,
    "dateFrom": "",
    "dateTo": "",
}

# Run the Actor and wait for it to finish
run = client.actor("parseforge/eu-safety-gate-rapex-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 '{
  "keyword": "drone",
  "maxItems": 10,
  "dateFrom": "",
  "dateTo": ""
}' |
apify call parseforge/eu-safety-gate-rapex-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=parseforge/eu-safety-gate-rapex-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "EU Safety Gate RAPEX Product Alerts Scraper",
        "description": "Track dangerous product alerts from the EU Safety Gate (RAPEX) rapid alert system across 31 countries. Pull product name, brand, category, risk type, notifying country, alert number, measures, and image for compliance monitoring, recall research, and consumer safety analysis.",
        "version": "0.1",
        "x-build-id": "2aWmORbTXhh6GFaK0"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/parseforge~eu-safety-gate-rapex-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-parseforge-eu-safety-gate-rapex-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/parseforge~eu-safety-gate-rapex-scraper/runs": {
            "post": {
                "operationId": "runs-sync-parseforge-eu-safety-gate-rapex-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/parseforge~eu-safety-gate-rapex-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-parseforge-eu-safety-gate-rapex-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",
                "properties": {
                    "keyword": {
                        "title": "Keyword",
                        "type": "string",
                        "description": "Free-text search across product name, brand, and description (for example \"drone\", \"baby carrier\", \"USB charger\"). Leave empty to return all alerts."
                    },
                    "maxItems": {
                        "title": "Max Items",
                        "minimum": 1,
                        "maximum": 1000000,
                        "type": "integer",
                        "description": "Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000"
                    },
                    "country": {
                        "title": "Notifying Country",
                        "enum": [
                            "Austria",
                            "Belgium",
                            "Bulgaria",
                            "Croatia",
                            "Cyprus",
                            "Czechia",
                            "Denmark",
                            "Estonia",
                            "Finland",
                            "France",
                            "Germany",
                            "Greece",
                            "Hungary",
                            "Iceland",
                            "Ireland",
                            "Italy",
                            "Latvia",
                            "Lithuania",
                            "Luxembourg",
                            "Malta",
                            "Norway",
                            "Poland",
                            "Portugal",
                            "Romania",
                            "Slovakia",
                            "Slovenia",
                            "Spain",
                            "Sweden",
                            "The Netherlands",
                            "United Kingdom",
                            "United Kingdom in respect of Northern Ireland"
                        ],
                        "type": "string",
                        "description": "Filter by the country that issued the alert."
                    },
                    "category": {
                        "title": "Product Category",
                        "enum": [
                            "Toys",
                            "Cosmetics",
                            "Motor vehicles",
                            "Electrical appliances and equipment",
                            "Clothing, textiles and fashion items",
                            "Chemical products",
                            "Jewellery",
                            "Childcare articles and children's equipment",
                            "Protective equipment",
                            "Lighting chains",
                            "Lighting equipment",
                            "Machinery",
                            "Hobby/sports equipment",
                            "Pyrotechnic articles",
                            "Decorative articles",
                            "Furniture",
                            "Kitchen/cooking accessories",
                            "Construction products",
                            "Laser pointers",
                            "Lighters",
                            "Communication and media equipment",
                            "Gadgets",
                            "Hand tools",
                            "Gas appliances and components",
                            "Stationery",
                            "Recreational crafts",
                            "Measuring instruments",
                            "Car accessories",
                            "Pet care",
                            "Food imitating product",
                            "Personal accessories"
                        ],
                        "type": "string",
                        "description": "Filter by product category as classified in Safety Gate."
                    },
                    "riskLevel": {
                        "title": "Risk Level",
                        "enum": [
                            "Serious risk",
                            "Other risk levels",
                            "Other types of alerts"
                        ],
                        "type": "string",
                        "description": "Filter by the alert risk level."
                    },
                    "dateFrom": {
                        "title": "Alert Date From",
                        "type": "string",
                        "description": "Only include alerts on or after this date (YYYY-MM-DD)."
                    },
                    "dateTo": {
                        "title": "Alert Date To",
                        "type": "string",
                        "description": "Only include alerts on or before this date (YYYY-MM-DD)."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
