# Freelancer Scraper (`maximedupre/freelancer-scraper`) Actor

Scrape public Freelancer.com projects and freelancer profiles from keywords, project URLs, category URLs, and profile URLs. Export project titles, budgets, bid counts, skills, hourly rates, ratings, profile URLs, and source metadata.

- **URL**: https://apify.com/maximedupre/freelancer-scraper.md
- **Developed by:** [Maxime Dupré](https://apify.com/maximedupre) (community)
- **Categories:** Jobs, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.85 / 1,000 scraped project or profiles

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

### 🔎 Find Freelancer.com projects and profiles

Freelancer Scraper collects public [Freelancer.com](https://www.freelancer.com/) project listings and freelancer profile cards from keywords, project URLs, category URLs, and profile URLs. Use it to export project titles, descriptions, budgets, hourly rates, bid counts, skills, profile rates, ratings, review counts, profile URLs, source URLs, and scrape metadata.

Start with a simple keyword such as `python`, keep `Include projects` enabled, and set `Result limit` to a small number for your first run. When the dataset looks right, add more keywords, job category pages, direct project URLs, or profile URLs and export the results as JSON, CSV, Excel, XML, RSS, or through the Apify API.

### ✅ What this Freelancer scraper does

- Searches public Freelancer.com project listings by keyword.
- Scrapes project rows from Freelancer.com job category pages and direct project URLs.
- Scrapes freelancer profile rows from keyword searches and direct profile URLs or usernames.
- Saves one dataset row per accepted project listing or freelancer profile.
- Extracts source context so each row keeps the input target and source URL that produced it.
- Lets you choose project rows, profile rows, or both in the same run.
- Supports project sorting, fixed-price versus hourly filtering, minimum bid count, profile country filtering, and profile rating filtering.
- Charges only for saved project and profile rows.

This Actor focuses on public Freelancer.com data. It does not log in, place bids, message clients or freelancers, submit forms, scrape private account pages, or enrich rows from third-party services.

### 📦 What data you get

Project rows can include:

- `recordType`: `project`
- `projectId`, `title`, `url`, `sourceUrl`, `inputType`, `inputValue`, and `position`
- `status`, `description`, and `projectType`
- `budget` and `hourlyRate` objects with parsed amounts, currency, and display text when visible
- `bidStats` with bid count and average bid when available
- `skills`
- `owner` fields when Freelancer.com exposes them
- `submittedAt`, `updatedAt`, and `scrapedAt`

Profile rows can include:

- `recordType`: `profile`
- `profileId`, `username`, `displayName`, `url`, `sourceUrl`, `inputType`, `inputValue`, and `position`
- `tagline`, `description`, `country`, and `city`
- `hourlyRate`, `rating`, `reviewCount`, and `earningsScore`
- `skills`, `avatarUrl`, `isOnline`, and `scrapedAt`

Some fields can be empty when Freelancer.com does not show that value on the public page or card.

### 🧭 Common use cases

- Find fresh Freelancer.com jobs that match your skills or agency services.
- Monitor project demand for a niche, tech stack, or service category.
- Build a lead list of project URLs with budgets, bid counts, and skills.
- Research freelancer rates, ratings, locations, and skill positioning.
- Compare fixed-price and hourly project opportunities.
- Send Freelancer.com project or profile data to a spreadsheet, warehouse, webhook, or API workflow.

### 🚀 How to run it

1. Open the Input tab.
2. Add one or more `Search keywords`, such as `python`, `React developer`, `data scraping`, or `WordPress`.
3. Choose whether to save project listings, freelancer profiles, or both.
4. Set `Result limit` to a small number for the first run.
5. Optionally add direct project URLs, job category URLs, profile URLs, or usernames.
6. Run the Actor.
7. Open the dataset and export the rows or pull them through the Apify API.

Good target examples:

- `python`
- `React developer`
- `https://www.freelancer.com/jobs/python/`
- `https://www.freelancer.com/projects/python/example-project`
- `https://www.freelancer.com/u/exampleuser`

### ⚙️ Input

| Field | What it does |
| --- | --- |
| `searchQueries` | Freelancer.com search keywords for project listings and, when enabled, freelancer profiles. |
| `projectUrls` | Direct Freelancer.com project URLs to save as project rows. |
| `categoryUrls` | Freelancer.com job category URLs to scan for project listings. |
| `profileUrls` | Freelancer.com profile URLs or usernames to save as profile rows. |
| `includeProjects` | Saves project listing rows from keywords, project URLs, and category URLs. |
| `includeProfiles` | Saves freelancer profile rows from keywords and profile URLs. |
| `maxItems` | Maximum project and profile rows to save across the run. |
| `sortBy` | Sort order for project search results. |
| `projectType` | Keeps fixed-price projects, hourly projects, or both. |
| `minBidCount` | Skips project rows with fewer bids than the selected number. |
| `country` | Optional country filter for profile rows. |
| `minRating` | Optional minimum rating for profile rows. |

#### 🧪 Example project input

```json
{
  "searchQueries": ["python"],
  "includeProjects": true,
  "includeProfiles": false,
  "maxItems": 25,
  "sortBy": "latest",
  "projectType": "any",
  "minBidCount": 0
}
````

#### 🧪 Example profile input

```json
{
  "searchQueries": ["python developer"],
  "includeProjects": false,
  "includeProfiles": true,
  "maxItems": 25,
  "country": "India",
  "minRating": 4.5
}
```

### 🧾 Output example

#### 📌 Project row

```json
{
  "recordType": "project",
  "projectId": 40478300,
  "title": "Roblox Digital Goods Delivery Automation",
  "url": "https://www.freelancer.com/projects/roblox/Roblox-Digital-Goods-Delivery-Automation",
  "sourceUrl": "https://www.freelancer.com/api/projects/0.1/projects/active/",
  "inputType": "searchQuery",
  "inputValue": "python",
  "position": 1,
  "status": "active",
  "description": "Project description text when visible...",
  "projectType": "fixed",
  "budget": {
    "min": 1500,
    "max": 3000,
    "currency": "USD",
    "text": "USD 1500-3000"
  },
  "hourlyRate": {
    "min": null,
    "max": null,
    "currency": null,
    "text": null
  },
  "bidStats": {
    "bidCount": 12,
    "averageBid": 2400
  },
  "skills": ["PHP", "JavaScript", "Python", "WordPress", "C++ Programming"],
  "owner": {
    "id": null,
    "username": null,
    "displayName": null,
    "country": null
  },
  "submittedAt": "2026-05-29T22:10:58.000Z",
  "updatedAt": null,
  "scrapedAt": "2026-05-29T22:30:00.000Z"
}
```

#### 👤 Profile row

```json
{
  "recordType": "profile",
  "profileId": null,
  "username": "ajaynpaladiya",
  "displayName": "Ajay P.",
  "url": "https://www.freelancer.com/u/ajaynpaladiya",
  "sourceUrl": "https://www.freelancer.com/freelancers?q=python%20developer",
  "inputType": "searchQuery",
  "inputValue": "python developer",
  "position": 1,
  "tagline": "Full Stack Developer",
  "description": "Profile summary text when visible...",
  "country": "India",
  "city": null,
  "hourlyRate": {
    "amount": 15,
    "currency": "USD",
    "text": "$15 USD per hour"
  },
  "rating": 4.9,
  "reviewCount": 1221,
  "earningsScore": null,
  "skills": ["PHP", "Python", "JavaScript"],
  "avatarUrl": null,
  "isOnline": null,
  "scrapedAt": "2026-05-29T22:30:00.000Z"
}
```

### 💳 Pricing

This Actor uses pay-per-event pricing. You are charged for each saved project listing or freelancer profile. Runs that find no matching public Freelancer.com results do not create charged dataset rows.

For cost control, start with a small `Result limit`, review the dataset, then raise the limit when the output matches your workflow.

### ⚠️ Limits and caveats

- The Actor only collects public Freelancer.com data visible to the run.
- Project rows and profile rows have different fields because Freelancer.com exposes different data for listings and freelancer cards.
- Some fields may be `null` when Freelancer.com does not show them for a specific project, profile, region, or page state.
- Direct project URL rows can be lighter than keyword project rows when the public project page does not expose every structured field.
- Very broad keywords can return many similar results, so use `Result limit`, `Project type`, `Minimum bid count`, `Profile country`, and `Profile rating` to keep runs focused.

### ❓ FAQ

#### 🔀 Can I scrape Freelancer.com jobs and profiles in one run?

Yes. Enable both `Include projects` and `Include profiles`. The dataset will contain `project` and `profile` rows, and each row's `recordType` tells you which contract it uses.

#### 🔐 Do I need a Freelancer.com account?

No. This Actor is built for public Freelancer.com project listings and profile cards. It does not use your Freelancer.com account and does not perform logged-in actions.

#### 🔌 Can I use this as a Freelancer.com API?

Yes, for the public data this Actor returns. You can run it from the Apify API, schedule it, connect webhooks, or export the dataset to JSON, CSV, Excel, XML, and RSS.

#### 🧩 Why are some fields empty?

Freelancer.com does not expose every field on every project listing or profile card. Empty values mean the field was not visible in the public source data for that row.

### 📝 Changelog

- 0.1: Initial release.

### 🆘 Support

For issues, questions, or feature requests, [file a ticket](https://console.apify.com/actors/maximedupre~freelancer-scraper/issues) and I'll fix or implement it in less than 24h 🫡

### 🔗 Other actors

- [LinkedIn Company People Scraper ↗](https://apify.com/maximedupre/linkedin-company-people-scraper) - Export visible employees from LinkedIn company People pages.
- [LinkedIn Company Scraper ↗](https://apify.com/maximedupre/linkedin-company-scraper) - Collect public company profile facts for account research.
- [Website Emails Scraper ↗](https://apify.com/maximedupre/website-emails-scraper) - Find public contact emails from websites you already care about.
- [BusinessesForSale Scraper ↗](https://apify.com/maximedupre/businessesforsale-scraper) - Export business opportunity listings with prices, locations, and seller links.
- [Reddit Scraper ↗](https://apify.com/maximedupre/reddit-scraper) - Search Reddit posts and comments for market and audience research.

**Made with ❤️ by Maxime Dupré**

# Actor input Schema

## `searchQueries` (type: `array`):

Skills, roles, or phrases to search on Freelancer.com, such as python, React developer, data scraping, or WordPress. Keywords can return project rows, profile rows, or both depending on the output toggles.

## `projectUrls` (type: `array`):

Direct Freelancer.com project pages to save as project rows. Use this when you already have specific job posts to export.

## `categoryUrls` (type: `array`):

Freelancer.com job category pages to scan for project listings, such as https://www.freelancer.com/jobs/python/.

## `profileUrls` (type: `array`):

Freelancer.com profile URLs or usernames to save as profile rows. Example formats: https://www.freelancer.com/u/username or username.

## `includeProjects` (type: `boolean`):

Save Freelancer.com project listings from search keywords, project URLs, and category URLs.

## `includeProfiles` (type: `boolean`):

Save freelancer profile rows from search keywords and profile URLs.

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

Maximum project and profile rows to save across the whole run. Use a small limit for a quick test, then raise it when the output looks right.

## `sortBy` (type: `string`):

Ordering for project rows found from search keywords.

## `projectType` (type: `string`):

Keep fixed-price projects, hourly projects, or both when scraping project search results.

## `minBidCount` (type: `integer`):

Skip project rows with fewer bids than this number. Use 0 to keep all projects.

## `country` (type: `string`):

Optional country filter for profile rows, such as India, United States, or United Kingdom.

## `minRating` (type: `number`):

Optional minimum rating for freelancer profile rows. Leave empty to keep profiles with any visible rating.

## Actor input object example

```json
{
  "searchQueries": [
    "python"
  ],
  "includeProjects": true,
  "includeProfiles": false,
  "maxItems": 25,
  "sortBy": "latest",
  "projectType": "any",
  "minBidCount": 0
}
```

# Actor output Schema

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

Open the dataset with project titles, budgets, bid counts, skills, profile rates, ratings, URLs, and source metadata.

# 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 = {
    "searchQueries": [
        "python"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("maximedupre/freelancer-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 = { "searchQueries": ["python"] }

# Run the Actor and wait for it to finish
run = client.actor("maximedupre/freelancer-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 '{
  "searchQueries": [
    "python"
  ]
}' |
apify call maximedupre/freelancer-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Freelancer Scraper",
        "description": "Scrape public Freelancer.com projects and freelancer profiles from keywords, project URLs, category URLs, and profile URLs. Export project titles, budgets, bid counts, skills, hourly rates, ratings, profile URLs, and source metadata.",
        "version": "0.1",
        "x-build-id": "UVSNkLf9Wr8e7rY62"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/maximedupre~freelancer-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-maximedupre-freelancer-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/maximedupre~freelancer-scraper/runs": {
            "post": {
                "operationId": "runs-sync-maximedupre-freelancer-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/maximedupre~freelancer-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-maximedupre-freelancer-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": {
                    "searchQueries": {
                        "title": "Search keywords",
                        "type": "array",
                        "description": "Skills, roles, or phrases to search on Freelancer.com, such as python, React developer, data scraping, or WordPress. Keywords can return project rows, profile rows, or both depending on the output toggles.",
                        "items": {
                            "type": "string",
                            "minLength": 1
                        }
                    },
                    "projectUrls": {
                        "title": "Project URLs",
                        "type": "array",
                        "description": "Direct Freelancer.com project pages to save as project rows. Use this when you already have specific job posts to export.",
                        "items": {
                            "type": "string",
                            "minLength": 1
                        }
                    },
                    "categoryUrls": {
                        "title": "Category URLs",
                        "type": "array",
                        "description": "Freelancer.com job category pages to scan for project listings, such as https://www.freelancer.com/jobs/python/.",
                        "items": {
                            "type": "string",
                            "minLength": 1
                        }
                    },
                    "profileUrls": {
                        "title": "Profile URLs",
                        "type": "array",
                        "description": "Freelancer.com profile URLs or usernames to save as profile rows. Example formats: https://www.freelancer.com/u/username or username.",
                        "items": {
                            "type": "string",
                            "minLength": 1
                        }
                    },
                    "includeProjects": {
                        "title": "Include projects",
                        "type": "boolean",
                        "description": "Save Freelancer.com project listings from search keywords, project URLs, and category URLs.",
                        "default": true
                    },
                    "includeProfiles": {
                        "title": "Include profiles",
                        "type": "boolean",
                        "description": "Save freelancer profile rows from search keywords and profile URLs.",
                        "default": false
                    },
                    "maxItems": {
                        "title": "Result limit",
                        "minimum": 1,
                        "maximum": 5000,
                        "type": "integer",
                        "description": "Maximum project and profile rows to save across the whole run. Use a small limit for a quick test, then raise it when the output looks right.",
                        "default": 25
                    },
                    "sortBy": {
                        "title": "Sort projects by",
                        "enum": [
                            "latest",
                            "lowest_budget",
                            "highest_budget",
                            "lowest_bids",
                            "highest_bids"
                        ],
                        "type": "string",
                        "description": "Ordering for project rows found from search keywords.",
                        "default": "latest"
                    },
                    "projectType": {
                        "title": "Project type",
                        "enum": [
                            "any",
                            "fixed",
                            "hourly"
                        ],
                        "type": "string",
                        "description": "Keep fixed-price projects, hourly projects, or both when scraping project search results.",
                        "default": "any"
                    },
                    "minBidCount": {
                        "title": "Minimum bid count",
                        "minimum": 0,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Skip project rows with fewer bids than this number. Use 0 to keep all projects.",
                        "default": 0
                    },
                    "country": {
                        "title": "Profile country",
                        "type": "string",
                        "description": "Optional country filter for profile rows, such as India, United States, or United Kingdom."
                    },
                    "minRating": {
                        "title": "Profile rating",
                        "minimum": 0,
                        "maximum": 5,
                        "type": "number",
                        "description": "Optional minimum rating for freelancer profile rows. Leave empty to keep profiles with any visible rating."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
