# TradingView Earnings Calendar Scraper (`automation-lab/tradingview-earnings-calendar-scraper`) Actor

Turn TradingView earnings dates into clean EPS, revenue, surprise, timing, currency, and market-cap records for alerts, research, and data pipelines.

- **URL**: https://apify.com/automation-lab/tradingview-earnings-calendar-scraper.md
- **Developed by:** [Stas Persiianenko](https://apify.com/automation-lab) (community)
- **Categories:** Other
- **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

## TradingView Earnings Calendar Scraper

Extract upcoming and recently reported company earnings from TradingView into structured JSON, CSV, Excel, or API-ready datasets.

TradingView Earnings Calendar Scraper turns a date range and a list of markets into clean company event records. Each result can include EPS and revenue actuals, forecasts, surprises, market capitalization, release timing, currency, and stable TradingView identifiers.

Use it for a weekly earnings watchlist, a daily alert pipeline, post-release surprise research, portfolio risk checks, or a fintech calendar feed.

### What does TradingView Earnings Calendar Scraper do?

The Actor queries TradingView's public earnings-calendar scanner and saves one dataset row per company and event date.

It can:

- 📅 collect reported and upcoming earnings events;
- 🌍 combine one or more TradingView market regions;
- 📈 return actual and forecast EPS and revenue;
- ⚡ calculate-ready surprise values and percentages;
- 🏢 include company, ticker, exchange symbol, currency, and market cap;
- 🔗 preserve source and logo links for downstream apps;
- 🔄 process long ranges in bounded windows and remove duplicates.

No TradingView login or API key is required.

### Who is it for?

#### Traders and portfolio managers

Build an earnings-week watchlist and identify positions with scheduled company reports.

#### Quantitative researchers

Join event dates and surprise metrics to price histories for event studies, backtests, and factor research.

#### Risk and operations teams

Schedule daily runs to detect upcoming earnings exposure across holdings and monitored markets.

#### Fintech and data teams

Feed normalized calendar records into dashboards, databases, newsletters, bots, and internal APIs.

#### Analysts and journalists

Export a market-specific calendar to CSV or Excel without manually copying the TradingView table.

### Why use this earnings calendar extractor?

TradingView provides rich company-event data, but repeatedly copying calendar rows is slow and difficult to automate.

This Actor provides:

- a stable input contract for date and market selection;
- structured output with descriptive field names;
- pagination and range windowing for larger jobs;
- deduplication by TradingView symbol and event date;
- response-shape validation to catch upstream column drift;
- retries with backoff for temporary request failures;
- native Apify datasets, schedules, webhooks, API, and MCP access.

### What data can you extract?

| Field | Description |
|---|---|
| `fullSymbol` | Exchange-qualified TradingView symbol, such as `NASDAQ:AAPL` |
| `ticker` | Short company ticker |
| `companyName` | Company name from TradingView |
| `eventDate` | Date that matched the requested range |
| `eventStatus` | `upcoming` or `reported` |
| `market` | TradingView market region |
| `currency` | Fundamental reporting currency when available |
| `marketCap` | Market capitalization |
| `reportedDate` | Previous/reported earnings date |
| `upcomingDate` | Next scheduled earnings date |
| `actualEps` | Reported quarterly earnings per share |
| `forecastEps` | Forecast earnings per share |
| `epsSurprise` | Absolute EPS surprise |
| `epsSurprisePercent` | EPS surprise percentage |
| `actualRevenue` | Reported quarterly revenue |
| `forecastRevenue` | Forecast quarterly revenue |
| `revenueSurprise` | Absolute revenue surprise |
| `revenueSurprisePercent` | Revenue surprise percentage |
| `reportedReleaseTimeCode` | TradingView timing code for the reported release |
| `upcomingReleaseTimeCode` | TradingView timing code for the next release |
| `reportedPublicationTypeCode` | TradingView reported-publication code |
| `upcomingPublicationTypeCode` | TradingView upcoming-publication code |
| `logoId` / `logoUrl` | TradingView company logo identifier and URL |
| `sourceUrl` | TradingView symbol page |
| `scrapedAt` | UTC extraction timestamp |

Fields unavailable for a company are omitted rather than replaced with misleading zeroes.

### How to scrape a TradingView earnings calendar

1. Open the Actor on Apify.
2. Choose a start and end date, or leave them empty for today through the next seven days.
3. Select one or more TradingView markets.
4. Set the maximum number of earnings events.
5. Click **Start**.
6. Preview results in the dataset.
7. Export JSON, CSV, Excel, XML, or connect the dataset to your workflow.

For a first run, keep the prefilled America market and 20-item limit.

### Input configuration

```json
{
  "startDate": "2026-07-20",
  "endDate": "2026-07-26",
  "markets": ["america"],
  "maxItems": 250
}
````

| Input | Type | Default | Notes |
|---|---|---|---|
| `startDate` | string | today UTC | Inclusive `YYYY-MM-DD` date |
| `endDate` | string | start + 7 days | Inclusive `YYYY-MM-DD` date |
| `markets` | string\[] | `["america"]` | One or more supported TradingView regions |
| `maxItems` | integer | `100` | Range 1–10,000 |
| `proxyConfiguration` | object | none | Optional Apify/custom proxy fallback |

The maximum date span is 366 days. The Actor fails closed on invalid dates or reversed ranges.

### Supported TradingView markets

The input editor lists supported region codes, including:

- North America: `america`, `canada`, `mexico`;
- Europe: `uk`, `germany`, `france`, `italy`, `spain`, `switzerland`, and others;
- Asia-Pacific: `japan`, `china`, `hongkong`, `india`, `australia`, `korea`, and others;
- Latin America: `brazil`, `argentina`, `chile`, `colombia`, and others;
- Middle East and Africa: `uae`, `ksa`, `israel`, `southafrica`, and others.

Market availability and company coverage are controlled by TradingView.

### Output example

```json
{
  "fullSymbol": "NYSE:TSM",
  "ticker": "TSM",
  "companyName": "Taiwan Semiconductor Manufacturing Company Ltd.",
  "eventDate": "2026-07-16",
  "eventStatus": "reported",
  "market": "america",
  "currency": "USD",
  "marketCap": 1984808816724.5586,
  "actualEps": 4.221011,
  "forecastEps": 4.350846,
  "epsSurprise": 0.410916,
  "epsSurprisePercent": 10.7849279,
  "sourceUrl": "https://www.tradingview.com/symbols/NYSE-TSM/",
  "scrapedAt": "2026-07-17T12:00:00.000Z"
}
```

Numeric amounts remain numbers so they can be filtered, aggregated, and loaded into analytical databases.

### How much does it cost to extract TradingView earnings data?

This Actor uses pay-per-event pricing:

- a small charge when a run starts;
- one charge for each unique earnings event saved.

Apify plan tiers receive volume-adjusted event prices. The Console shows the exact estimate before a run. Small weekly checks are inexpensive, while large historical or multi-market exports scale with the useful records delivered.

Use `maxItems` to put a predictable ceiling on output and cost.

### Common workflow recipes

#### Weekly earnings watchlist

Run each Monday for `america`, export the next seven days, and join symbols to current portfolio positions.

#### Post-release surprise monitor

Run every morning for yesterday and today. Filter for large absolute `epsSurprisePercent` or `revenueSurprisePercent` values.

#### Multi-market risk calendar

Select the markets where your portfolio trades and send upcoming dates to a shared calendar or alert channel.

#### Quant event-study dataset

Schedule daily snapshots and join `fullSymbol` plus `eventDate` to price-return data in your warehouse.

### Scheduling and webhooks

Apify schedules can run the Actor daily or weekly without a separate server.

A typical automation is:

1. schedule the run before market open;
2. read the completed default dataset;
3. filter events against a watchlist;
4. send matching rows to Slack, email, a database, or a webhook.

Use a webhook on the `ACTOR.RUN.SUCCEEDED` event when downstream processing should begin immediately.

### Integrations

Connect earnings records to:

- Google Sheets for an analyst watchlist;
- Slack or Microsoft Teams for upcoming-event alerts;
- Zapier or Make for no-code workflows;
- BigQuery, Snowflake, PostgreSQL, or S3 for research history;
- Python/pandas for surprise analysis;
- dashboards such as Looker Studio or Power BI;
- another Apify Actor for enrichment or price-history collection.

The dataset API supports pagination and multiple export formats.

### Apify API usage

Replace `APIFY_TOKEN` with your token.

#### cURL

```bash
curl -X POST \
  "https://api.apify.com/v2/acts/automation-lab~tradingview-earnings-calendar-scraper/runs?token=APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"markets":["america"],"maxItems":100}'
```

#### JavaScript

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

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/tradingview-earnings-calendar-scraper').call({
  markets: ['america', 'uk'],
  maxItems: 250,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

#### Python

```python
from apify_client import ApifyClient

client = ApifyClient("APIFY_TOKEN")
run = client.actor("automation-lab/tradingview-earnings-calendar-scraper").call(
    run_input={"markets": ["america"], "maxItems": 100}
)
items = client.dataset(run["defaultDatasetId"]).list_items().items
print(items)
```

### Use with Apify MCP

Connect the Actor to AI assistants through the Apify MCP server:

```text
https://mcp.apify.com/?tools=automation-lab/tradingview-earnings-calendar-scraper
```

Example prompts:

- “Get the next seven days of US earnings and group them by event date.”
- “Find reported companies with EPS surprise above 10%.”
- “Build a UK and German earnings-risk list for this week.”

#### Claude Code

```bash
claude mcp add --transport http apify "https://mcp.apify.com/?tools=automation-lab/tradingview-earnings-calendar-scraper"
```

#### Claude Desktop

Add this to the Claude Desktop MCP configuration:

```json
{
  "mcpServers": {
    "apify": {
      "type": "http",
      "url": "https://mcp.apify.com/?tools=automation-lab/tradingview-earnings-calendar-scraper"
    }
  }
}
```

#### Cursor

Open **Settings → Tools & MCP → Add custom MCP** and use the same `mcpServers` JSON configuration.

#### VS Code

Open the MCP server settings, choose **Add HTTP server**, and enter the Apify MCP URL above. Authenticate with your Apify token when prompted.

### Data quality and freshness

Records reflect what TradingView returns at run time. Forecasts, schedules, and release timing can change as companies and data providers publish updates.

For time-sensitive workflows:

- run shortly before the decision or alert window;
- store `scrapedAt` with every snapshot;
- treat scheduled dates as changeable;
- rerun after releases to collect actuals and surprises;
- use `fullSymbol`, not ticker alone, when joining across exchanges.

### Reliability and pagination

The Actor splits ranges longer than 31 days into bounded requests, paginates each response, and deduplicates records.

Transient failures are retried with exponential backoff. If TradingView changes the positional response column count, the Actor fails clearly rather than silently attaching values to the wrong fields.

Direct requests normally work. Optional proxy configuration is available for network-specific blocking.

### Tips for better results

- Start with one market and a low `maxItems` value.
- Use short date windows for daily alerting.
- Select multiple markets in one run when you need a unified export.
- Use exchange-qualified `fullSymbol` values for joins.
- Compare both EPS and revenue surprise metrics; they can tell different stories.
- Keep raw timing and publication codes if downstream logic needs TradingView semantics.
- Schedule repeated snapshots if you need to observe forecast revisions.

### Limitations

- This Actor extracts the TradingView earnings calendar; it does not scrape conference-call transcripts.
- It does not predict earnings or recommend trades.
- TradingView may omit values for some companies or markets.
- Tickers are not globally unique; use `fullSymbol` for identity.
- Release timing and publication codes are source codes, not translated guarantees such as “before market open.”
- A maximum of 10,000 events can be saved per run.
- Coverage and field availability may change upstream.

### Is scraping TradingView earnings data legal?

Public financial calendar data can generally be collected for legitimate research and automation, but users are responsible for their use.

Follow applicable laws, contractual obligations, database rights, and TradingView's terms. Do not use the output for market manipulation, deceptive claims, or unlawful redistribution. Financial data may be delayed or revised and should not be the sole basis for investment decisions.

This Actor does not bypass authentication or collect private account data.

### Troubleshooting

#### My dataset is empty

Confirm the selected market has earnings events in the requested range. Try a seven-day America range and ensure `maxItems` is greater than zero.

#### The run says a date is invalid

Use exact `YYYY-MM-DD` values, ensure the end date is not before the start date, and keep the range within 366 days.

#### Some forecast fields are missing

TradingView does not provide every metric for every company. Missing optional values are omitted intentionally.

#### Requests fail from my network

Retry once, then enable an Apify datacenter proxy in `proxyConfiguration`. Residential proxy traffic is normally unnecessary.

#### The same ticker appears more than once

Different exchanges can share a ticker. Compare `fullSymbol` and `eventDate`; that pair is the Actor's event identity.

### Frequently asked questions

#### Does it require a TradingView account?

No. The useful scanner route is accessed anonymously.

#### Can I scrape historical and upcoming earnings?

Yes. The date filter matches recent reported dates and upcoming scheduled dates returned by TradingView.

#### Can I select several countries?

Yes. Choose multiple TradingView market region codes in the `markets` array.

#### Are surprise percentages already provided?

Yes. The Actor returns TradingView's EPS and revenue surprise values and percentages when available.

#### Can I export to CSV or Excel?

Yes. Use the default dataset export controls or dataset API.

#### Can I monitor earnings automatically?

Yes. Combine an Apify schedule with webhooks, integrations, or MCP.

### Related Automation Lab actors

- [TradingView Stock Screener Scraper](https://apify.com/automation-lab/tradingview-scraper) — flexible stock, crypto, and forex scanner fields.
- [Yahoo Finance Scraper](https://apify.com/automation-lab/yahoo-finance-scraper) — complementary quotes and company market data.
- [Google Finance Scraper](https://apify.com/automation-lab/google-finance-scraper) — additional finance search and market information.

Choose this Actor when the primary entity is a dated company earnings event. Choose the TradingView screener when you need broad security-level metrics or custom scanner columns.

### Support

If a run fails, share the run URL, selected date range, and markets through the Actor's Issues tab. Do not include private credentials.

For reproducible reports, keep the failed run's logs and input available. This makes it easier to distinguish an empty source range, invalid input, and an upstream response change.

# Actor input Schema

## `startDate` (type: `string`):

First calendar date to include (YYYY-MM-DD). Defaults to today in UTC.

## `endDate` (type: `string`):

Last calendar date to include (YYYY-MM-DD). Defaults to seven days after the start date.

## `markets` (type: `array`):

Stock-market regions to include. America is used when omitted.

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

Stop after this many unique symbol-and-date earnings events.

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

Optional Apify Proxy or custom proxies. Direct access normally works; a datacenter proxy is a suitable fallback.

## Actor input object example

```json
{
  "markets": [
    "america"
  ],
  "maxItems": 20
}
```

# 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 = {
    "markets": [
        "america"
    ],
    "maxItems": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("automation-lab/tradingview-earnings-calendar-scraper").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 = {
    "markets": ["america"],
    "maxItems": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("automation-lab/tradingview-earnings-calendar-scraper").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 '{
  "markets": [
    "america"
  ],
  "maxItems": 20
}' |
apify call automation-lab/tradingview-earnings-calendar-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "TradingView Earnings Calendar Scraper",
        "description": "Turn TradingView earnings dates into clean EPS, revenue, surprise, timing, currency, and market-cap records for alerts, research, and data pipelines.",
        "version": "0.1",
        "x-build-id": "hPGgvZpks4CkDNGoM"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/automation-lab~tradingview-earnings-calendar-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-automation-lab-tradingview-earnings-calendar-scraper",
                "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~tradingview-earnings-calendar-scraper/runs": {
            "post": {
                "operationId": "runs-sync-automation-lab-tradingview-earnings-calendar-scraper",
                "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~tradingview-earnings-calendar-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-automation-lab-tradingview-earnings-calendar-scraper",
                "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": {
                    "startDate": {
                        "title": "Start date",
                        "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                        "type": "string",
                        "description": "First calendar date to include (YYYY-MM-DD). Defaults to today in UTC."
                    },
                    "endDate": {
                        "title": "End date",
                        "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                        "type": "string",
                        "description": "Last calendar date to include (YYYY-MM-DD). Defaults to seven days after the start date."
                    },
                    "markets": {
                        "title": "TradingView markets",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "Stock-market regions to include. America is used when omitted.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "america",
                                "argentina",
                                "australia",
                                "austria",
                                "bahrain",
                                "bangladesh",
                                "belgium",
                                "brazil",
                                "canada",
                                "chile",
                                "china",
                                "colombia",
                                "cyprus",
                                "czech",
                                "denmark",
                                "egypt",
                                "estonia",
                                "finland",
                                "france",
                                "germany",
                                "greece",
                                "hongkong",
                                "hungary",
                                "iceland",
                                "india",
                                "indonesia",
                                "israel",
                                "italy",
                                "japan",
                                "kenya",
                                "korea",
                                "kuwait",
                                "latvia",
                                "lithuania",
                                "luxembourg",
                                "malaysia",
                                "mexico",
                                "morocco",
                                "netherlands",
                                "newzealand",
                                "nigeria",
                                "norway",
                                "pakistan",
                                "peru",
                                "philippines",
                                "poland",
                                "portugal",
                                "qatar",
                                "romania",
                                "russia",
                                "ksa",
                                "serbia",
                                "singapore",
                                "slovakia",
                                "southafrica",
                                "spain",
                                "srilanka",
                                "sweden",
                                "switzerland",
                                "taiwan",
                                "thailand",
                                "tunisia",
                                "turkey",
                                "uae",
                                "uk",
                                "venezuela",
                                "vietnam"
                            ]
                        },
                        "default": [
                            "america"
                        ]
                    },
                    "maxItems": {
                        "title": "Maximum earnings events",
                        "minimum": 1,
                        "maximum": 10000,
                        "type": "integer",
                        "description": "Stop after this many unique symbol-and-date earnings events.",
                        "default": 100
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Optional Apify Proxy or custom proxies. Direct access normally works; a datacenter proxy is a suitable fallback."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
