# Store Locator Extractor (`junipr/store-locator-extractor`) Actor

Extract public store/location records from owned store-locator pages with cautious browser fallback.

- **URL**: https://apify.com/junipr/store-locator-extractor.md
- **Developed by:** [junipr](https://apify.com/junipr) (community)
- **Categories:** SEO tools, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $15.00 / 1,000 locator page rendereds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## Store Locator Extractor

Extract public store/location records from owned store-locator pages with cautious browser fallback.

Extract public store and location records from structured input, JSON-LD, common locator markup, or a rendered public page. The rendered path uses a browser with request filtering, time and byte limits, and an optional screenshot for browser-visible evidence.

### Results At A Glance

- Structured dataset rows designed for filtering, exports, and API delivery.
- Stable source and record identifiers for repeatable runs.
- Honest null values and diagnostic rows when evidence is unavailable.
- Explicit limits for targets, records, source bytes, and optional reports.
- Pay-per-event billing that stops before paid output when the run budget is exhausted.

### Common Uses

- Normalize store records from an owned locator
- Extract LocalBusiness and Store JSON-LD
- Inspect a dynamic locator that requires browser rendering
- Capture one bounded viewport screenshot with the extracted records
- Find locations missing names, addresses, or phone numbers

### How It Works

1. Normalize one or more bounded locator targets.
2. Charge the rendered-page event before processing each locator page.
3. Use supplied HTML or records, or render a public URL when `renderPages` is enabled.
4. Optionally capture a bounded screenshot after its billing event is accepted.
5. Extract location fields from JSON-LD or common store containers.
6. Write one dataset row per deduplicated location and an optional report.

### Input

| Field | Purpose |
| --- | --- |
| `targets` | Locator pages with HTML, text, or structured location items. |
| `urls` | Public locator URLs for browser rendering. |
| `renderPages` | Enables browser rendering for URL-only targets. |
| `captureScreenshot` | Stores one viewport screenshot for each rendered target when budget permits. |
| `maxItems` | Limits locator targets to 1-50. |
| `maxTextBytes` | Caps rendered or supplied HTML. |
| `includeReport` | Writes results, summary, and Markdown report records. |

No field is required for the first run. The bundled bounded example demonstrates the output without making a network request. For URL retrieval, provide public HTTP(S) URLs without embedded credentials and enable the relevant retrieval control.

#### Input Example

```json
{
  "sourceId": "acme-locator",
  "sourceUrl": "https://example.com/stores",
  "html": "<html><head><script type=\"application/ld+json\">{\"@type\":\"Store\",\"name\":\"Acme Downtown\",\"telephone\":\"+1 312-555-0144\",\"address\":{\"streetAddress\":\"10 Market Street\",\"addressLocality\":\"Chicago\",\"addressRegion\":\"IL\",\"postalCode\":\"60601\"},\"openingHours\":[\"Mo-Fr 09:00-17:00\"],\"geo\":{\"latitude\":41.88,\"longitude\":-87.63},\"url\":\"https://example.com/stores/downtown\"}</script></head><body><h1>Store locator</h1></body></html>",
  "maxItems": 1,
  "renderPages": false,
  "captureScreenshot": false,
  "includeReport": true
}
````

### Dataset Output

- Location name, address, city, state, postal code, and phone
- Opening hours, coordinates, and location URL when present
- Extraction method, rendered status, and optional screenshot key
- Missing-field issue codes and a source-specific recommendation

Every dataset row includes `pricingEventName` so cost-bearing output can be traced to its event. A blocked source can produce a diagnostic row with a null event name; that row is not represented as successful extraction.

#### Output Records

- Dataset: `{{links.apiDefaultDatasetUrl}}/items`
- Results JSON: `{{links.apiDefaultKeyValueStoreUrl}}/records/STORE_LOCATOR_EXTRACTOR_RESULTS.json`
- Summary JSON: `{{links.apiDefaultKeyValueStoreUrl}}/records/STORE_LOCATOR_EXTRACTOR_SUMMARY.json`
- Markdown report: `{{links.apiDefaultKeyValueStoreUrl}}/records/STORE_LOCATOR_EXTRACTOR_REPORT.md`
- Rendered screenshots: `{{links.apiDefaultKeyValueStoreUrl}}/records/STORE_LOCATOR_EXTRACTOR_SCREENSHOT_<n>.png`

Report records are written only when `includeReport` is enabled, there is paid output to report, and the report event is accepted. Digest records follow the same rule for `includeDigest`.

### Pricing

This actor uses pay-per-event pricing. The configured event prices include platform usage; no separate platform-usage pass-through is expected for these events.

| Event | Price (USD) | When it is charged |
| --- | ---: | --- |
| `actor-start` | $0.05000 | Before paid run setup. |
| `locator-page-rendered` | $0.01500 | Before supplied or browser-rendered locator evidence is processed. |
| `screenshot-captured` | $0.01000 | Before a browser screenshot is captured. |
| `issue-detected` | $0.01300 | Before issue-bearing location output is written. |
| `report-generated` | $0.10000 | Before report records are written. |

The default maximum charge is `$50.00`. Input limits and run-budget limits remain independent: a broad input can still stop early when another event cannot be charged. A rejected or partial charge prevents the matching paid row or report from being written.

### Public Tasks

- **Render pages and inspect Store Locator Extractor**: Extract public store/location records from owned store-locator pages with cautious browser fallback. This task uses one bounded, credential-free example.
- **Capture browser-visible evidence for Store Locator Extractor**: Extract public store/location records from owned store-locator pages with cautious browser fallback. This task uses one bounded, credential-free example.
- **Audit dynamic page behavior for Store Locator Extractor**: Extract public store/location records from owned store-locator pages with cautious browser fallback. This task uses one bounded, credential-free example.
- **Extract JSON-LD store locations**: Extract public store/location records from owned store-locator pages with cautious browser fallback. This task uses one bounded, credential-free example.
- **Render one public store locator page**: Extract public store/location records from owned store-locator pages with cautious browser fallback. This task uses one bounded, credential-free example.

Each task uses one bounded, credential-free input and can be edited before a run. URL retrieval remains disabled in tasks that already include source evidence.

### Cost And Scope Controls

- Start with one target and inspect the dataset before increasing limits.
- Keep report generation off when only dataset rows are needed.
- Supply HTML, XML, text, or records directly when repeatability matters.
- Use URL retrieval only for public sources you are authorized to access.
- Keep byte and record limits close to the downstream requirement.
- Treat charge-limit truncation as partial output, not a complete inventory.

### Safety

Only public HTTP(S) sources are accepted for retrieval. Credentialed URLs, loopback hosts, private and reserved address ranges, private DNS answers, and redirects are blocked. Responses are read with time and byte limits. The actor does not bypass authentication, CAPTCHAs, paywalls, access controls, or source restrictions.

Do not submit secrets, session cookies, private contact lists, or sensitive personal data. Review source terms and legal requirements before collecting or redistributing public information.

### Limitations

- The actor does not bypass CAPTCHAs, authentication, access controls, or robots restrictions.
- Browser rendering is intentionally sequential and bounded.
- Screenshots use one desktop viewport and are evidence, not visual regression tests.
- Markup that exposes no JSON-LD or recognizable location containers may produce a diagnostic row.

### Troubleshooting

#### A blocked diagnostic row appears

Confirm that source evidence was supplied. For URL retrieval, verify that the URL is public HTTP(S), has no credentials, does not redirect, and fits within the byte and timeout limits.

#### Fewer rows appear than expected

Check the target and record caps, source formatting, duplicate identifiers, and `truncatedByChargeLimit` in the summary. Increase one limit at a time after inspecting cost and output quality.

#### Report records are absent

Set `includeReport` to true and confirm the run produced paid dataset rows. A report is skipped when its billing event cannot be accepted.

#### Values are null

Null means the supplied source did not establish the value. Add structured evidence at the source or provide a structured input record; do not treat null as a guessed value.

### Integration

Dataset items can be consumed through the Apify API, webhooks, exports, or platform integrations. Use stable `sourceId` and record identifiers as join keys. Preserve `checkedAt`, source URLs, status, issue codes, and hashes when building recurring comparisons or audit trails.

For scheduled use, begin with one bounded target, compare output across two runs, and only then increase limits. Downstream automation should handle blocked diagnostics, null values, charge-limit truncation, and source-format changes explicitly.

### Output Quality Checklist

Before using results operationally:

1. Confirm the source URL or supplied evidence is the intended source.
2. Review warning, failure, blocked, and issue-code fields.
3. Check null fields against the source rather than filling them automatically.
4. Confirm the summary does not report charge-limit truncation.
5. Retain source identifiers and timestamps with exported records.
6. Validate changed records before sending a digest or updating another system.

### FAQ

#### Does the first run call external websites?

No. The bounded input includes source evidence and leaves URL retrieval disabled.

#### Can I process several sources?

Yes. Use the target or URL arrays and raise the relevant cap gradually.

#### Are missing values inferred?

No. Missing values remain null or are named in issue fields.

#### What happens when a charge is rejected?

The actor stops before writing the matching paid output. Already completed rows remain available and the summary identifies truncation where applicable.

#### Is the Markdown report the primary output?

No. Dataset rows are the primary machine-readable output. Reports and digests are optional buyer-readable records.

#### Does this guarantee SEO, compliance, or business outcomes?

No. The actor provides extraction and QA evidence. It does not guarantee rankings, legal compliance, completeness of a third-party source, or commercial results.

# Actor input Schema

## `sourceId` (type: `string`):

Stable identifier for this source or record.

## `sourceUrl` (type: `string`):

Public source URL for this item.

## `text` (type: `string`):

Plain-text snapshot to parse without live fetching.

## `html` (type: `string`):

HTML snapshot to parse without live fetching.

## `currentText` (type: `string`):

Current text snapshot for comparison.

## `items` (type: `array`):

Structured items to process.

## `targets` (type: `array`):

Source objects to inspect for this run.

## `urls` (type: `array`):

Public URLs to fetch when URL fetching is enabled.

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

Maximum number of items to process.

## `maxTextBytes` (type: `integer`):

Maximum bytes of text, HTML, or XML to read per source.

## `renderPages` (type: `boolean`):

Render pages when browser inspection is enabled.

## `captureScreenshot` (type: `boolean`):

Capture screenshots when browser rendering is enabled.

## `includeReport` (type: `boolean`):

Write summary report artifacts.

## `dryRun` (type: `boolean`):

Validate input and report diagnostics without paid output rows.

## `debug` (type: `boolean`):

Enable additional diagnostic logging.

## Actor input object example

```json
{
  "maxItems": 1,
  "maxTextBytes": 250000,
  "renderPages": false,
  "captureScreenshot": false,
  "includeReport": true,
  "dryRun": false,
  "debug": false
}
```

# Actor output Schema

## `results` (type: `string`):

No description

## `resultsJson` (type: `string`):

No description

## `summary` (type: `string`):

No description

## `markdownReport` (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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("junipr/store-locator-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 = {}

# Run the Actor and wait for it to finish
run = client.actor("junipr/store-locator-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 '{}' |
apify call junipr/store-locator-extractor --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=junipr/store-locator-extractor",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Store Locator Extractor",
        "description": "Extract public store/location records from owned store-locator pages with cautious browser fallback.",
        "version": "1.0",
        "x-build-id": "k5EkLbjigfFJ2hn3t"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/junipr~store-locator-extractor/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-junipr-store-locator-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/junipr~store-locator-extractor/runs": {
            "post": {
                "operationId": "runs-sync-junipr-store-locator-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/junipr~store-locator-extractor/run-sync": {
            "post": {
                "operationId": "run-sync-junipr-store-locator-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",
                "properties": {
                    "sourceId": {
                        "title": "Source ID",
                        "type": "string",
                        "description": "Stable identifier for this source or record."
                    },
                    "sourceUrl": {
                        "title": "Source URL",
                        "type": "string",
                        "description": "Public source URL for this item."
                    },
                    "text": {
                        "title": "Text",
                        "type": "string",
                        "description": "Plain-text snapshot to parse without live fetching."
                    },
                    "html": {
                        "title": "HTML",
                        "type": "string",
                        "description": "HTML snapshot to parse without live fetching."
                    },
                    "currentText": {
                        "title": "Current text",
                        "type": "string",
                        "description": "Current text snapshot for comparison."
                    },
                    "items": {
                        "title": "Items",
                        "type": "array",
                        "description": "Structured items to process.",
                        "items": {
                            "type": "object",
                            "additionalProperties": false,
                            "properties": {
                                "name": {
                                    "type": "string",
                                    "title": "Name",
                                    "description": "Name for this item."
                                },
                                "address": {
                                    "title": "Address",
                                    "description": "Street address for this location.",
                                    "type": "string"
                                },
                                "city": {
                                    "type": "string",
                                    "title": "City",
                                    "description": "City for this location."
                                },
                                "state": {
                                    "type": "string",
                                    "title": "State",
                                    "description": "State, province, or region for this location."
                                },
                                "postalCode": {
                                    "type": "string",
                                    "title": "Postal code",
                                    "description": "Postal or ZIP code for this location."
                                },
                                "phone": {
                                    "type": "string",
                                    "title": "Phone",
                                    "description": "Phone number for this location."
                                },
                                "hours": {
                                    "title": "Hours",
                                    "description": "Opening hours text for this location.",
                                    "type": "string"
                                },
                                "latitude": {
                                    "type": "number",
                                    "title": "Latitude",
                                    "description": "Latitude for this location."
                                },
                                "longitude": {
                                    "type": "number",
                                    "title": "Longitude",
                                    "description": "Longitude for this location."
                                },
                                "url": {
                                    "type": "string",
                                    "title": "URL",
                                    "description": "Public URL for this item."
                                }
                            }
                        }
                    },
                    "targets": {
                        "title": "Locator pages",
                        "maxItems": 50,
                        "type": "array",
                        "description": "Source objects to inspect for this run.",
                        "items": {
                            "type": "object",
                            "additionalProperties": false,
                            "properties": {
                                "sourceId": {
                                    "type": "string",
                                    "title": "Source ID",
                                    "description": "Stable identifier for this source or record."
                                },
                                "sourceUrl": {
                                    "type": "string",
                                    "title": "Source URL",
                                    "description": "Public source URL for this item."
                                },
                                "text": {
                                    "type": "string",
                                    "title": "Text",
                                    "description": "Plain-text snapshot to parse without live fetching."
                                },
                                "html": {
                                    "type": "string",
                                    "title": "HTML",
                                    "description": "HTML snapshot to parse without live fetching."
                                },
                                "currentText": {
                                    "type": "string",
                                    "title": "Current text",
                                    "description": "Current text snapshot for comparison."
                                },
                                "items": {
                                    "type": "array",
                                    "items": {
                                        "type": "object",
                                        "additionalProperties": false,
                                        "properties": {
                                            "name": {
                                                "type": "string",
                                                "title": "Name",
                                                "description": "Name for this item."
                                            },
                                            "address": {
                                                "title": "Address",
                                                "description": "Street address for this location.",
                                                "type": "string"
                                            },
                                            "city": {
                                                "type": "string",
                                                "title": "City",
                                                "description": "City for this location."
                                            },
                                            "state": {
                                                "type": "string",
                                                "title": "State",
                                                "description": "State, province, or region for this location."
                                            },
                                            "postalCode": {
                                                "type": "string",
                                                "title": "Postal code",
                                                "description": "Postal or ZIP code for this location."
                                            },
                                            "phone": {
                                                "type": "string",
                                                "title": "Phone",
                                                "description": "Phone number for this location."
                                            },
                                            "hours": {
                                                "title": "Hours",
                                                "description": "Opening hours text for this location.",
                                                "type": "string"
                                            },
                                            "latitude": {
                                                "type": "number",
                                                "title": "Latitude",
                                                "description": "Latitude for this location."
                                            },
                                            "longitude": {
                                                "type": "number",
                                                "title": "Longitude",
                                                "description": "Longitude for this location."
                                            },
                                            "url": {
                                                "type": "string",
                                                "title": "URL",
                                                "description": "Public URL for this item."
                                            }
                                        }
                                    },
                                    "title": "Items",
                                    "description": "Structured items to process."
                                }
                            }
                        }
                    },
                    "urls": {
                        "title": "Public locator URLs",
                        "maxItems": 50,
                        "type": "array",
                        "description": "Public URLs to fetch when URL fetching is enabled.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxItems": {
                        "title": "Max items",
                        "minimum": 1,
                        "maximum": 50,
                        "type": "integer",
                        "description": "Maximum number of items to process.",
                        "default": 1
                    },
                    "maxTextBytes": {
                        "title": "Max text bytes",
                        "minimum": 1000,
                        "maximum": 1000000,
                        "type": "integer",
                        "description": "Maximum bytes of text, HTML, or XML to read per source.",
                        "default": 250000
                    },
                    "renderPages": {
                        "title": "Render pages",
                        "type": "boolean",
                        "description": "Render pages when browser inspection is enabled.",
                        "default": false
                    },
                    "captureScreenshot": {
                        "title": "Capture screenshot",
                        "type": "boolean",
                        "description": "Capture screenshots when browser rendering is enabled.",
                        "default": false
                    },
                    "includeReport": {
                        "title": "Create report",
                        "type": "boolean",
                        "description": "Write summary report artifacts.",
                        "default": true
                    },
                    "dryRun": {
                        "title": "Dry run",
                        "type": "boolean",
                        "description": "Validate input and report diagnostics without paid output rows.",
                        "default": false
                    },
                    "debug": {
                        "title": "Debug logging",
                        "type": "boolean",
                        "description": "Enable additional diagnostic logging.",
                        "default": false
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
