# Tori.fi Marketplace Scraper (Finland) (`devilscrapes/tori-finland-cars`) Actor

Scrape for-sale listings from Tori.fi — Finland's dominant classifieds marketplace (Schibsted recommerce). Search by free-text keyword or category and get title, price in EUR, location, seller type (private/dealer), brand, photos, condition and description. Export to JSON or CSV.

- **URL**: https://apify.com/devilscrapes/tori-finland-cars.md
- **Developed by:** [DevilScrapes](https://apify.com/devilscrapes) (community)
- **Categories:** Automation, E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

## What's an Apify Actor?

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

## How to integrate an Actor?

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

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

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

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

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

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

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

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

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

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

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


# README

<div align="center">
  <img src=".actor/icon.svg" width="160" alt="Devil Scrapes mark" />

## Tori.fi Marketplace Scraper (Finland)

**💰 $2.05 / 1 000 results** &nbsp;·&nbsp; pay only for results &nbsp;·&nbsp; no credit card to try

_We do the dirty work so your dataset stays clean._ 😈

Scrape for-sale listings from Tori.fi — Finland's dominant classifieds marketplace (Schibsted recommerce). Search by free-text keyword or category and get title, price in EUR, location, seller type (private/dealer), brand, photos, condition and description. Export to JSON or CSV.

</div>

---

### 🎯 What this scrapes

Tori.fi is Finland's largest marketplace, carrying millions of for-sale ads across electronics, home, vehicles-and-accessories, fashion and more — with no public API. This Actor reads Tori's internal search JSON endpoint to pull complete listing payloads (title, price in EUR, location, seller type, brand, all photo URLs), then (optionally) enriches each ad from its detail page with the full description and item condition. Search by free-text `query`, by `category`, or paste a full Tori search URL. Built on `curl-cffi` with browser TLS impersonation and Apify residential proxy rotation.

### 🔥 What we handle for you

- 🛡️ **Browser fingerprint rotation** — `curl-cffi` impersonates real Chrome / Firefox / Safari TLS handshakes so the target sees a browser, not Python.
- 🌐 **Residential proxy rotation** via Apify Proxy — fresh session and exit IP on every block.
- 🔁 **Retries with exponential backoff** on `408 / 429 / 5xx` — up to 5 attempts per page, `Retry-After` honoured.
- 🧱 **Rate-limit-aware pacing** — when the target pushes back, we slow down instead of getting banned.
- 🧊 **Clean, typed dataset rows** — Pydantic-validated, ISO-8601 timestamps, stable IDs, JSON / CSV / Excel export straight from the Apify Console.
- 💰 **Pay-Per-Event pricing** — you only pay for results that hit your dataset. No data, no charge.

### 💡 Use cases

- **Price analytics** — track EUR asking prices by category and region across Finland's biggest marketplace.
- **Reseller sourcing** — spot under-priced electronics, furniture or vehicle parts the moment they appear with a daily diff.
- **Dealer monitoring** — filter by <code>seller_type = dealer</code> and watch a competitor's stock turnover.
- **Market research** — quantify supply and pricing for any product category or brand over time.
- **Lead generation** — build a directory of private sellers and dealers by category, region, and price band.

### ⚙️ How to use it

1. Click **Try for free** at the top of the page.
2. Fill in the input form — most fields have sensible defaults.
3. Click **Start**. Output streams into the run's dataset.
4. Export from **Storage → Dataset** as JSON, CSV, or Excel — or fetch via the API.

### 📥 Input

| Field | Type | Required | Default | Notes |
|---|---|:--:|---|---|
| `searchUrl` | `string` | no | '—' | A full Tori.fi search URL you pasted (filters already applied), e.g. <code>https://www.tori.fi/recommerce/forsale/search |
| `query` | `string` | no | '—' | Free-text keyword search (Tori <code>q</code> param), e.g. <code>iphone 15</code> or <code>nahkasohva</code>. Ignored wh |
| `category` | `string` | no | '—' | Tori category code, e.g. <code>0.90</code> (Auto-, vene- ja moottoripyörätarvikkeet — vehicle accessories), <code>0.93</ |
| `maxResults` | `integer` | no | 50 | Hard cap on dataset rows. Tori serves ~53 listings per search page; we paginate up to this cap. |
| `enrichDetails` | `boolean` | no | True | Fetch each ad's detail page for the full description and item condition. Roughly doubles the request count. |
| `proxyConfiguration` | `object` | no | {'useApifyProxy': True, 'apifyProxyGroups': ['RESIDENTIAL']} | Apify Proxy spec. Finnish / residential exits are safest for Tori.fi. |

#### Example input

```json
{
  "category": "0.90",
  "maxResults": 5,
  "enrichDetails": true,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
````

### 📤 Output

Every row is one dataset item.

| Field | Type | Notes |
|---|---|---|
| `listing_id` | `string` | Tori ad ID. |
| `listing_url` | `string` | Absolute URL to the listing detail page. |
| `title` | `string` | Listing title (heading). |
| `price` | `['integer', 'null']` | Listing price as an integer in EUR. |
| `currency` | `['string', 'null']` | ISO-4217 currency code — always <code>EUR</code> on Tori. |
| `brand` | `['string', 'null']` | Brand / make when the seller supplied one (from the ad's brand extra). |
| `trade_type` | `['string', 'null']` | Trade type label, e.g. Myydään (for sale), Annetaan (giving away). |
| `item_condition` | `['string', 'null']` | Item condition from the detail page (e.g. NewCondition, UsedCondition). Enrichment-only. |
| `category_path` | `['string', 'null']` | Category breadcrumb from the detail page. Enrichment-only. |
| `location` | `['string', 'null']` | Seller location string (city, district, region). |
| `region` | `['string', 'null']` | Region (last segment of the location string). |
| `latitude` | `['number', 'null']` | Listing latitude when published. |
| `longitude` | `['number', 'null']` | Listing longitude when published. |
| `seller_type` | `['string', 'null']` | <code>dealer</code> or <code>private</code>, inferred from the ad flags. |
| `photo_urls` | `array` | List of listing photo URLs. |
| `description` | `['string', 'null']` | Full ad description. Enrichment-only. |
| `posted_date` | `['string', 'null']` | ISO timestamp the ad was published. |
| `scraped_at` | `string` | ISO timestamp when this row was recorded. |

#### Example output

```json
{
  "listing_id": "42285850",
  "listing_url": "https://www.tori.fi/recommerce/forsale/item/42285850",
  "title": "Jysk EDEGAL SOHVA",
  "price": 120,
  "currency": "EUR",
  "brand": "Jysk",
  "trade_type": "Myyd\u00e4\u00e4n",
  "item_condition": "UsedCondition",
  "category_path": "Koti ja sisustus > Huonekalut > Sohvat",
  "location": "Espoo, Etel\u00e4-Lepp\u00e4vaara, Uusimaa",
  "region": "Uusimaa",
  "latitude": 60.21362,
  "longitude": 24.81674,
  "seller_type": "private",
  "photo_urls": [
    "https://img.tori.net/dynamic/default/item/42285850/4591e006-7ce1-46c4-9ad1-d4e7d90b8ffb"
  ],
  "description": "Hyv\u00e4kuntoinen sohva, savuton koti.",
  "posted_date": "2026-06-02T10:08:39+00:00",
  "scraped_at": "2026-06-02T00:00:00+00:00"
}
```

### 💰 Pricing

Pay-Per-Event — you pay only when these events fire:

| Event | USD | What it is |
|---|---:|---|
| `actor-start` | $0.05 | One-off warm-up charge per run |
| `result-row` | $0.002 | PPE event |

Example: 1 000 results at the rates above ≈ **$2.05**. No subscription, no minimum, no card to start — Apify gives every new account $5 of free credit.

### 🚧 Limitations

This Actor scrapes Tori's main for-sale marketplace (the <code>recommerce/forsale</code> search). Tori's dedicated passenger-car inventory lives on a separate JavaScript single-page app at <code>autot.tori.fi</code> whose backing API is not reachable over plain HTTP, so whole used cars are out of scope; the vehicle <code>Auto-, vene- ja moottoripyörätarvikkeet</code> category covers parts and accessories. Tori paginates results in pages of ~53 listings (max 50 pages), so very large result sets are capped. Detail enrichment doubles request count and run time. Some private listings hide the seller's name behind a contact form.

### ❓ FAQ

**Can this scrape whole used cars (passenger vehicles)?**

No. Tori moved its passenger-car inventory to a separate JavaScript app at <code>autot.tori.fi</code> backed by a private API that isn't reachable over plain HTTP. This Actor scrapes the main Tori for-sale marketplace — including the <code>Auto-, vene- ja moottoripyörätarvikkeet</code> (vehicle parts & accessories) category — but not the dedicated whole-car listings. See Limitations.

**How do I target a category?**

Set <code>category</code> to a Tori code (e.g. <code>0.90</code> for vehicle accessories, <code>0.93</code> for electronics), type a <code>query</code>, or paste a full search <code>searchUrl</code>. The URL wins if all three are set.

**Why are description and condition sometimes null?**

Those live on each ad's detail page. Keep <code>enrichDetails</code> on (the default) to fill them; turn it off to halve the request count and get just title, price, location, brand, photos and seller type from the search payload.

**What currency are prices in?**

Euros (EUR). The <code>currency</code> field is set to <code>EUR</code> and <code>price</code> is an integer amount.

**Is this a Tori-sanctioned API?**

No. Tori.fi publishes no public API. This Actor reads Tori's own internal search endpoint and public ad pages politely with browser TLS impersonation and proxy rotation — see the ToS notice in the README.

### 💬 Your feedback

Spotted a bug, hit a weird edge case, or need a new field? Open an
issue on the Actor's **Issues** tab on Apify Console — we ship
fixes weekly and we read every report.

***

<div align="center">

Built by **[Devil Scrapes](https://apify.com/DevilScrapes)** 😈 — a small fleet of
opinionated public-data Actors. Honest pricing, real engineering, zero fine print.

</div>

# Actor input Schema

## `searchUrl` (type: `string`):

A full Tori.fi search URL you pasted (filters already applied), e.g. <code>https://www.tori.fi/recommerce/forsale/search?category=0.90</code>. When set, this overrides the query/category fields below.

## `query` (type: `string`):

Free-text keyword search (Tori <code>q</code> param), e.g. <code>iphone 15</code> or <code>nahkasohva</code>. Ignored when <code>searchUrl</code> is set.

## `category` (type: `string`):

Tori category code, e.g. <code>0.90</code> (Auto-, vene- ja moottoripyörätarvikkeet — vehicle accessories), <code>0.93</code> (electronics). Top-level codes look like <code>0.NN</code>; product codes like <code>2.NN.NNNN.NN</code>. Ignored when <code>searchUrl</code> is set.

## `maxResults` (type: `integer`):

Hard cap on dataset rows. Tori serves ~53 listings per search page; we paginate up to this cap.

## `enrichDetails` (type: `boolean`):

Fetch each ad's detail page for the full description and item condition. Roughly doubles the request count.

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

Apify Proxy spec. Finnish / residential exits are safest for Tori.fi.

## Actor input object example

```json
{
  "maxResults": 50,
  "enrichDetails": true,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `datasetItems` (type: `string`):

All dataset items as JSON.

## `datasetItemsCsv` (type: `string`):

Same data exported to CSV.

## `datasetView` (type: `string`):

Open the run dataset in the Console.

# 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 = {
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("devilscrapes/tori-finland-cars").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 = { "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    } }

# Run the Actor and wait for it to finish
run = client.actor("devilscrapes/tori-finland-cars").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 '{
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call devilscrapes/tori-finland-cars --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=devilscrapes/tori-finland-cars",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Tori.fi Marketplace Scraper (Finland)",
        "description": "Scrape for-sale listings from Tori.fi — Finland's dominant classifieds marketplace (Schibsted recommerce). Search by free-text keyword or category and get title, price in EUR, location, seller type (private/dealer), brand, photos, condition and description. Export to JSON or CSV.",
        "version": "0.1",
        "x-build-id": "25g7PSWsokBYr5Nog"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/devilscrapes~tori-finland-cars/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-devilscrapes-tori-finland-cars",
                "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/devilscrapes~tori-finland-cars/runs": {
            "post": {
                "operationId": "runs-sync-devilscrapes-tori-finland-cars",
                "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/devilscrapes~tori-finland-cars/run-sync": {
            "post": {
                "operationId": "run-sync-devilscrapes-tori-finland-cars",
                "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": {
                    "searchUrl": {
                        "title": "Search URL",
                        "type": "string",
                        "description": "A full Tori.fi search URL you pasted (filters already applied), e.g. <code>https://www.tori.fi/recommerce/forsale/search?category=0.90</code>. When set, this overrides the query/category fields below."
                    },
                    "query": {
                        "title": "Free-text query",
                        "type": "string",
                        "description": "Free-text keyword search (Tori <code>q</code> param), e.g. <code>iphone 15</code> or <code>nahkasohva</code>. Ignored when <code>searchUrl</code> is set."
                    },
                    "category": {
                        "title": "Category code",
                        "type": "string",
                        "description": "Tori category code, e.g. <code>0.90</code> (Auto-, vene- ja moottoripyörätarvikkeet — vehicle accessories), <code>0.93</code> (electronics). Top-level codes look like <code>0.NN</code>; product codes like <code>2.NN.NNNN.NN</code>. Ignored when <code>searchUrl</code> is set."
                    },
                    "maxResults": {
                        "title": "Max results",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Hard cap on dataset rows. Tori serves ~53 listings per search page; we paginate up to this cap.",
                        "default": 50
                    },
                    "enrichDetails": {
                        "title": "Enrich from detail page",
                        "type": "boolean",
                        "description": "Fetch each ad's detail page for the full description and item condition. Roughly doubles the request count.",
                        "default": true
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Apify Proxy spec. Finnish / residential exits are safest for Tori.fi.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ]
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
