# Freelancer Rate Calculator - Hourly, Daily & Retainer (`trovevault/freelancer-rate-calculator`) Actor

The only freelancer rate calculator that shows what you actually need to charge to hit your net income goal - after taxes, overhead, and non-billable time. Returns 5 billing models: hourly, daily, weekly, monthly retainer, and project minimum.

- **URL**: https://apify.com/trovevault/freelancer-rate-calculator.md
- **Developed by:** [Trove Vault](https://apify.com/trovevault) (community)
- **Categories:** Jobs, Other, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.85 / 1,000 rates

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

## Freelancer Rate Calculator — Hourly, Daily & Retainer Rates After Tax

Calculate the exact rates you need to charge as a freelancer to hit your net income goal — after taxes, overhead, and non-billable time. Returns hourly, daily, weekly, monthly retainer, and project minimum rates in one run.

---

### What does the Freelancer Rate Calculator do?

The Freelancer Rate Calculator tells you the minimum rate you must charge to actually take home the income you want. Most calculators divide salary by hours. This one accounts for everything that eats into your real earnings: tax burden by country, non-billable hours (admin, sales, learning), business overhead, and a profit buffer.

Enter your income goal and your situation. Get five billing models back — all grounded in the same math.

**Core capabilities:**

- 💰 Calculates hourly, daily, weekly, monthly retainer, and project minimum rates
- 🌍 Uses country-specific self-employed tax rates for 23 countries
- 🕐 Accounts for non-billable time — only 60–70% of freelancer hours are billable
- 📊 Factors in annual overhead costs (software, equipment, insurance, accountant)
- 📈 Adds a profit margin buffer to fund business reinvestment
- 🧮 Shows full breakdown: gross income needed, tax burden, billable hours per year

---

### What data does the Freelancer Rate Calculator return?

One row per billing model, five rows total.

| Rate data | Calculation data | Context |
|-----------|-----------------|---------|
| 💰 Billing model name | 📊 Annual revenue needed | 🌍 Country used |
| 💵 Rate amount | ⏱️ Billable hours per year | 🧾 Tax burden (%) |
| 🏦 Currency | 📝 Breakdown summary | — |

**Output fields per row:**

- `billingModel` — Hourly / Daily (8h) / Weekly / Monthly Retainer / Project Minimum (5 days)
- `rate` — The recommended rate for this billing model
- `currency` — USD, EUR, or GBP
- `annualRevenueNeeded` — Gross revenue target to hit your net income goal
- `effectiveBillableHoursPerYear` — Actual billable hours after vacation and non-billable time
- `taxBurden` — Estimated effective tax rate for self-employed in your country (%)
- `country` — Country used for the tax calculation
- `breakdownSummary` — Human-readable explanation of the full calculation chain

---

### Can I use the Freelancer Rate Calculator for any country or currency?

Yes. The Freelancer Rate Calculator supports 23 countries with country-specific self-employed tax rates and three output currencies (USD, EUR, GBP).

Supported countries: United States, United Kingdom, Australia, Canada, Germany, Switzerland, Netherlands, France, Spain, Italy, Sweden, Norway, Denmark, Brazil, Mexico, Portugal, Poland, Argentina, India, Philippines, Indonesia, Nigeria, Pakistan.

Tax rates are approximate effective rates for self-employed individuals, including income tax and social contributions. A US freelancer targeting $60,000 net income will get a very different gross rate requirement than a Danish freelancer targeting the same amount — because Denmark's effective self-employed tax rate (44%) is nearly 3× higher than Pakistan's (15%).

---

### How does the Freelancer Rate Calculator work?

**The Process:**

1. You enter your desired annual net income (what you want to take home after taxes)
2. The calculator looks up the approximate self-employed tax rate for your country
3. It calculates the gross income you need to earn before tax to reach your net goal
4. It adds your annual overhead costs (software, equipment, insurance, accountant fees)
5. It applies your desired profit margin on top of all costs to get the annual revenue target
6. It calculates your actual billable hours per year based on your weekly schedule, billable time percentage, and vacation days
7. It divides annual revenue needed by billable hours to get the hourly rate
8. It derives daily, weekly, monthly, and project rates from the hourly rate

**The key formula:**

````

workingWeeksPerYear = 52 − (vacationDays ÷ 5)
billableHoursPerYear = weeklyHours × (billableTimePercent ÷ 100) × workingWeeksPerYear
grossIncomeNeeded = desiredNetIncome ÷ (1 − taxRate)
totalCosts = grossIncomeNeeded + annualOverhead
annualRevenueNeeded = totalCosts ÷ (1 − profitMargin ÷ 100)
hourlyRate = annualRevenueNeeded ÷ billableHoursPerYear

````

For a US freelancer targeting $60,000 net with 40h/wk, 65% billable, 20 vacation days, $5,000 overhead, 15% profit margin: the result is approximately **$95–$100/hr** — not the naive $40/hr that a simple salary-divided-by-hours approach would give.

---

### Why use the Freelancer Rate Calculator?

| Feature | Generic calculators | Freelancer Rate Calculator |
|---------|--------------------|-----------------------------|
| Tax modeling | No / uses salary tax rates | Yes — self-employed rates for 23 countries |
| Non-billable time | Not accounted for | Configurable billable time % (default 65%) |
| Overhead costs | Not included | Full annual overhead deduction |
| Profit margin | Not included | Configurable buffer (0–50%) |
| Billing models returned | Hourly only | Hourly, daily, weekly, retainer, project min |
| Country support | 0–5 countries | 23 countries |
| Output format | Display only | Structured JSON dataset via API |

Most freelancer rate calculators simply divide a target salary by 2,080 hours. That ignores the three biggest cost drivers in freelancing: taxes (often 25–44% of gross), non-billable time (typically 30–40% of working hours), and business overhead. The Freelancer Rate Calculator accounts for all three.

---

### What can you do with your freelancer rate data?

**Freelancers and consultants** can set rates they actually need instead of guessing. Run the calculator once per year or whenever your costs change.

**Agencies and team leads** can benchmark contractor rates by country — a useful reference when building cost models for distributed teams. A contractor in Germany with the same net income goal costs significantly more gross than one in Poland due to a 12-percentage-point tax difference.

**Finance and operations teams** can use the API to automate rate benchmarking across multiple scenarios:
- Run with different `desiredAnnualIncome` values to build a rate card
- Run with different `country` values to compare international contractor cost structures
- Schedule quarterly to track how overhead changes affect minimum viable rates

**Freelance coaches and accountants** can use the calculator to show clients exactly why their current rates are too low — and by how much.

**Recommended approach:** Start with the default 65% billable time. If you are early in your freelance career, drop it to 50%. If you have a full client pipeline, raise it to 75–80%.

---

### How to use the Freelancer Rate Calculator?

1. Create a free account at [apify.com](https://apify.com)
2. Open the [Freelancer Rate Calculator](https://apify.com/store) on Apify Store
3. Enter your desired annual net income (what you want to take home)
4. Select your country from the dropdown — this sets the tax rate automatically
5. Adjust weekly working hours and billable time percentage to match your reality
6. Enter your annual overhead costs (subscriptions, equipment, accountant, insurance)
7. Set your desired profit margin (10–20% is typical)
8. Click **Start** — results appear in seconds

**Example input (JSON):**

```json
{
    "desiredAnnualIncome": 60000,
    "country": "United States",
    "currency": "USD",
    "weeklyWorkingHours": 40,
    "billableTimePercent": 65,
    "annualVacationDays": 20,
    "annualOverheadCosts": 5000,
    "desiredProfitMargin": 15
}
````

**Example input — Portuguese freelancer targeting €50,000 net:**

```json
{
    "desiredAnnualIncome": 50000,
    "country": "Portugal",
    "currency": "EUR",
    "weeklyWorkingHours": 40,
    "billableTimePercent": 60,
    "annualVacationDays": 25,
    "annualOverheadCosts": 3000,
    "desiredProfitMargin": 10
}
```

***

### How much will it cost to run the Freelancer Rate Calculator?

The Freelancer Rate Calculator performs pure calculation — no web scraping, no browser, no proxies. It runs in under 5 seconds and consumes minimal compute.

**Cost factors:**

- Actor compute time: seconds per run (near-zero cost)
- No proxy usage
- No external API calls

On Apify's free tier, you can run this calculator hundreds of times per month at no cost. See the [Apify pricing page](https://apify.com/pricing) for current plan details.

***

### Input

All fields have sensible defaults so you can start with zero configuration.

| Field | Type | Default | Description |
|-------|------|---------|-------------|
| `desiredAnnualIncome` | integer | 60000 | Net income goal per year in your currency |
| `country` | select | United States | Sets the self-employed tax rate |
| `currency` | select | USD | Output currency (USD / EUR / GBP) |
| `weeklyWorkingHours` | integer | 40 | Total hours worked per week (billable + non-billable) |
| `billableTimePercent` | integer | 65 | % of working hours billed to clients (10–100) |
| `annualVacationDays` | integer | 20 | Days off per year (paid and unpaid) |
| `annualOverheadCosts` | integer | 5000 | Annual business expenses |
| `desiredProfitMargin` | integer | 15 | Profit buffer % on top of all costs (0–50) |

***

### Output

Five rows are pushed to the dataset — one per billing model.

```json
[
  {
    "billingModel": "Hourly",
    "rate": 95.5,
    "currency": "USD",
    "annualRevenueNeeded": 119213.75,
    "effectiveBillableHoursPerYear": 1248,
    "taxBurden": 30,
    "country": "United States",
    "breakdownSummary": "Net income goal: $60,000/yr. Tax rate (United States): 30% → gross income needed: $85,714/yr. Overhead: $5,000 → total costs: $90,714. Profit margin (15%) → annual revenue target: $106,722. Billable hours: 40h/wk × 65% billable × 48 working weeks = 1,248h/yr. Hourly rate: $106,722 ÷ 1,248h = $85.5/hr."
  },
  {
    "billingModel": "Daily (8h)",
    "rate": 764,
    "currency": "USD",
    "annualRevenueNeeded": 119213.75,
    "effectiveBillableHoursPerYear": 1248,
    "taxBurden": 30,
    "country": "United States",
    "breakdownSummary": "..."
  },
  {
    "billingModel": "Weekly",
    "rate": 3820,
    "currency": "USD",
    "annualRevenueNeeded": 119213.75,
    "effectiveBillableHoursPerYear": 1248,
    "taxBurden": 30,
    "country": "United States",
    "breakdownSummary": "..."
  },
  {
    "billingModel": "Monthly Retainer",
    "rate": 9934.48,
    "currency": "USD",
    "annualRevenueNeeded": 119213.75,
    "effectiveBillableHoursPerYear": 1248,
    "taxBurden": 30,
    "country": "United States",
    "breakdownSummary": "..."
  },
  {
    "billingModel": "Project Minimum (5 days)",
    "rate": 3820,
    "currency": "USD",
    "annualRevenueNeeded": 119213.75,
    "effectiveBillableHoursPerYear": 1248,
    "taxBurden": 30,
    "country": "United States",
    "breakdownSummary": "..."
  }
]
```

Results are available via the Apify API, downloadable as JSON or CSV, or fed into Zapier, Make, or any webhook.

***

### Are there other salary and pricing tools in the Apify Store?

Yes. These calculators work well together:

- 🌍 [EU Salary Calculator](https://apify.com/store/eu-salary-calculator) — Net pay after tax across all 27 EU member states. Use alongside this actor to benchmark freelance rates vs. employment in Europe.
- 🇺🇸 [US & Canada Salary Calculator](https://apify.com/store/us-ca-salary-calculator) — Net pay after federal + state/provincial tax in the US and Canada. Compare freelance vs. employment income.
- 🇬🇧 [UK Salary Calculator](https://apify.com/store/uk-salary-calculator) — Take-home pay after UK income tax and National Insurance. Compare employed vs. self-employed income in the UK.
- 📣 [Influencer Pricing Calculator](https://apify.com/store/influencer-pricing-calculator) — Estimate influencer rates per post, story, reel, and video. Useful for freelance content creators setting brand deal rates.

***

### FAQ

#### How do I calculate my freelance hourly rate?

Divide your annual revenue target by your effective billable hours per year. Your annual revenue target is your desired net income, grossed up for taxes, plus overhead costs, plus a profit margin. Your effective billable hours are your weekly hours multiplied by your billable percentage, multiplied by working weeks (52 minus vacation weeks). For a US freelancer targeting $60,000 net with standard inputs, the result is approximately $95/hr — more than double the naive $29/hr you would get from dividing $60,000 by 2,080.

#### What is the billable time percentage and what should I use?

Billable time is the percentage of your working hours that you actually charge clients for. The rest goes to admin, sales calls, proposals, invoicing, learning, and buffer. Industry averages: 50–60% for new freelancers, 65–75% for established freelancers with steady clients, 75–80% for fully booked specialists. The default of 65% is a realistic midpoint. Do not use 100% — that leaves no time for business development or growth.

#### Which countries are supported and how are tax rates calculated?

23 countries are supported: United States, United Kingdom, Australia, Canada, Germany, Switzerland, Netherlands, France, Spain, Italy, Sweden, Norway, Denmark, Brazil, Mexico, Portugal, Poland, Argentina, India, Philippines, Indonesia, Nigeria, and Pakistan. Tax rates are approximate effective rates for self-employed individuals, combining income tax and social security contributions. They are not marginal rates — they are effective all-in rates at moderate income levels. For precise tax calculations, consult a local accountant.

#### Can I use the Freelancer Rate Calculator with the Apify API?

Yes. Send a POST request to the Apify API with your input JSON and retrieve results programmatically. The API returns structured JSON with all five billing models. Use it to build rate cards, automate scenario comparisons, or integrate into your own tools.

```bash
curl -X POST \
  "https://api.apify.com/v2/acts/YOUR_ACTOR_ID/runs?token=YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"desiredAnnualIncome": 80000, "country": "Germany", "currency": "EUR"}'
```

#### Can I use the Freelancer Rate Calculator through an MCP Server?

Yes. The Freelancer Rate Calculator is available via the Apify MCP Server at `https://mcp.apify.com`. Connect any MCP-compatible AI assistant to run the calculator conversationally. Ask it "What hourly rate does a Portuguese freelancer need to earn €60,000 net?" and get a structured answer.

#### How is the monthly retainer rate different from the weekly rate × 4?

The monthly retainer is calculated as annual revenue needed divided by 12 — it smooths out month-to-month variation in billable hours. The weekly rate is based on your actual billable hours that week. For clients who want a fixed monthly commitment regardless of hours delivered, the monthly retainer formula is more accurate.

#### Should I show clients my full rate calculation breakdown?

No. Clients pay for outcomes and value, not for your cost structure. The breakdown summary in the output is for your internal reference only — to confirm your rate is sustainable, not to justify it to clients. Quote your rate with confidence based on the value you deliver.

#### What should I include in annual overhead costs?

Include every recurring business expense: software subscriptions (design tools, project management, accounting), equipment depreciation, professional insurance, health insurance premiums (if self-employed), accountant or bookkeeper fees, marketing spend, coworking space, and professional development. A realistic baseline for most freelancers is $3,000–$8,000/yr. Do not include personal expenses.

#### Is it legal to use rate calculators for setting freelance prices?

Yes, completely. Rate setting is a private business decision. There are no legal restrictions on using tools or formulas to determine your prices as an independent contractor or freelancer. Price fixing regulations apply to competitors colluding on prices, not to individuals setting their own rates independently.

#### Can I integrate the Freelancer Rate Calculator with Zapier, Make, or Google Sheets?

Yes. Connect via Apify's native integrations with Zapier, Make (formerly Integromat), and n8n. Use the Apify Google Sheets integration to push rate scenarios directly to a spreadsheet for comparison. You can also use webhooks to trigger a rate recalculation whenever your overhead costs change.

***

### Your feedback

Found a bug, want a new country added, or have a feature request? Open an issue on the [Issues tab](https://apify.com/store) of this actor. Tax rates are updated annually — if you spot an outdated rate for your country, please flag it.

# Actor input Schema

## `desiredAnnualIncome` (type: `integer`):

Target net income per year in your local currency — what you want to actually take home after taxes and expenses.

## `countries` (type: `array`):

One or more countries to calculate rates for. Each country uses its own estimated self-employed tax rate. You'll get one set of results per country.

## `billingModels` (type: `array`):

Select which billing models to include in the output. All five are selected by default — deselect any you don't need.

## `currency` (type: `string`):

Currency symbol to display in results. All input values should be in this currency.

## `weeklyWorkingHours` (type: `integer`):

Total hours you work per week — including admin, sales, and learning, not just billable client work.

## `billableTimePercent` (type: `integer`):

Percentage of your working hours that are billable to clients. Most freelancers bill 60–70%. The rest goes to admin, sales, and learning.

## `annualVacationDays` (type: `integer`):

Total days off per year (paid and unpaid). Used to calculate your actual working weeks per year.

## `annualOverheadCosts` (type: `integer`):

Yearly business expenses — software subscriptions, equipment, accountant fees, health insurance, marketing. Enter 0 if unsure.

## `desiredProfitMargin` (type: `integer`):

Extra margin on top of all costs to reinvest in your business or build a buffer. 10–20% is typical for freelancers.

## `datasetId` (type: `string`):

ID of an existing Apify dataset to push results into in addition to the default dataset. Useful for combining results from multiple runs or integrating with downstream actors.

## `runId` (type: `string`):

ID of a previous actor run to associate this run with. Used for chaining actors in multi-step pipelines.

## Actor input object example

```json
{
  "desiredAnnualIncome": 60000,
  "countries": [
    "United States"
  ],
  "billingModels": [
    "Hourly",
    "Daily (8h)",
    "Weekly",
    "Monthly Retainer",
    "Project Minimum (5 days)"
  ],
  "currency": "USD",
  "weeklyWorkingHours": 40,
  "billableTimePercent": 65,
  "annualVacationDays": 20,
  "annualOverheadCosts": 5000,
  "desiredProfitMargin": 15
}
```

# Actor output Schema

## `dataset` (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 = {
    "desiredAnnualIncome": 60000,
    "countries": [
        "United States"
    ],
    "billingModels": [
        "Hourly",
        "Daily (8h)",
        "Weekly",
        "Monthly Retainer",
        "Project Minimum (5 days)"
    ],
    "currency": "USD",
    "weeklyWorkingHours": 40,
    "billableTimePercent": 65,
    "annualVacationDays": 20,
    "annualOverheadCosts": 5000,
    "desiredProfitMargin": 15
};

// Run the Actor and wait for it to finish
const run = await client.actor("trovevault/freelancer-rate-calculator").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 = {
    "desiredAnnualIncome": 60000,
    "countries": ["United States"],
    "billingModels": [
        "Hourly",
        "Daily (8h)",
        "Weekly",
        "Monthly Retainer",
        "Project Minimum (5 days)",
    ],
    "currency": "USD",
    "weeklyWorkingHours": 40,
    "billableTimePercent": 65,
    "annualVacationDays": 20,
    "annualOverheadCosts": 5000,
    "desiredProfitMargin": 15,
}

# Run the Actor and wait for it to finish
run = client.actor("trovevault/freelancer-rate-calculator").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 '{
  "desiredAnnualIncome": 60000,
  "countries": [
    "United States"
  ],
  "billingModels": [
    "Hourly",
    "Daily (8h)",
    "Weekly",
    "Monthly Retainer",
    "Project Minimum (5 days)"
  ],
  "currency": "USD",
  "weeklyWorkingHours": 40,
  "billableTimePercent": 65,
  "annualVacationDays": 20,
  "annualOverheadCosts": 5000,
  "desiredProfitMargin": 15
}' |
apify call trovevault/freelancer-rate-calculator --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Freelancer Rate Calculator - Hourly, Daily & Retainer",
        "description": "The only freelancer rate calculator that shows what you actually need to charge to hit your net income goal - after taxes, overhead, and non-billable time. Returns 5 billing models: hourly, daily, weekly, monthly retainer, and project minimum.",
        "version": "0.1",
        "x-build-id": "Yc0ruhGvogN6wf9R8"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/trovevault~freelancer-rate-calculator/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-trovevault-freelancer-rate-calculator",
                "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/trovevault~freelancer-rate-calculator/runs": {
            "post": {
                "operationId": "runs-sync-trovevault-freelancer-rate-calculator",
                "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/trovevault~freelancer-rate-calculator/run-sync": {
            "post": {
                "operationId": "run-sync-trovevault-freelancer-rate-calculator",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "desiredAnnualIncome",
                    "countries"
                ],
                "properties": {
                    "desiredAnnualIncome": {
                        "title": "Desired Annual Net Income",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Target net income per year in your local currency — what you want to actually take home after taxes and expenses.",
                        "default": 60000
                    },
                    "countries": {
                        "title": "Countries",
                        "type": "array",
                        "description": "One or more countries to calculate rates for. Each country uses its own estimated self-employed tax rate. You'll get one set of results per country.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "Argentina",
                                "Australia",
                                "Austria",
                                "Bangladesh",
                                "Belgium",
                                "Bolivia",
                                "Brazil",
                                "Bulgaria",
                                "Canada",
                                "Chile",
                                "China",
                                "Colombia",
                                "Croatia",
                                "Czech Republic",
                                "Denmark",
                                "Ecuador",
                                "Egypt",
                                "Estonia",
                                "Ethiopia",
                                "Finland",
                                "France",
                                "Germany",
                                "Ghana",
                                "Greece",
                                "Hungary",
                                "India",
                                "Indonesia",
                                "Ireland",
                                "Israel",
                                "Italy",
                                "Japan",
                                "Kenya",
                                "Latvia",
                                "Lithuania",
                                "Luxembourg",
                                "Malaysia",
                                "Mexico",
                                "Morocco",
                                "Netherlands",
                                "New Zealand",
                                "Nigeria",
                                "Norway",
                                "Pakistan",
                                "Paraguay",
                                "Peru",
                                "Philippines",
                                "Poland",
                                "Portugal",
                                "Romania",
                                "Saudi Arabia",
                                "Serbia",
                                "Singapore",
                                "Slovakia",
                                "South Africa",
                                "South Korea",
                                "Spain",
                                "Sri Lanka",
                                "Sweden",
                                "Switzerland",
                                "Taiwan",
                                "Thailand",
                                "Turkey",
                                "Ukraine",
                                "United Arab Emirates",
                                "United Kingdom",
                                "United States",
                                "Uruguay",
                                "Venezuela",
                                "Vietnam"
                            ],
                            "enumTitles": [
                                "🇦🇷 Argentina",
                                "🇦🇺 Australia",
                                "🇦🇹 Austria",
                                "🇧🇩 Bangladesh",
                                "🇧🇪 Belgium",
                                "🇧🇴 Bolivia",
                                "🇧🇷 Brazil",
                                "🇧🇬 Bulgaria",
                                "🇨🇦 Canada",
                                "🇨🇱 Chile",
                                "🇨🇳 China",
                                "🇨🇴 Colombia",
                                "🇭🇷 Croatia",
                                "🇨🇿 Czech Republic",
                                "🇩🇰 Denmark",
                                "🇪🇨 Ecuador",
                                "🇪🇬 Egypt",
                                "🇪🇪 Estonia",
                                "🇪🇹 Ethiopia",
                                "🇫🇮 Finland",
                                "🇫🇷 France",
                                "🇩🇪 Germany",
                                "🇬🇭 Ghana",
                                "🇬🇷 Greece",
                                "🇭🇺 Hungary",
                                "🇮🇳 India",
                                "🇮🇩 Indonesia",
                                "🇮🇪 Ireland",
                                "🇮🇱 Israel",
                                "🇮🇹 Italy",
                                "🇯🇵 Japan",
                                "🇰🇪 Kenya",
                                "🇱🇻 Latvia",
                                "🇱🇹 Lithuania",
                                "🇱🇺 Luxembourg",
                                "🇲🇾 Malaysia",
                                "🇲🇽 Mexico",
                                "🇲🇦 Morocco",
                                "🇳🇱 Netherlands",
                                "🇳🇿 New Zealand",
                                "🇳🇬 Nigeria",
                                "🇳🇴 Norway",
                                "🇵🇰 Pakistan",
                                "🇵🇾 Paraguay",
                                "🇵🇪 Peru",
                                "🇵🇭 Philippines",
                                "🇵🇱 Poland",
                                "🇵🇹 Portugal",
                                "🇷🇴 Romania",
                                "🇸🇦 Saudi Arabia",
                                "🇷🇸 Serbia",
                                "🇸🇬 Singapore",
                                "🇸🇰 Slovakia",
                                "🇿🇦 South Africa",
                                "🇰🇷 South Korea",
                                "🇪🇸 Spain",
                                "🇱🇰 Sri Lanka",
                                "🇸🇪 Sweden",
                                "🇨🇭 Switzerland",
                                "🇹🇼 Taiwan",
                                "🇹🇭 Thailand",
                                "🇹🇷 Turkey",
                                "🇺🇦 Ukraine",
                                "🇦🇪 United Arab Emirates",
                                "🇬🇧 United Kingdom",
                                "🇺🇸 United States",
                                "🇺🇾 Uruguay",
                                "🇻🇪 Venezuela",
                                "🇻🇳 Vietnam"
                            ]
                        },
                        "default": [
                            "United States"
                        ]
                    },
                    "billingModels": {
                        "title": "Billing Models",
                        "type": "array",
                        "description": "Select which billing models to include in the output. All five are selected by default — deselect any you don't need.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "Hourly",
                                "Daily (8h)",
                                "Weekly",
                                "Monthly Retainer",
                                "Project Minimum (5 days)"
                            ]
                        },
                        "default": [
                            "Hourly",
                            "Daily (8h)",
                            "Weekly",
                            "Monthly Retainer",
                            "Project Minimum (5 days)"
                        ]
                    },
                    "currency": {
                        "title": "Output Currency",
                        "enum": [
                            "USD",
                            "EUR",
                            "GBP"
                        ],
                        "type": "string",
                        "description": "Currency symbol to display in results. All input values should be in this currency.",
                        "default": "USD"
                    },
                    "weeklyWorkingHours": {
                        "title": "Weekly Working Hours (Total)",
                        "minimum": 1,
                        "maximum": 80,
                        "type": "integer",
                        "description": "Total hours you work per week — including admin, sales, and learning, not just billable client work.",
                        "default": 40
                    },
                    "billableTimePercent": {
                        "title": "Billable Time (%)",
                        "minimum": 10,
                        "maximum": 100,
                        "type": "integer",
                        "description": "Percentage of your working hours that are billable to clients. Most freelancers bill 60–70%. The rest goes to admin, sales, and learning.",
                        "default": 65
                    },
                    "annualVacationDays": {
                        "title": "Annual Vacation Days",
                        "minimum": 0,
                        "maximum": 260,
                        "type": "integer",
                        "description": "Total days off per year (paid and unpaid). Used to calculate your actual working weeks per year.",
                        "default": 20
                    },
                    "annualOverheadCosts": {
                        "title": "Annual Overhead Costs",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Yearly business expenses — software subscriptions, equipment, accountant fees, health insurance, marketing. Enter 0 if unsure.",
                        "default": 5000
                    },
                    "desiredProfitMargin": {
                        "title": "Desired Profit Margin (%)",
                        "minimum": 0,
                        "maximum": 50,
                        "type": "integer",
                        "description": "Extra margin on top of all costs to reinvest in your business or build a buffer. 10–20% is typical for freelancers.",
                        "default": 15
                    },
                    "datasetId": {
                        "title": "Dataset ID (optional)",
                        "type": "string",
                        "description": "ID of an existing Apify dataset to push results into in addition to the default dataset. Useful for combining results from multiple runs or integrating with downstream actors."
                    },
                    "runId": {
                        "title": "Run ID (optional)",
                        "type": "string",
                        "description": "ID of a previous actor run to associate this run with. Used for chaining actors in multi-step pipelines."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
