# Franchise Expansion Tracker (`datapilot/franchise-expansion-tracker`) Actor

Track franchise expansion news from Google News RSS by keyword. Extract article titles, publishers, publication dates, expansion units, investment amounts, countries, and source links. Automatically removes duplicates and supports Apify Residential Proxy for reliable, scalable scraping.

- **URL**: https://apify.com/datapilot/franchise-expansion-tracker.md
- **Developed by:** [Data Pilot](https://apify.com/datapilot) (community)
- **Categories:** AI, Agents, Developer tools
- **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

## Franchise Expansion Tracker

🏪 **Franchise Expansion Tracker** is a powerful Apify Actor designed to discover, monitor, and analyze **Franchise Expansion Tracker** announcements and news from Google News. This tool provides real-time **Franchise Expansion Tracker** intelligence including franchise names, expansion details, locations, investment amounts, and franchise units. Whether you're tracking franchise opportunities, monitoring competitor expansion, or conducting franchise market research, the Franchise Expansion Tracker delivers actionable **Franchise Expansion Tracker** insights efficiently.

With Google News RSS integration, intelligent pattern extraction, geographic tracking, unit and investment identification, deduplication, and real-time monitoring, the Franchise Expansion Tracker ensures comprehensive **Franchise Expansion Tracker** discovery and analysis. It focuses on key **Franchise Expansion Tracker** signals including expansion announcements, unit counts, investment amounts, and target geographies, making it an essential tool for **Franchise Expansion Tracker** research and franchise market intelligence.

---

### 📋 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)
- [Expansion Types](#-expansion-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 **Franchise Expansion Tracker** news monitoring via Google News RSS.
- **Keyword Search** – Search **Franchise Expansion Tracker** by franchise name or brand.
- **Expansion Discovery** – Discovers newly announced **Franchise Expansion Tracker** announcements.
- **Title Extraction** – Captures complete **Franchise Expansion Tracker** announcement headlines.
- **Publisher Tracking** – Records news source and publication for each **Franchise Expansion Tracker**.
- **Unit Extraction** – Automatically extracts number of franchises, locations, or units being added.
- **Investment Extraction** – Captures investment amounts mentioned in **Franchise Expansion Tracker**.
- **Geographic Tracking** – Identifies target countries/regions for expansion.
- **Date Tracking** – Captures publication date for each **Franchise Expansion Tracker** announcement.
- **URL Capture** – Provides direct links to full **Franchise Expansion Tracker** articles.
- **Deduplication** – Removes duplicate **Franchise Expansion Tracker** announcements across feeds.
- **Entity Cleaning** – Removes HTML entities and formats text properly.
- **Date Parsing** – Converts publication dates to standardized format.
- **Real-Time Monitoring** – Get **Franchise Expansion Tracker** alerts as they're published.
- **Competitive Intelligence** – Track competitor **Franchise Expansion Tracker** activities.
- **Market Analysis** – Analyze franchise growth trends via **Franchise Expansion Tracker** data.
- **Volume Tracking** – Track volume and velocity of **Franchise Expansion Tracker** announcements.
- **Timeline Tracking** – Build timeline of **Franchise Expansion Tracker** events.
- **Growth Pattern Analysis** – Analyze franchise **Franchise Expansion Tracker** patterns.
- **Investment Analysis** – Track **Franchise Expansion Tracker** investment amounts and patterns.
- **Proxy Support** – Apify residential proxy support for reliability.
- **Real-Time Dataset Push** – Pushes results to Apify Dataset with metadata.
- **Detailed Logging** – Comprehensive logging of processing and progress.
- **Asyncio-Friendly** – Non-blocking async/await architecture.

---

### 📊 Data Source

#### **Google News RSS**

- **Authority**: Official Google News aggregation
- **Coverage**: Global **Franchise Expansion Tracker** announcements from thousands of news sources
- **Data**: Real-time expansion 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 Franchise Expansion Tracker accepts a franchise name or brand keyword to search for expansion announcements. It queries Google News RSS with the keyword combined with "franchise expansion" to find relevant announcements. For each result, it extracts key fields including title, publication date, publisher, expansion units, investment amount, and target country. **Franchise Expansion Tracker** items are deduplicated by title to avoid duplicates, then pushed to the dataset in batch. A completion summary is generated with total expansion announcements found.

**Key Processing Steps:**

1. **Input Parsing** – Accept franchise/brand 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
7. **HTML Entity Decoding** – Decode HTML entities in titles
8. **Title Cleaning** – Remove publisher suffix and normalize
9. **Date Parsing** – Convert to standardized date format
10. **Unit Extraction** – Extract franchise/location counts
11. **Investment Extraction** – Extract investment amounts
12. **Country Identification** – Extract target countries
13. **Deduplication** – Check against previously seen titles
14. **Lead Object Creation** – Build structured expansion object
15. **Dataset Push** – Push expansion leads in batch
16. **Summary Logging** – Report statistics

**Key Benefits:**

- Stay informed about **Franchise Expansion Tracker** announcements immediately
- Monitor specific franchises for expansion plans
- Track unit growth and investment patterns
- Build historical **Franchise Expansion Tracker** database
- Understand franchise growth strategies
- Identify expansion trends and patterns

---

### 📥 Input

The Actor accepts the following input parameters:

| Field | Type | Default | Description |
|-------|------|---------|-------------|
| `keyword` | string | required | Franchise/brand name to monitor for **Franchise Expansion Tracker** |
| `useApifyProxy` | boolean | `true` | Enable Apify residential proxies |
| `apifyProxyGroups` | array | `["RESIDENTIAL"]` | Proxy group configuration |

**Example Input:**

```json
{
  "keyword": "McDonald's",
  "useApifyProxy": true
}
````

**Monitor Quick Service Restaurant:**

```json
{
  "keyword": "Subway"
}
```

**Track Coffee Chain Expansion:**

```json
{
  "keyword": "Starbucks"
}
```

***

### 📤 Output

The Actor pushes **Franchise Expansion Tracker** records with the following structure:

**Franchise Expansion Record:**

| Field | Type | Description |
|-------|------|-------------|
| `title` | string | **Franchise Expansion Tracker** announcement headline |
| `publisher` | string | News source/publisher name |
| `date` | string | Publication date (YYYY-MM-DD) |
| `units` | string | Number of franchises/locations being added |
| `investment` | string | Investment amount in expansion |
| `country` | string | Target country or region |
| `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 Franchise Expansion Record:**

```json
{
  "title": "McDonald's Plans Aggressive Expansion with 500 New Locations Across Asia-Pacific",
  "publisher": "Reuters",
  "date": "2025-02-14",
  "units": "500 franchises",
  "investment": "$1.2 billion",
  "country": "USA",
  "detail_url": "https://news.google.com/articles/CCAiC...",
  "source": "Google News RSS",
  "keyword": "McDonald's",
  "scraped_at": "2025-02-14T12:00:00"
}
```

**Example Multiple Expansion Records (Batch):**

```json
[
  {
    "title": "Subway Announces 1,000 New Franchises in Growth Initiative",
    "publisher": "Business Wire",
    "date": "2025-02-13",
    "units": "1,000 locations",
    "investment": "$500 million",
    "country": "USA",
    "detail_url": "https://news.google.com/articles/...",
    "source": "Google News RSS",
    "keyword": "Subway",
    "scraped_at": "2025-02-14T12:00:00"
  },
  {
    "title": "Starbucks to Open 350 New Stores in Europe",
    "publisher": "Associated Press",
    "date": "2025-02-12",
    "units": "350 stores",
    "investment": "$750 million",
    "country": "UK",
    "detail_url": "https://news.google.com/articles/...",
    "source": "Google News RSS",
    "keyword": "Starbucks",
    "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
- **Pattern Matching:** Regex for unit, investment, country extraction
- **Date Parsing:** datetime for standardized formatting
- **Query Building:** urllib.parse for URL encoding
- **Async:** asyncio for non-blocking operations
- **Deduplication:** Set-based tracking by title
- **Proxy:** Apify Proxy with RESIDENTIAL configuration
- **Logging:** Apify Actor logging system
- **Platform:** Apify Actor serverless environment

***

### 📊 Data Fields Explained

#### **Expansion Identification**

- **title**: Complete **Franchise Expansion Tracker** announcement title
- **keyword**: Franchise/brand name searched

#### **Scope Information**

- **units**: Number of franchises/locations being added
- **investment**: Investment amount in expansion
- **country**: Target geographic region

#### **Timeline**

- **date**: When **Franchise Expansion Tracker** 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)

***

### 🏪 Expansion Types

The Franchise Expansion Tracker identifies all **Franchise Expansion Tracker** types:

#### **Unit Expansion**

- New franchise locations
- Store openings
- Market penetration
- Geographic expansion

#### **Investment Expansion**

- Capital investment amounts
- Growth funding
- Development plans
- Infrastructure investment

#### **Geographic Expansion**

- International markets
- Regional expansion
- Country-specific launches
- Market entry strategies

#### **Growth Initiatives**

- Rapid expansion programs
- Multi-unit development
- Market acceleration
- Strategic growth

***

### 🎯 Use Cases

- **Franchise Intelligence** – Monitor **Franchise Expansion Tracker** for target franchises
- **Competitive Analysis** – Track competitor **Franchise Expansion Tracker** and growth
- **Investment Research** – Research **Franchise Expansion Tracker** for investment opportunities
- **Market Analysis** – Analyze franchise market trends via **Franchise Expansion Tracker**
- **Growth Tracking** – Monitor franchise growth and expansion patterns
- **Opportunity Identification** – Identify franchise opportunities via expansion announcements
- **Franchisee Intelligence** – Research which franchises are expanding rapidly
- **Market Entry Research** – Understand market entry strategies via expansion tracking
- **Economic Indicators** – Use franchise expansion as economic health indicator
- **Regional Analysis** – Analyze regional franchise expansion patterns
- **Franchise Comparison** – Compare expansion rates across franchises
- **Business Development** – Identify partnership opportunities in expanding franchises
- **Real Estate Intelligence** – Track commercial real estate expansion needs
- **Supplier Intelligence** – Identify growing franchises needing suppliers
- **PR Monitoring** – Monitor franchise-related news and announcements

***

### 🚀 Quick Start

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

Go to Apify Console and enter:

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

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

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

- Connect to Google News RSS
- Search for franchise expansion matching keyword
- Extract expansion details
- Deduplicate results
- Push to Dataset

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

Console shows:

```
[Google News RSS] Tracking franchise expansion for: 'Chipotle'
Apify Proxy integration loaded successfully.
Extracted 18 raw feed elements from the XML channel.
Successfully processed and saved 16 franchise leads!
```

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

- **Results Tab**: All **Franchise Expansion Tracker** records
- **Export**: JSON, CSV, Excel
- **Filter**: By date or country
- **Sort**: By units or investment

***

### ⚙️ Configuration

#### **Franchise Monitoring**

QSR (Quick Service Restaurant):

```json
{
  "keyword": "Taco Bell"
}
```

Coffee Chain:

```json
{
  "keyword": "Dunkin'"
}
```

Retail Franchise:

```json
{
  "keyword": "7-Eleven"
}
```

***

### 📈 Performance

#### **Processing Speed**

- \~10-20 seconds per search
- \~15-30 expansion announcements 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

#### **Batch Billing**

- **Billing Model:** Batch push (not per-announcement PPE)
- **Typical Cost:** Single operation per search
- **Efficiency:** High efficiency, bulk processing

***

### ⚠️ 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 franchisors

#### **Best Practices**

- Verify expansion plans with official franchise announcements
- Check franchise SEC filings for investor relations info
- Review franchise press releases for official details
- Cross-reference with regulatory filings
- Maintain historical expansion records
- Monitor for franchise failures
- Understand franchise economics
- Follow up with franchisees
- Document expansion timelines
- Analyze expansion success rates

### 📦 Changelog

**Initial Release:**

- Google News RSS feed integration
- Keyword-based search for franchise expansion
- 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/franchise count extraction from titles
- Investment amount extraction from titles
- Country/region extraction from titles
- Deduplication by title normalization
- Standardized date formatting (YYYY-MM-DD)
- Structured expansion lead object creation
- Real-time feed monitoring
- Batch 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

***

### 📄 License & Legal

**Terms of Use:**

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

**Disclaimer:**
Franchise Expansion Tracker is provided as-is for monitoring purposes. Users are responsible for ensuring compliance with Google News ToS and applicable regulations. Always verify expansion details with official franchise and company sources.

***

### 🎉 Get Started Today

**Deploy now for **Franchise Expansion Tracker** monitoring!**

Use for:

- 📊 Expansion Monitoring
- 🔍 Competitive Intelligence
- 💡 Market Analysis
- 📈 Trend Analysis
- 🎯 Opportunity Identification

**Perfect for:**

- Franchise Investors
- Business Analysts
- Real Estate Professionals
- Supply Chain Managers
- Market Researchers

***

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

***

### 📚 Related Tools

- Public Procurement Intelligence Hub
- Product Recall Monitor
- SaaS Launch Monitor
- News Mention Alert Engine

**Your complete Apify-powered **Franchise Expansion Tracker** monitoring solution!** 🚀✨

***

### 🏪 Franchise Expansion Excellence

This Actor is optimized for **Franchise Expansion Tracker** monitoring with:

- ✅ Real-time Google News integration
- ✅ Expansion news filtering
- ✅ Unit extraction
- ✅ Investment extraction
- ✅ Geographic tracking
- ✅ Publisher tracking
- ✅ Date standardization
- ✅ Deduplication
- ✅ Real-time Dataset push
- ✅ Error recovery
- ✅ Production-ready code

**Monitor franchise expansions effortlessly!** 💎🚀

# Actor input Schema

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

Enter industry or brand (e.g. food, fitness, cleaning, retail).

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

Enable proxy to safely route requests through Apify servers.

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

Select proxy networks (RESIDENTIAL is highly recommended).

## Actor input object example

```json
{
  "keyword": "food",
  "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": "food"
};

// Run the Actor and wait for it to finish
const run = await client.actor("datapilot/franchise-expansion-tracker").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": "food" }

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

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Franchise Expansion Tracker",
        "description": "Track franchise expansion news from Google News RSS by keyword. Extract article titles, publishers, publication dates, expansion units, investment amounts, countries, and source links. Automatically removes duplicates and supports Apify Residential Proxy for reliable, scalable scraping.",
        "version": "0.0",
        "x-build-id": "ScaKFugjfuxSKvvkb"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/datapilot~franchise-expansion-tracker/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-datapilot-franchise-expansion-tracker",
                "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~franchise-expansion-tracker/runs": {
            "post": {
                "operationId": "runs-sync-datapilot-franchise-expansion-tracker",
                "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~franchise-expansion-tracker/run-sync": {
            "post": {
                "operationId": "run-sync-datapilot-franchise-expansion-tracker",
                "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 industry or brand (e.g. food, fitness, cleaning, retail)."
                    },
                    "useApifyProxy": {
                        "title": "Use Apify Proxy",
                        "type": "boolean",
                        "description": "Enable proxy to safely route requests through Apify servers.",
                        "default": true
                    },
                    "apifyProxyGroups": {
                        "title": "Proxy Groups",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "Select proxy networks (RESIDENTIAL is highly recommended).",
                        "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
