# Company Info Scraper – Contacts, Tech Stack, Social Profiles (`scrapepilot/company-info-scraper-contacts-tech-stack-social-profiles`) Actor

Crawl any company website: extract emails (support/sales/decision-maker), phone numbers, addresses, social profiles, technologies, industry, size, lead score. Smart crawling + JS fallback. $9.99/month. Perfect for B2B leads & competitor intel.

- **URL**: https://apify.com/scrapepilot/company-info-scraper-contacts-tech-stack-social-profiles.md
- **Developed by:** [Scrape Pilot](https://apify.com/scrapepilot) (community)
- **Categories:** Lead generation, Automation, Developer tools
- **Stats:** 4 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

$9.99/month + usage

To use this Actor, you pay a monthly rental fee to the developer. The rent is subtracted from your prepaid usage every month after the free trial period.You also pay for the Apify platform usage, which gets cheaper the higher Apify subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#rental-actors

## 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

---
## 🏢 Company Info Scraper – Extract Business Data, Contacts, Tech Stack, Social Profiles

**Crawl any company website – extract company name, description, logo, favicon, email addresses (support/sales/decision‑maker), phone numbers, social media profiles, physical addresses, technologies used, industry, business model, and more.**  
Includes smart crawling (priority pages first), fallback browser rendering, checkpoint/resume, and lead scoring. Perfect for lead generation, sales intelligence, competitor research, and market analysis.

---

### 💡 What is the Company Info Scraper?

The **Company Info Scraper** is an intelligent Apify actor that analyzes any business website and returns a structured, comprehensive profile of that company. It goes far beyond simple scraping:

- **Intelligent crawling** – prioritizes contact, about, careers, blog, pricing, and portal pages first.
- **Multi‑engine fetching** – tries lightweight HTTP (curl_cffi) first, falls back to headless Chromium (Playwright) for JavaScript‑heavy sites.
- **Contact extraction** – finds email addresses (categorised into support, sales, decision‑maker, general), phone numbers (E.164 format), physical addresses (with pattern matching).
- **Social media discovery** – detects Facebook, Instagram, LinkedIn, Twitter/X, YouTube, TikTok, Pinterest, GitHub, Threads, Snapchat, Reddit.
- **Technology detection** – identifies CMS (WordPress, Shopify, Webflow), analytics (GA, GTM), chat widgets (Intercom, Zendesk), payment providers (Stripe, PayPal), and more.
- **Business intelligence** – infers industry, company size estimate, business model (B2B SaaS, E‑commerce, Agency, etc.), and lead scoring (High/Medium/Low).
- **Resume & checkpoint** – saves progress after every page; survives interruptions.
- **Bulk processing** – supply many start URLs, and the actor crawls each independently.

The output includes everything a sales or research team needs to qualify a lead – direct contact URLs, email buckets, phone numbers, social handles, and even a lead quality score.

---

### 🚀 Key Features

| Feature | Description |
|---------|-------------|
| **Smart priority crawling** | Visits `contact`, `about`, `careers`, `privacy`, `terms`, `blog`, `pricing`, `login`, `portal`, `product` pages early. |
| **Dual fetch engine** | Uses `curl_cffi` with Chrome impersonation + fallback to Playwright (full JS rendering). |
| **Contact extraction** | Emails (categorised into support, sales, decision-maker, general), phone numbers (E.164), physical addresses. |
| **Social media discovery** | Detects 13+ social platforms; returns full profile URLs. |
| **Technology stack detection** | Recognises 30+ technologies (CMS, analytics, chat, payments, hosting). |
| **Business insights** | Industry (10 categories), company size (from hints or number of employees), business model, lead score. |
| **Checkpoint & resume** | Saves state after every page; restart without re‑scanning visited URLs. |
| **Bulk domains** | Process hundreds of websites in one run (each independently crawled). |
| **Flat monthly pricing** | $9.99/month – unlimited runs, no per‑page fees. |
| **Clean JSON output** | One comprehensive item per domain + intermediate items for each scanned page (with `status` field). |

---

### 📥 Input Parameters

The actor accepts a JSON object with the following fields:

| Parameter               | Type            | Required | Default | Description |
|-------------------------|-----------------|----------|---------|-------------|
| `startUrls`             | array of objects| **Yes**  | –       | List of starting URLs (e.g., `[{"url": "https://example.com"}]`). |
| `maxPagesPerDomain`     | integer         | No       | `20`    | Maximum pages to crawl per domain (prevents runaway crawls). |
| `concurrency`           | integer         | No       | `20`    | Number of concurrent HTTP requests. |
| `regionHint`            | string          | No       | `"US"`  | Two‑letter country code for phone number parsing (e.g., `"US"`, `"BD"`). |
| `proxyConfiguration`    | object          | No       | –       | Apify proxy configuration. Residential proxies recommended. |

#### Example Input

```json
{
  "startUrls": [
    {"url": "https://stripe.com"},
    {"url": "https://shopify.com"},
    {"url": "https://airbnb.com"}
  ],
  "maxPagesPerDomain": 30,
  "concurrency": 15,
  "regionHint": "US",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": ["RESIDENTIAL"]
  }
}
````

***

### 📤 Output Fields

The actor pushes **two types of items** to the dataset:

1. **Page‑level items** (one per crawled page, `status: "scanned"`) – useful for intermediate debugging.
2. **One final item** per domain (when crawling finishes or `maxPagesPerDomain` reached, `status: "completed"` or `"partial"`).

Below is a sample of the **final company item** (most relevant for users):

```json
{
  "domain": "stripe.com",
  "website": "https://stripe.com",
  "company_name": "Stripe",
  "website_title": "Stripe: Financial infrastructure for the internet",
  "website_description": "Stripe powers online and in-person payment processing and financial solutions for businesses of all sizes.",
  "industry": "Fintech",
  "country": "United States",
  "company_size_estimate": "1000+",
  "business_model": "B2B SaaS",
  "founded_year": "2010",
  "logo_url": "https://stripe.com/img/about/logos/logomark.png",
  "favicon_url": "https://stripe.com/favicon.ico",
  "phone_numbers": ["+1-888-963-8944"],
  "emails": ["support@stripe.com", "sales@stripe.com", "press@stripe.com"],
  "support_emails": ["support@stripe.com"],
  "sales_emails": ["sales@stripe.com"],
  "decision_maker_emails": [],
  "email_buckets": {
    "support": ["support@stripe.com"],
    "sales": ["sales@stripe.com"],
    "general": [],
    "other": ["press@stripe.com"]
  },
  "addresses": ["3180 18th St, San Francisco, CA 94110"],
  "social_profiles": {
    "twitter": ["https://twitter.com/stripe"],
    "linkedin": ["https://linkedin.com/company/stripe"],
    "github": ["https://github.com/stripe"]
  },
  "contact_url": "https://stripe.com/contact",
  "about_url": "https://stripe.com/about",
  "careers_url": "https://stripe.com/jobs",
  "privacy_url": "https://stripe.com/privacy",
  "terms_url": "https://stripe.com/legal",
  "blog_url": "https://stripe.com/blog",
  "pricing_url": "https://stripe.com/pricing",
  "login_url": "https://dashboard.stripe.com/login",
  "customer_portal_url": "https://dashboard.stripe.com",
  "product_url": "https://stripe.com/products",
  "technologies": ["Cloudflare", "Google Analytics", "React", "Stripe", "PayPal"],
  "has_contact_form": true,
  "has_live_chat": false,
  "newsletter_signup": true,
  "accepts_online_payments": true,
  "pages_scanned": 25,
  "status": "completed",
  "lead_score": 85,
  "lead_quality": "High",
  "scraped_at": "2026-06-01T12:30:00Z"
}
```

| Field                     | Type    | Description |
|---------------------------|---------|-------------|
| `domain`                  | string  | Company domain (e.g., `stripe.com`). |
| `company_name`            | string  | Best‑guess company name (from OG tags, title, H1). |
| `website_title`           | string  | Page `<title>` of homepage or first meaningful page. |
| `website_description`     | string  | Meta description / OG description. |
| `industry`                | string  | Detected industry (Fintech, E‑commerce, SaaS, etc.). |
| `country`                 | string  | Detected country from address or text. |
| `company_size_estimate`   | string  | `1-10`, `11-50`, ..., `1000+` or `Unknown`. |
| `business_model`          | string  | `B2B SaaS`, `E-commerce`, `Agency / Services`, etc. |
| `founded_year`            | string  | From JSON‑LD or text (4‑digit year). |
| `logo_url`                | string  | URL of the company logo (if found). |
| `favicon_url`             | string  | URL of the favicon. |
| `phone_numbers`           | array   | E.164 formatted phone numbers. |
| `emails`                  | array   | All found email addresses. |
| `support_emails`          | array   | Emails matching `support@`, `help@`, etc. |
| `sales_emails`            | array   | Emails matching `sales@`, `business@`, etc. |
| `decision_maker_emails`   | array   | Emails matching `ceo@`, `founder@`, `director@`, etc. |
| `email_buckets`           | object  | Categorised emails for easy integration. |
| `addresses`               | array   | Physical address strings. |
| `social_profiles`         | object  | Dictionary of platform → array of URLs. |
| `contact_url`             | string  | First discovered contact page URL. |
| `about_url`               | string  | First discovered about page URL. |
| `careers_url`             | string  | Careers/jobs page URL. |
| `privacy_url`             | string  | Privacy policy URL. |
| `terms_url`               | string  | Terms of service URL. |
| `blog_url`                | string  | Blog/news page URL. |
| `pricing_url`             | string  | Pricing page URL. |
| `login_url`               | string  | Login page URL. |
| `customer_portal_url`     | string  | Customer portal/dashboard URL. |
| `product_url`             | string  | Product/solutions URL. |
| `technologies`            | array   | Detected technology stack (CMS, analytics, etc.). |
| `has_contact_form`        | boolean | Whether a contact form was detected. |
| `has_live_chat`           | boolean | Live chat widget detected (Intercom, etc.). |
| `newsletter_signup`       | boolean | Newsletter subscription form detected. |
| `accepts_online_payments` | boolean | Payment methods (Stripe, PayPal, etc.) detected. |
| `pages_scanned`           | integer | Number of pages crawled for this domain. |
| `status`                  | string  | `completed` (reached limit or finished), `partial` (still links left but stopped). |
| `lead_score`              | integer | Score 0–100 based on available data (emails, phones, social, etc.). |
| `lead_quality`            | string  | `High` (≥70), `Medium` (35–69), `Low` (<35). |
| `scraped_at`              | string  | ISO timestamp. |

***

### 💰 Pricing

| Plan                 | Price          | Description |
|----------------------|----------------|-------------|
| **Monthly Subscription** | **$9.99** | Unlimited runs – no per‑page fees, no hidden costs. |

- You can scrape as many domains as you want, with up to `maxPagesPerDomain` per domain, as many times per month as you like.
- The actor automatically saves checkpoints; if you stop early, it resumes from where it left off.
- **No pay‑per‑event** – this is a fixed monthly subscription.

***

### 🛠 How to Use on Apify

1. **Create a task** with this actor.
2. **Provide `startUrls`** – one or more company website URLs.
3. **Adjust `maxPagesPerDomain`** (default 20) – higher values give more thorough results but take longer.
4. **Set `concurrency`** (default 20) – increase for faster crawling (but may trigger blocking).
5. **Enable residential proxies** – strongly recommended to avoid being blocked.
6. **Run** – the actor will crawl each domain, extract all data, and push results to the Dataset.
7. **Export** – download final company profiles as JSON, CSV, or Excel.

> **Tip:** The actor produces both page‑level items (many) and a final summary item per domain. Filter by `status: "completed"` or `status: "partial"` to get only the final company profiles.

#### Running via API

```bash
curl -X POST "https://api.apify.com/v2/acts/your-username~company-info-scraper/runs" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -d '{
    "startUrls": [{"url": "https://stripe.com"}],
    "maxPagesPerDomain": 15,
    "proxyConfiguration": {"useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"]}
  }'
```

***

### 🎯 Use Cases

| Use Case                     | How the Company Info Scraper Helps |
|------------------------------|-------------------------------------|
| **Lead generation**          | Extract contact emails, phones, social profiles, and decision‑maker emails for outbound campaigns. |
| **Sales intelligence**       | Score leads automatically (`lead_quality`) and identify technologies used (e.g., Shopify stores → pitch e‑commerce solutions). |
| **Competitor research**      | Gather website tech stack, business model, and industry classification for benchmarking. |
| **Market analysis**          | Batch‑process hundreds of companies in a sector to identify common tools, locations, and sizes. |
| **Mergers & acquisitions**   | Quickly collect company overview, founding year, and contact channels for initial due diligence. |
| **Partnership sourcing**     | Find potential partners by discovering their contact and social pages. |

***

### ❓ Frequently Asked Questions

**1. Do I need a proxy?**\
Residential proxies are strongly recommended, especially for many domains or for sites using Cloudflare. Datacenter IPs may get blocked quickly.

**2. How many pages does it crawl?**\
`maxPagesPerDomain` controls the limit (default 20). The actor prioritises important pages (contact, about, careers, etc.), so even a low limit gives good data.

**3. What happens if the website requires JavaScript?**\
The actor tries HTTP first (fast). If that fails or returns minimal content, it falls back to a headless Chrome browser (Playwright) to render the page.

**4. How does it categorise emails?**

- `support_emails`: starts with `support@`, `help@`, `care@`, `service@`, `contact@`, `hello@`.
- `sales_emails`: starts with `sales@`, `business@`, `partners@`, `bd@`.
- `decision_maker_emails`: starts with `ceo@`, `founder@`, `owner@`, `president@`, `director@`, `vp@`, `chief@`, `head@`, `lead@`.
- `general`: `info@`, `hello@`, `contact@` (if not already captured).
- `other`: all remaining.

**5. How is the lead score calculated?**\
Points are added for:

- Phone numbers (20), emails (20), addresses (10), social profiles (10), contact page (10), company name (5), technologies (5), description (5), logo/favicon (5), live chat (5), newsletter (5).\
  Total ≥70 = High, 35–69 = Medium, <35 = Low.

**6. Can I run this for thousands of domains?**\
Yes, but be mindful of proxy usage (residential proxies are metered). For very large lists, spread runs over time or use a dedicated proxy pool.

**7. Does it extract the full website content?**\
No – it focuses on metadata, contact info, and structured data. It does not archive entire pages.

**8. What is the checkpoint feature?**\
If the actor stops (due to spending limit, timeout, or user interruption), it saves which pages have been visited. When you restart, it resumes without re‑scanning already processed URLs.

**9. How do I get only the final company profile (not the page‑level items)?**\
After the run, filter the dataset by `status: "completed"` or `"partial"`. Page‑level items have `status: "scanned"`.

**10. What if the website is not in English?**\
The actor works with any language – pattern matching (addresses, phone numbers) is language‑agnostic, and keyword detection (for industry, social media) uses a base set of English terms. You can modify the `INDUSTRY_HINTS` etc. in the source code for other languages.

***

***

### 🔍 SEO Keywords

`company information scraper`, `business intelligence`, `lead generation tool`, `website technology detector`, `social media finder`, `email extractor`, `phone number scraper`, `company contact scraper`, `business data extraction`, `Apify company scraper`, `B2B lead enrichment`, `competitor analysis tool`, `company size estimator`

***

### 🔗 Related Actors

- **[LinkedIn Company Scraper](https://apify.com/your-username/linkedin-company-scraper)** – Extract data from LinkedIn company pages.
- **[Instagram Profile Scraper](https://apify.com/your-username/instagram-profile-scraper)** – Retrieve public Instagram profile info.
- **[Amazon Product Scraper](https://apify.com/your-username/amazon-product-scraper)** – Extract product details and pricing.

***

***

**Start extracting complete company intelligence – only $9.99/month. Crawl any business website, get contacts, tech stack, social profiles, and lead scoring.**

````

# Actor input Schema

## `startUrls` (type: `array`):

List of company websites to extract data from.
## `maxPagesPerDomain` (type: `integer`):

How many internal pages to crawl per company (higher means better real data).
## `regionHint` (type: `string`):

Default country code hint for parsing local numbers.
## `proxyConfiguration` (type: `object`):

Select Residential Proxies to bypass bot protection.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://openai.com/"
    }
  ],
  "maxPagesPerDomain": 15,
  "regionHint": "US",
  "proxyConfiguration": {
    "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 = {
    "startUrls": [
        {
            "url": "https://openai.com/"
        }
    ],
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapepilot/company-info-scraper-contacts-tech-stack-social-profiles").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 = {
    "startUrls": [{ "url": "https://openai.com/" }],
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("scrapepilot/company-info-scraper-contacts-tech-stack-social-profiles").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 '{
  "startUrls": [
    {
      "url": "https://openai.com/"
    }
  ],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call scrapepilot/company-info-scraper-contacts-tech-stack-social-profiles --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=scrapepilot/company-info-scraper-contacts-tech-stack-social-profiles",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Company Info Scraper – Contacts, Tech Stack, Social Profiles",
        "description": "Crawl any company website: extract emails (support/sales/decision-maker), phone numbers, addresses, social profiles, technologies, industry, size, lead score. Smart crawling + JS fallback. $9.99/month. Perfect for B2B leads & competitor intel.",
        "version": "0.0",
        "x-build-id": "zRTBgmQ9CDlrImFcX"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/scrapepilot~company-info-scraper-contacts-tech-stack-social-profiles/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-scrapepilot-company-info-scraper-contacts-tech-stack-social-profiles",
                "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/scrapepilot~company-info-scraper-contacts-tech-stack-social-profiles/runs": {
            "post": {
                "operationId": "runs-sync-scrapepilot-company-info-scraper-contacts-tech-stack-social-profiles",
                "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/scrapepilot~company-info-scraper-contacts-tech-stack-social-profiles/run-sync": {
            "post": {
                "operationId": "run-sync-scrapepilot-company-info-scraper-contacts-tech-stack-social-profiles",
                "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": [
                    "startUrls"
                ],
                "properties": {
                    "startUrls": {
                        "title": "Company Website URLs",
                        "type": "array",
                        "description": "List of company websites to extract data from.",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "maxPagesPerDomain": {
                        "title": "Max Pages Per Domain",
                        "type": "integer",
                        "description": "How many internal pages to crawl per company (higher means better real data).",
                        "default": 15
                    },
                    "regionHint": {
                        "title": "Region Hint (ISO 3166-1 alpha-2)",
                        "type": "string",
                        "description": "Default country code hint for parsing local numbers.",
                        "default": "US"
                    },
                    "proxyConfiguration": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Select Residential Proxies to bypass bot protection."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
