# Website Company Address Extractor (`automation-lab/website-company-address-extractor`) Actor

🏢 Extract structured HQ, registered, mailing, billing, and office addresses from public company websites. Every record includes its source URL, matched evidence, extraction method, and confidence score.

- **URL**: https://apify.com/automation-lab/website-company-address-extractor.md
- **Developed by:** [Stas Persiianenko](https://apify.com/automation-lab) (community)
- **Categories:** Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js/docs.md):

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

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Website Company Address Extractor

Extract headquarters, registered, mailing, billing, and office addresses from public company websites.

Provide company domains or URLs and receive structured postal records with the exact source page, matched evidence, extraction method, and confidence score.

The actor follows a small, focused set of public contact, about, location, legal, and imprint pages.
It does not require a paid enrichment API or login.

### What does Website Company Address Extractor do?

Website Company Address Extractor turns a list of company websites into address records ready for review or enrichment.

It can:

- 🏢 find headquarters and branch offices
- ⚖️ identify registered or legal addresses
- ✉️ classify mailing and billing addresses when the page labels them
- 🧩 split addresses into street, city, region, postal code, and country where possible
- 🔗 preserve the public source URL and matched page text
- 📊 attach a transparent confidence score and extraction method
- 🔎 discover likely contact, office, location, legal, and imprint pages
- ♻️ deduplicate repeated footer and navigation addresses

Each output row represents one unique company postal address.

### Who is it for?

#### RevOps and sales operations

Refresh missing company addresses in CRM account records without manually opening every domain.
Use the source evidence to route low-confidence rows for review.

#### KYB and vendor analysts

Check whether a supplier publishes a registered office, corporate headquarters, or regional location.
Keep the source URL alongside the address for an auditable research trail.

#### Agencies and lead-generation teams

Enrich prospect-domain lists with public location information before segmentation, territory assignment, or outreach planning.

#### Data engineers

Schedule repeat runs, export normalized JSON or CSV, and feed address records into a warehouse or matching pipeline.

### Why use this company address extractor?

A search result or generic page scraper can return snippets, but enrichment workflows need provenance and structure.
This actor combines focused crawling with several extraction methods:

1. schema.org `PostalAddress` JSON-LD
2. postal-address microdata
3. semantic HTML `<address>` blocks
4. visible postal text containing street and postal-code evidence

The output tells you which method produced each record.
That makes automated filtering safer than treating every number-like string as an address.

### Supported websites

The actor works with public company websites that publish postal addresses in server-rendered HTML.
Common sources include:

- company contact pages
- global or regional office directories
- about and corporate pages
- legal, imprint, and impressum pages
- location or branch pages
- footer address blocks
- JSON-LD organization markup

Coverage depends on what each company publishes.
A company that only shows a map image or a JavaScript-only widget may require a different workflow.

### How the bounded crawl works

For each input website, the actor fetches the supplied URL first.
It then discovers same-site links whose URL or label suggests contact, about, location, office, headquarters, legal, company, or imprint content.

The `maxPagesPerWebsite` limit prevents an accidental full-site crawl.
The default is only five pages.
No off-site links are followed.

If one page fails, the actor continues with the other pages and websites.
If every supplied website produces zero addresses, the run fails instead of silently returning an empty successful dataset.

### Input

The required input is `startUrls`.
Add full URLs or bare domains.

```json
{
  "startUrls": [
    "https://www.hubspot.com/company/contact",
    "mozilla.org"
  ],
  "maxPagesPerWebsite": 5,
  "maxAddressesPerWebsite": 20,
  "requestTimeoutSecs": 20
}
````

| Field | Type | Default | Description |
|---|---|---:|---|
| `startUrls` | array | required | Company domains, homepages, or public contact/location URLs |
| `maxPagesPerWebsite` | integer | `5` | Maximum focused pages fetched per company, from 1 to 10 |
| `maxAddressesPerWebsite` | integer | `20` | Maximum unique addresses saved per company |
| `requestTimeoutSecs` | integer | `20` | Per-page HTTP timeout, from 5 to 60 seconds |
| `proxyConfiguration` | object | disabled | Optional Apify Proxy settings for sites that block your direct IP |

Use low crawl limits for a first run.
Increase them only for companies with large office directories.

### Output data

The default dataset contains one row per unique address.

| Field | Description |
|---|---|
| `companyName` | Name inferred from public site metadata or heading |
| `domain` | Normalized input website hostname |
| `addressType` | `headquarters`, `registered`, `mailing`, `billing`, `office`, or `unknown` |
| `fullAddress` | Complete normalized address string |
| `streetAddress` | Street component when detected |
| `addressLocality` | City or locality when detected |
| `addressRegion` | State, province, or region when detected |
| `postalCode` | ZIP or postal code when detected |
| `addressCountry` | Country name when detected |
| `sourceUrl` | Exact public page containing the evidence |
| `evidenceText` | Matched publisher text, capped at 500 characters |
| `confidence` | Extraction confidence from `0.50` to `0.99` |
| `extractionMethod` | `json-ld`, `microdata`, `address-element`, or `visible-text` |
| `scrapedAt` | UTC extraction timestamp |

Optional components are omitted when a publisher exposes only an unstructured postal block.
`fullAddress`, `sourceUrl`, and `evidenceText` remain available for review.

### Example output

```json
{
  "companyName": "HubSpot",
  "domain": "hubspot.com",
  "addressType": "headquarters",
  "fullAddress": "2 Canal Park, Cambridge, MA 02141, United States",
  "streetAddress": "2 Canal Park",
  "addressLocality": "Cambridge",
  "addressRegion": "MA",
  "postalCode": "02141",
  "addressCountry": "United States",
  "sourceUrl": "https://www.hubspot.com/company/contact",
  "evidenceText": "Global Headquarters 2 Canal Park Cambridge, MA 02141 United States",
  "confidence": 0.82,
  "extractionMethod": "visible-text",
  "scrapedAt": "2026-07-17T16:00:00.000Z"
}
```

Actual records depend on the current public page.

### Address types and classification

Classification uses nearby publisher labels.
For example, “Global Headquarters” maps to `headquarters`, while “Registered office” maps to `registered`.

The actor does not invent a type when the page provides no context.
Such records use `unknown`.
You can filter those rows for manual review or combine them with your own business rules.

### Confidence scores

Confidence reflects extraction evidence, not legal verification.
Structured JSON-LD and microdata begin with the strongest score.
Semantic address elements score above generic visible text.
Complete street, postal code, and country components increase confidence.

For sensitive KYB decisions, verify records against an official registry or primary legal document.

### How much does it cost to extract company addresses?

The actor uses pay-per-event pricing:

- `$0.005` once per run
- company address event priced by your Apify tier
- BRONZE reference price: `$0.00017208` per unique address
- higher tiers receive the published volume discount

You do not pay per fetched page.
A duplicate address repeated in a footer is charged only once per website after normalization.
Always check the live pricing panel for the tier that applies to your account.

### Step-by-step: enrich company domains

1. Open the actor input page.
2. Paste company domains or public URLs into **Company domains or URLs**.
3. Keep the five-page default for the first run.
4. Click **Start**.
5. Review the default dataset.
6. Filter by confidence or address type.
7. Export JSON, CSV, Excel, XML, or RSS.
8. Save the task and schedule it for recurring refreshes if needed.

### Tips for better results

- 🎯 Supply a known contact or location URL when you have one.
- 📉 Keep page limits low for large domain batches.
- 🌍 Preserve the source URL when merging records across regions.
- 🧪 Review `unknown` address types before using them in legal workflows.
- 🔁 Schedule refreshes because office pages change over time.
- 🛡️ Enable a proxy only when a target blocks your direct connection.
- 📋 Use confidence and evidence text to build a human-review queue.

### Proxies and blocked websites

Most ordinary public company pages work without a proxy.
Leaving proxy use disabled is cheaper and faster.

When a site consistently returns an access block from your current network, enable Apify Proxy in the input.
Proxy access does not guarantee extraction from a JavaScript-only app or CAPTCHA page.
The actor does not bypass logins or private access controls.

### Integrations

#### CRM enrichment

Export CSV and match `domain` to company-account records in HubSpot, Salesforce, Pipedrive, or another CRM.
Store `sourceUrl`, `confidence`, and `scrapedAt` with the enriched value.

#### Data warehouses

Send completed datasets to BigQuery, Snowflake, PostgreSQL, or a webhook-driven ETL process.
Use domain plus normalized address as a deduplication key.

#### Make and Zapier

Trigger a run when a new company domain enters a lead table.
Route strong matches directly to enrichment and weak matches to a review queue.

#### Scheduled vendor monitoring

Create an Apify task and schedule weekly or monthly refreshes.
Compare current addresses with the previous dataset to detect location changes.

### API usage with JavaScript

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

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/website-company-address-extractor').call({
  startUrls: ['https://www.hubspot.com/company/contact'],
  maxPagesPerWebsite: 5,
  maxAddressesPerWebsite: 20,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

### API usage with Python

```python
from apify_client import ApifyClient
import os

client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('automation-lab/website-company-address-extractor').call(run_input={
    'startUrls': ['https://www.hubspot.com/company/contact'],
    'maxPagesPerWebsite': 5,
    'maxAddressesPerWebsite': 20,
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)
```

### API usage with cURL

```bash
curl -X POST \
  'https://api.apify.com/v2/acts/automation-lab~website-company-address-extractor/runs?token=APIFY_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"startUrls":["https://www.hubspot.com/company/contact"],"maxPagesPerWebsite":5}'
```

Use the returned run ID to poll status and retrieve the default dataset.

### Use with Apify MCP and AI agents

Connect Apify MCP to let Claude or another agent run this extractor as a tool.

MCP endpoint:

```text
https://mcp.apify.com?tools=automation-lab/website-company-address-extractor
```

Example Claude Code configuration:

```bash
claude mcp add --transport http apify \
  'https://mcp.apify.com?tools=automation-lab/website-company-address-extractor'
```

#### Claude Desktop setup

Add this server to your Claude Desktop MCP configuration:

```json
{
  "mcpServers": {
    "apify": {
      "url": "https://mcp.apify.com?tools=automation-lab/website-company-address-extractor"
    }
  }
}
```

#### Cursor setup

Add the same Apify MCP URL in **Cursor Settings → Tools & MCP → New MCP Server**.
Name it `apify-company-addresses` and choose HTTP transport.

#### VS Code setup

In VS Code with MCP support, add an HTTP server whose URL is the actor-specific Apify MCP endpoint above.
Enable it for your workspace before asking the agent to run extraction.

#### Example prompts for MCP

Try these specific prompts:

- “Extract public office addresses from these five company domains.”
- “Find the registered or headquarters address and include source evidence.”
- “Create a CSV-ready address table for this vendor list.”

### Scheduling and repeat workflows

Company websites change when teams move offices, reorganize regions, or update legal entities.
Create an Apify task with a stable domain list and schedule it monthly.

Store prior datasets externally if you need change detection.
The actor reports the current public evidence rather than maintaining historical state.

### Error handling

A single inaccessible page does not stop the whole batch.
The actor logs the page URL and failure, then continues.

The `OUTPUT` key-value-store record summarizes:

- websites requested
- websites that yielded addresses
- addresses saved
- per-domain errors

A run with no addresses across all inputs fails deliberately.
This protects scheduled pipelines from treating total extraction failure as a valid empty refresh.

### Limitations

- It only extracts addresses published on public HTML pages.
- It does not query government registries or paid enrichment APIs.
- It does not verify whether an address is current or legally authoritative.
- JavaScript-only maps and image-only addresses may not be visible.
- Country-specific parsing is best for common US, Canadian, and UK forms.
- Company names come from site metadata and can reflect a brand rather than a legal entity.
- Optional address components may be absent when the source is unstructured.
- Proxy configuration cannot solve every CAPTCHA or login wall.

### Privacy and legality

Company postal addresses can still be personal data when a business uses a home address.
Use the output for a lawful purpose and apply appropriate retention and access controls.

Only process websites you are authorized to access.
Respect applicable terms, robots guidance, privacy law, database rights, and marketing rules.
Do not use the actor to bypass authentication or technical access restrictions.

### Troubleshooting

#### Why did a domain return no address?

The company may not publish one, the address may be rendered only in JavaScript or an image, or the relevant page may not match the discovery hints.
Try supplying the exact public contact, location, or imprint URL and increase the page cap only when justified.

#### Why is the address type `unknown`?

The page exposed a postal address without nearby labels such as “Headquarters” or “Registered office.”
Review `evidenceText` and apply your own classification if needed.

#### Why are some components missing?

The source may combine locality and region in free text.
Use `fullAddress` and `evidenceText` as the source-preserving fields rather than assuming every component can be split reliably.

#### Should I enable a proxy?

Only after observing repeatable access blocks without one.
A proxy adds cost and is unnecessary for most public company pages.

### FAQ

#### Can I submit bare domains?

Yes. Values such as `example.com` are normalized to HTTPS.

#### Does the actor crawl the whole website?

No. It fetches the supplied URL and a bounded number of likely company/contact/location/legal pages on the same site.

#### Does one office equal one charged result?

Yes. The actor charges once for each unique address pushed to the dataset, plus the one-time run event.

#### Can I extract many domains in one run?

Yes, up to 100 websites per run.
Start with a small batch to verify coverage and runtime for your target set.

#### Is confidence a legal verification score?

No. It measures extraction evidence quality, not registry validity or current occupancy.

#### Can I use the results for direct mail?

That depends on your jurisdiction, purpose, and the nature of the address.
Obtain legal advice for your specific campaign and follow opt-out and privacy obligations.

### Related scrapers

Pair this actor with other Automation Lab tools when you need broader lead enrichment:

- [Google Maps Lead Finder](https://apify.com/automation-lab/google-maps-lead-finder) for discovering local businesses before website enrichment
- [Website Contact Scraper](https://apify.com/automation-lab/website-contact-scraper) for public email and phone contact fields
- [Domain WHOIS Scraper](https://apify.com/automation-lab/domain-whois-scraper) for registration metadata when publicly available

Choose the address extractor when your starting point is an existing list of company domains and postal location is the required output.

### Get started

Paste one public company contact page into the input and run the five-page default.
Review the address, source URL, evidence, and confidence in the dataset.
Then scale to your CRM, KYB, vendor, or agency domain list and schedule recurring refreshes.

# Actor input Schema

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

Public company websites to inspect. Bare domains such as hubspot.com are accepted.

## `maxPagesPerWebsite` (type: `integer`):

Maximum public pages fetched for each company website.

## `maxAddressesPerWebsite` (type: `integer`):

Stop after this many unique postal addresses have been found for one company.

## `requestTimeoutSecs` (type: `integer`):

Maximum time to wait for each public web page.

## `proxyConfiguration` (type: `object`):

Optional Apify Proxy settings. Leave disabled for ordinary public sites; enable when a target blocks your direct connection.

## Actor input object example

```json
{
  "startUrls": [
    "https://www.hubspot.com/company/contact"
  ],
  "maxPagesPerWebsite": 5,
  "maxAddressesPerWebsite": 20,
  "requestTimeoutSecs": 20,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

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

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "startUrls": [
        "https://www.hubspot.com/company/contact"
    ],
    "maxPagesPerWebsite": 5,
    "maxAddressesPerWebsite": 20,
    "requestTimeoutSecs": 20,
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("automation-lab/website-company-address-extractor").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": ["https://www.hubspot.com/company/contact"],
    "maxPagesPerWebsite": 5,
    "maxAddressesPerWebsite": 20,
    "requestTimeoutSecs": 20,
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("automation-lab/website-company-address-extractor").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": [
    "https://www.hubspot.com/company/contact"
  ],
  "maxPagesPerWebsite": 5,
  "maxAddressesPerWebsite": 20,
  "requestTimeoutSecs": 20,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call automation-lab/website-company-address-extractor --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=automation-lab/website-company-address-extractor",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Website Company Address Extractor",
        "description": "🏢 Extract structured HQ, registered, mailing, billing, and office addresses from public company websites. Every record includes its source URL, matched evidence, extraction method, and confidence score.",
        "version": "0.1",
        "x-build-id": "vlM11E9xsfcq5djbs"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/automation-lab~website-company-address-extractor/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-automation-lab-website-company-address-extractor",
                "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/automation-lab~website-company-address-extractor/runs": {
            "post": {
                "operationId": "runs-sync-automation-lab-website-company-address-extractor",
                "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/automation-lab~website-company-address-extractor/run-sync": {
            "post": {
                "operationId": "run-sync-automation-lab-website-company-address-extractor",
                "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 domains or URLs",
                        "type": "array",
                        "description": "Public company websites to inspect. Bare domains such as hubspot.com are accepted.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxPagesPerWebsite": {
                        "title": "Maximum pages per website",
                        "minimum": 1,
                        "maximum": 10,
                        "type": "integer",
                        "description": "Maximum public pages fetched for each company website.",
                        "default": 5
                    },
                    "maxAddressesPerWebsite": {
                        "title": "Maximum addresses per website",
                        "minimum": 1,
                        "maximum": 100,
                        "type": "integer",
                        "description": "Stop after this many unique postal addresses have been found for one company.",
                        "default": 20
                    },
                    "requestTimeoutSecs": {
                        "title": "Request timeout (seconds)",
                        "minimum": 5,
                        "maximum": 60,
                        "type": "integer",
                        "description": "Maximum time to wait for each public web page.",
                        "default": 20
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Optional Apify Proxy settings. Leave disabled for ordinary public sites; enable when a target blocks your direct connection."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
