# Product Recall Monitor (`datapilot/product-recall-monitor`) Actor

Monitor Google News RSS for product recalls by company or keyword. Collect recall titles, publication dates, publishers, affected vehicle or product units, source links, and timestamps. Fast, lightweight scraper with Apify Proxy support, deduplication, and pay-per-result charging.

- **URL**: https://apify.com/datapilot/product-recall-monitor.md
- **Developed by:** [Data Pilot](https://apify.com/datapilot) (community)
- **Categories:** AI, Automation, E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 scraped results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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

## Product Recall Monitor

⚠️ **Product Recall Monitor** is a powerful Apify Actor designed to discover, track, and monitor **Product Recall** announcements from Google News. This tool provides real-time **Product Recall** intelligence including recall titles, affected units, companies, publication dates, and detailed information links. Whether you're managing product safety, tracking competitor recalls, or conducting compliance monitoring, the Product Recall Monitor delivers critical **Product Recall** alerts efficiently.

With Google News RSS integration, intelligent deduplication, unit extraction, publisher tracking, and PPE billing support, the Product Recall Monitor ensures comprehensive **Product Recall** discovery and analysis. It focuses on key **Product Recall** signals including company name, affected units, publication date, and news source, making it an essential tool for **Product Recall** research and product safety management.

---

### 📋 Table of Contents

- [Features](#-features)
- [Data Source](#-data-source)
- [How It Works](#-how-it-works)
- [Input](#-input)
- [Output](#-output)
- [Technical Stack](#-technical-stack)
- [Data Fields](#-data-fields)
- [Recall Types](#-recall-types)
- [Use Cases](#-use-cases)
- [Quick Start](#-quick-start)
- [Configuration](#-configuration)
- [Performance](#-performance)
- [Billing](#-billing)
- [Important Notes](#-important-notes)
- [Keywords](#-keywords)
- [Changelog](#-changelog)
- [Support](#-support)

---

### 🔥 Features

- **Google News Integration** – Real-time **Product Recall** news monitoring via Google News RSS.
- **Keyword Search** – Search **Product Recall** by product name or company (vehicle, medicine, food, electronics, etc.).
- **Recall Discovery** – Discovers newly announced **Product Recall** incidents.
- **Title Extraction** – Captures complete **Product Recall** announcement titles.
- **Publisher Tracking** – Records news source and publication for each **Product Recall**.
- **Unit Extraction** – Automatically extracts number of units affected in **Product Recall**.
- **Date Tracking** – Captures publication date for each **Product Recall** announcement.
- **URL Capture** – Provides direct links to full **Product Recall** articles.
- **Deduplication** – Removes duplicate **Product Recall** announcements across feeds.
- **Company Identification** – Identifies affected company for each **Product Recall**.
- **Hazard Tracking** – Field for recording hazard type (structure ready for expansion).
- **Entity Cleaning** – Removes HTML entities and formats text properly.
- **Date Parsing** – Converts publication dates to standardized format.
- **Real-Time Monitoring** – Get **Product Recall** alerts as they're published.
- **Compliance Tracking** – Monitor regulatory **Product Recall** announcements.
- **Competitive Intelligence** – Track competitor **Product Recall** activities.
- **Safety Analysis** – Analyze product safety trends via **Product Recall** data.
- **Volume Tracking** – Track volume of **Product Recall** announcements.
- **Timeline Tracking** – Build timeline of **Product Recall** events.
- **Risk Assessment** – Assess product safety risks via **Product Recall** data.
- **PPE Billing Integration** – Pay-per-event billing per **Product Recall** found.
- **Charge Limit Handling** – Respects user's maximum PPE charge limits.
- **Proxy Support** – Apify residential proxy support for reliability.
- **Real-Time Dataset Push** – Pushes results to Apify Dataset with metadata.
- **Detailed Logging** – Comprehensive logging of charges and progress.
- **Asyncio-Friendly** – Non-blocking async/await architecture.

---

### 📊 Data Source

#### **Google News RSS**

- **Authority**: Official Google News aggregation
- **Coverage**: Global **Product Recall** announcements from thousands of news sources
- **Data**: Real-time recall news, articles, and announcements
- **Updates**: Continuously updated as news breaks
- **Source**: Public RSS feed, no authentication required
- **Reliability**: Highly reliable, comprehensive global coverage

---

### ⚙️ How It Works

The Product Recall Monitor accepts a product name or company keyword to search for **Product Recall** announcements. It queries Google News RSS with the keyword combined with "recall" to find relevant announcements. For each result, it extracts key fields including title, publication date, publisher, and affected units. **Product Recall** items are deduplicated by title to avoid duplicates, then pushed to the dataset with PPE charging per recall. A completion summary is generated with total recalls found and charged.

**Key Processing Steps:**

1. **Input Parsing** – Accept product/company keyword
2. **Proxy Setup** – Configure Apify residential proxy
3. **RSS Query** – Build Google News RSS search URL
4. **Feed Fetch** – Query Google News RSS feed
5. **XML Parsing** – Extract item elements from RSS
6. **Field Extraction** – Extract title, link, date, source from each item
7. **HTML Entity Decoding** – Decode HTML entities in titles
8. **Title Cleaning** – Remove publisher suffix and normalize text
9. **Date Parsing** – Convert to standardized date format
10. **Unit Extraction** – Extract affected units from title
11. **Deduplication** – Check against previously seen titles
12. **Recall Object Creation** – Build structured recall object
13. **Dataset Push** – Push recall to Apify Dataset
14. **PPE Charging** – Charge per **Product Recall** found
15. **Charge Limit Check** – Stop if user limit reached

**Key Benefits:**

- Stay informed about **Product Recall** announcements immediately
- Monitor specific products or companies for recalls
- Track affected unit counts and severity
- Build historical **Product Recall** database
- Manage compliance and regulatory risks
- Protect customer safety via early alert

---

### 📥 Input

The Actor accepts the following input parameters:

| Field | Type | Default | Description |
|-------|------|---------|-------------|
| `keyword` | string | required | Product name or company name to monitor for **Product Recall** |
| `useApifyProxy` | boolean | `true` | Enable Apify residential proxies |
| `apifyProxyGroups` | array | `["RESIDENTIAL"]` | Proxy group configuration |

**Example Input:**

```json
{
  "keyword": "Ford",
  "useApifyProxy": true
}
````

**Monitor Specific Product:**

```json
{
  "keyword": "Samsung battery"
}
```

**Track Company Recalls:**

```json
{
  "keyword": "Tesla"
}
```

***

### 📤 Output

The Actor pushes **Product Recall** records with the following structure:

**Product Recall Record:**

| Field | Type | Description |
|-------|------|-------------|
| `title` | string | **Product Recall** announcement headline |
| `date` | string | Publication date (YYYY-MM-DD) |
| `publisher` | string | News source/publisher name |
| `units` | string | Number of units affected in **Product Recall** |
| `hazard` | string | Type of hazard (reserved for expansion) |
| `company` | string | Affected company name |
| `detail_url` | string | Direct link to full article |
| `source` | string | Data source (Google News RSS) |
| `keyword` | string | Search keyword used |
| `scraped_at` | string | ISO 8601 scrape timestamp |

**Example Product Recall Record:**

```json
{
  "title": "Ford Recalls 102,000 Vehicles Due to Defective Seat Belt",
  "date": "2025-02-14",
  "publisher": "Reuters",
  "units": "102,000 vehicles",
  "hazard": "",
  "company": "Ford",
  "detail_url": "https://news.google.com/articles/CCAiC...",
  "source": "Google News RSS",
  "keyword": "Ford",
  "scraped_at": "2025-02-14T12:00:00"
}
```

**Example Multiple Recalls (Batch):**

```json
[
  {
    "title": "General Motors Recalls 500K Chevy Bolt EVs Over Battery Fire Risk",
    "date": "2025-02-13",
    "publisher": "Associated Press",
    "units": "500,000 vehicles",
    "hazard": "",
    "company": "General Motors",
    "detail_url": "https://news.google.com/articles/...",
    "source": "Google News RSS",
    "keyword": "Chevrolet",
    "scraped_at": "2025-02-14T12:00:00"
  },
  {
    "title": "Honda Issues Safety Recall for 250K Civic Models",
    "date": "2025-02-12",
    "publisher": "Bloomberg",
    "units": "250,000 vehicles",
    "hazard": "",
    "company": "Honda",
    "detail_url": "https://news.google.com/articles/...",
    "source": "Google News RSS",
    "keyword": "Honda",
    "scraped_at": "2025-02-14T12:00:00"
  }
]
```

***

### 🧰 Technical Stack

- **Data Source:** Google News RSS feeds
- **HTTP Client:** httpx for async HTTP requests
- **XML Parsing:** Regex-based XML extraction
- **HTML Decoding:** Python string replacement for entities
- **Date Parsing:** datetime for standardized formatting
- **Query Building:** urllib.parse for URL encoding
- **Async:** asyncio for non-blocking operations
- **Deduplication:** Set-based tracking
- **Proxy:** Apify Proxy with RESIDENTIAL configuration
- **Logging:** Apify Actor logging system
- **Platform:** Apify Actor serverless environment
- **Billing:** Apify PPE (Pay-Per-Event) system

***

### 📊 Data Fields Explained

#### **Recall Identification**

- **title**: Complete **Product Recall** announcement title
- **company**: Affected company/manufacturer name
- **keyword**: Search term used to find recall

#### **Scope Information**

- **units**: Quantity of units affected
- **hazard**: Type/category of hazard (expansion field)

#### **Timeline**

- **date**: When **Product Recall** was announced
- **scraped\_at**: When data was collected

#### **Reference**

- **detail\_url**: Link to full article text
- **publisher**: News source
- **source**: Data origin (Google News RSS)

***

### 🔄 Recall Types

The Product Recall Monitor tracks all **Product Recall** types:

#### **Automotive Recalls**

- Seat belt defects
- Battery fire risks
- Brake system failures
- Airbag malfunctions
- Engine problems

#### **Consumer Product Recalls**

- Choking hazards
- Electrical fire risks
- Chemical contamination
- Structural defects
- Injury risks

#### **Food & Drug Recalls**

- Contamination risks
- Allergen concerns
- Mislabeling issues
- Bacterial contamination
- Foreign object presence

#### **Electronics & Appliances**

- Fire hazards
- Electrical shock risks
- Burning risks
- Malfunction issues
- Safety defects

***

### 🎯 Use Cases

- **Product Safety Management** – Monitor **Product Recall** for own products
- **Compliance Tracking** – Stay informed on regulatory **Product Recall** requirements
- **Competitive Intelligence** – Track competitor **Product Recall** announcements
- **Risk Assessment** – Assess product safety risks via **Product Recall** trends
- **Supply Chain Management** – Monitor supplier **Product Recall** incidents
- **Quality Assurance** – Improve QA based on **Product Recall** patterns
- **Customer Communications** – Proactively communicate about **Product Recall** risks
- **Liability Management** – Track **Product Recall** for liability assessment
- **Insurance Management** – Monitor **Product Recall** for insurance purposes
- **Regulatory Compliance** – Ensure compliance with **Product Recall** regulations
- **Market Analysis** – Analyze product safety trends via **Product Recall** data
- **Crisis Management** – Detect and respond to **Product Recall** crises
- **Investor Relations** – Inform investors about material **Product Recall** events
- **Brand Protection** – Protect brand reputation via **Product Recall** monitoring
- **Historical Analysis** – Build historical **Product Recall** database

***

### 🚀 Quick Start

#### **1. Prepare Input**

Go to Apify Console and enter:

```json
{
  "keyword": "Toyota",
  "useApifyProxy": true
}
```

#### **2. Run the Actor**

Click **Start** button. The Actor will:

- Connect to Google News RSS
- Search for product recalls matching keyword
- Extract recall details
- Deduplicate results
- Push to Dataset
- Charge per recall

#### **3. Monitor Progress**

Console shows:

```
[Google News RSS] Initializing secure search for: 'Toyota recall'
Apify Proxy integration loaded successfully.
Extracted 23 feed elements from the XML channel response.
✅ [CHARGED] Recall saved | Title: Toyota Recalls 1.5M Vehicles Due to... | Total charged: 1
✅ [CHARGED] Recall saved | Title: Toyota Safety Issue Affects 500K Models | Total charged: 2
✅ [CHARGED] Recall saved | Title: Toyota Announces Comprehensive Recall... | Total charged: 3
...
🎉 Done! Total recall records saved and charged: 23 | Keyword: 'Toyota'
```

#### **4. View & Download Results**

- **Results Tab**: All **Product Recall** records
- **Export**: JSON, CSV, Excel
- **Filter**: By date or publisher
- **Sort**: By units or date

***

### ⚙️ Configuration

#### **Product Monitoring**

Specific product:

```json
{
  "keyword": "iPhone 15"
}
```

Company-wide:

```json
{
  "keyword": "Samsung"
}
```

#### **Recall Categories**

Automotive:

```json
{
  "keyword": "Tesla Model S"
}
```

Consumer goods:

```json
{
  "keyword": "Baby stroller"
}
```

***

### 📈 Performance

#### **Processing Speed**

- \~10-20 seconds per search
- \~20-50 recalls per search
- RSS parsing overhead minimal
- Deduplication efficient

#### **Resource Usage**

- Memory: ~60-100MB
- CPU: ~25-35% during processing
- Network: ~2-3MB per search
- API calls: 1 per search

***

### 💰 Billing

#### **PPE (Pay-Per-Event) Billing**

- **Event Name:** "scraped-result"
- **Charge:** 1 credit per **Product Recall** found
- **Billing Trigger:** Per unique recall record
- **Typical Cost:** 20-50 credits per search

#### **Cost Examples**

- 23 recalls × 1 credit = 23 credits
- 45 recalls × 1 credit = 45 credits
- 12 recalls × 1 credit = 12 credits

***

### ⚠️ Important Notes

#### **Legal & Compliance**

- **Fair Use**: Respects Google News ToS and rate limits
- **Attribution**: Respects news source copyrights
- **Accuracy**: Data as reported by news sources
- **Verification**: Always verify with official sources
- **Confidentiality**: Respects news outlet guidelines

#### **Data Quality**

- **Freshness**: Real-time from Google News
- **Completeness**: Depends on news coverage
- **Accuracy**: Only as accurate as news sources
- **Reliability**: RSS feed stable and reliable
- **Verification**: Always verify with manufacturers

#### **Best Practices**

- Verify recalls with official manufacturer announcements
- Check NHTSA, CPSC, or relevant regulatory agencies
- Don't rely solely on news monitoring for compliance
- Cross-reference with regulatory recall databases
- Maintain historical **Product Recall** records
- Include recall data in compliance systems
- Document all **Product Recall** responses
- Follow up with regulatory agencies
- Implement corrective actions
- Communicate with affected customers

***

***

### 📦 Changelog

#### v1.0.0 (February 2025)

**Initial Release:**

- Google News RSS feed integration
- Keyword-based search for product recalls
- RSS item extraction via regex parsing
- Title extraction and HTML entity decoding
- Link extraction for detail URLs
- Publication date extraction and parsing
- Publisher/source extraction
- Unit quantity extraction from titles
- Company/keyword identification
- Deduplication by title normalization
- Standardized date formatting (YYYY-MM-DD)
- Structured recall object creation
- Hazard field (reserved for expansion)
- Real-time feed monitoring
- PPE billing per recall
- Charge limit detection and stopping
- Apify proxy support
- Real-Time Dataset push
- Detailed progress logging
- Comprehensive error handling
- Asyncio executor support

***

### 🧑‍💻 Support & Feedback

- **Issues:** Submit via Apify console with keyword
- **Documentation:** Check Actor details page
- **Community:** Apify forum discussions
- **Feature Requests:** Suggest improvements
- **Bug Reports:** Include keyword and error details

***

### 💾 Apify Integration

#### **Automatic Features**

```python
## Google News RSS query
url = f"https://news.google.com/rss/search?q={quote_plus(keyword + ' recall')}"

## Recall data push
await Actor.push_data(lead)

## PPE charging
charge_result = await Actor.charge(event_name="scraped-result")
```

#### **Output Access**

- **Results Tab**: All **Product Recall** records
- **Export**: JSON, CSV, Excel
- **Filter**: By publisher or date
- **API**: Query via Apify API

***

### 📄 License & Legal

**Terms of Use:**

- Use for legitimate safety and compliance monitoring
- Respect Google News ToS and policies
- Respect news source copyrights
- Don't republish without permission
- Comply with applicable laws
- Use data responsibly for safety purposes

**Disclaimer:**
Product Recall Monitor is provided as-is for monitoring purposes. Users are responsible for ensuring compliance with Google News ToS and applicable recall regulations. Always verify recall information with official manufacturer and regulatory sources.

***

### 🎉 Get Started Today

**Deploy now for **Product Recall** monitoring!**

Use for:

- 📊 Safety Monitoring
- 🔍 Compliance Tracking
- 💡 Risk Assessment
- 📈 Trend Analysis
- 🎯 Alert Management

**Perfect for:**

- Manufacturers
- Compliance Officers
- Product Managers
- Safety Teams
- Regulatory Officers

***

**Last Updated:** February 2025\
**Version:** 1.0.0\
**Status:** Production Ready\
**Platform:** Apify Actor\
**Architecture:** Async/Await\
**Data Source:** Google News RSS

***

### 📚 Related Tools

- SaaS Launch Monitor
- Grants & Funding Opportunities Harvester
- News Mention Alert Engine
- Export Intelligence Monitor

**Your complete Apify-powered **Product Recall** monitoring solution!** 🚀✨

***

### ⚠️ Product Recall Excellence

This Actor is optimized for **Product Recall** monitoring with:

- ✅ Real-time Google News integration
- ✅ Recall news filtering
- ✅ Unit extraction
- ✅ Publisher tracking
- ✅ Date standardization
- ✅ Deduplication
- ✅ PPE billing support
- ✅ Real-time Dataset push
- ✅ Error recovery
- ✅ Production-ready code

**Monitor product recalls effortlessly!** 💎🚀

# Actor input Schema

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

Enter the company or product name (e.g., Toyota, Samsung, battery).

## `useApifyProxy` (type: `boolean`):

Highly recommended to prevent Google News from blocking the requests.

## `apifyProxyGroups` (type: `array`):

Residential proxies are ideal for bypassing search engine checks.

## Actor input object example

```json
{
  "keyword": "Toyota",
  "useApifyProxy": true,
  "apifyProxyGroups": [
    "RESIDENTIAL"
  ]
}
```

# 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": "Toyota"
};

// Run the Actor and wait for it to finish
const run = await client.actor("datapilot/product-recall-monitor").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "keyword": "Toyota" }

# Run the Actor and wait for it to finish
run = client.actor("datapilot/product-recall-monitor").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": "Toyota"
}' |
apify call datapilot/product-recall-monitor --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=datapilot/product-recall-monitor",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Product Recall Monitor",
        "description": "Monitor Google News RSS for product recalls by company or keyword. Collect recall titles, publication dates, publishers, affected vehicle or product units, source links, and timestamps. Fast, lightweight scraper with Apify Proxy support, deduplication, and pay-per-result charging.",
        "version": "0.0",
        "x-build-id": "J4JcJCRv9EUk2qSiX"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/datapilot~product-recall-monitor/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-datapilot-product-recall-monitor",
                "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/datapilot~product-recall-monitor/runs": {
            "post": {
                "operationId": "runs-sync-datapilot-product-recall-monitor",
                "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/datapilot~product-recall-monitor/run-sync": {
            "post": {
                "operationId": "run-sync-datapilot-product-recall-monitor",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "keyword"
                ],
                "properties": {
                    "keyword": {
                        "title": "Search Keyword",
                        "type": "string",
                        "description": "Enter the company or product name (e.g., Toyota, Samsung, battery)."
                    },
                    "useApifyProxy": {
                        "title": "Use Apify Proxy",
                        "type": "boolean",
                        "description": "Highly recommended to prevent Google News from blocking the requests.",
                        "default": true
                    },
                    "apifyProxyGroups": {
                        "title": "Proxy Groups",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "Residential proxies are ideal for bypassing search engine checks.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "RESIDENTIAL",
                                "DATACENTER"
                            ]
                        },
                        "default": [
                            "RESIDENTIAL"
                        ]
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
