# Marketplace Seller Fee Calculator for 21 US Platforms

> Marketplace fee calculator for Etsy, eBay, Amazon, Poshmark and 17 more US platforms: fee lines, net payout, profit, margin and break-even price.

URL: https://cliqtomedia.com/actors/marketplace-fee-calculator/

Category: E-commerce & prices · Status: coming soon · Apify profile: https://apify.com/cliqtomedia?fpr=cliqto

Enter a sale price and item cost. See every fee line, your payout, profit and break-even price. Compare up to 21 US platforms in one run.

## How to use it: 3 steps

1. **Follow us on Apify.** The tool is built and waits in the queue for the Apify Store. Apify is the cloud platform where our tools run.
2. **Paste your input and press Start.** No code needed: you fill in a form (the input). It already has a working example. For example: `etsy` in Platforms. Each start is one run.
3. **Download the results.** When the run ends, the results are in a table (the dataset). Open Output, press Export and pick Excel or CSV. JSON and the API are there too.

## What it does

Calculate seller fees, payout, profit and break-even price for Etsy, eBay, Amazon, Poshmark, Mercari, TikTok Shop and 15 more US marketplaces and payment platforms. Fee rates come from the open SellersCalc fee data (CC BY 4.0), with every fee line shown separately.

- every fee line with its rate and dollar amount (transaction, payment processing, listing, referral, FBA and other fees);
- total seller fees and your net payout;
- profit and margin when you give your item cost;
- the break-even price and, if you ask, the lowest price for your target margin;
- costs that are not included (sales tax, returns, ads, subscriptions, currency conversion), so you never read them as zero.

### Good for

- Price a product so that it still makes money after Etsy, eBay or Amazon fees.
- Compare the same sale on 5–20 platforms in one run and see where you keep more.
- Get a clean fee table for your own spreadsheet, repricer or AI agent.

### Not a good fit

- US fee schedules in USD only. Other countries and currencies return a `not_supported` row, not guessed fees.
- One standard rate per platform. Category rates, seller levels, Amazon FBA size tiers and promotions are not modeled.
- Amazon always includes the single published FBA fee. For merchant-fulfilled orders add `amazon.fbaFee` to `excludeFeeKeys`.
- Sales tax, returns, ads, subscriptions, storage and currency conversion are listed in `notIncluded`, not calculated.
- Rates are as last reviewed by SellersCalc (`scheduleLastReviewed`). This is not a legal or accounting guarantee; check the platform page in `officialSource` before big decisions.

## Price

Prices will be shown after release.

## Questions

### Do I need a seller account?

No. It uses open SellersCalc fee data, not your account.

### Are taxes and returns included?

No. They are listed as not included, so you never read them as zero.

### Does it work outside the US?

No. It uses US fees in USD. Other countries get a not_supported row.

### Are category fees used?

No. It uses one standard rate per platform.

### Do I need an account on Etsy, eBay or Amazon?

No. The Actor uses open fee data. It does not log in and does not read your shop.

### How fresh are the fees?

Each row has `scheduleLastReviewed`, the date SellersCalc last checked the rates. The Actor reads the data on every run. Platforms can change fees at any time; check `officialSource` for the platform page.

### Why is my break-even price one cent different from another calculator?

The Actor finds the lowest price in whole cents that gives profit ≥ 0, using fee amounts rounded to cents, as shown in `fees[]`. Some calculators use unrounded rates.

## Data fields

- `type` (string): calculation = one sale scenario on one platform (mode calculate); fee = one line of a fee schedule (mode export).
- `status` (string): complete; partial = a fee rule could not be applied (see warnings); not_supported = unknown platform, country or currency (one row per platform or per scenario); invalid = the scenario failed validation (one row per scenario). Only complete and partial rows are charged; at most 10 free rows per run are written, the rest are listed in RUN_SUMMARY.skipped.
- `message` (string): Plain-English reason for partial, not_supported and invalid rows; null when complete.
- `scenarioIndex` (integer): Position of the scenario in your input list, starting at 0; null on a not_supported row for a whole platform.
- `scenarioId` (string): Your optional scenario id/label.
- `platform` (string): Platform id, e.g. etsy, ebay, amazon, poshmark; null on an invalid row for a whole scenario.
- `platformName` (string): Platform display name from the fee data.
- `platformKind` (string): marketplace or payments.
- `country` (string): Fee schedule country (ISO 2-letter).
- `currency` (string): Fee schedule currency; all money fields are in it.
- `salePrice` (number): Item price paid by the buyer, from your input.
- `shippingCharged` (number): Shipping the buyer paid you, from your input.
- `orderTotal` (number): salePrice + shippingCharged; the base for percentage fees.
- `itemCost` (number): Your cost of goods, from your input; null if not given.
- `shippingCost` (number): Your shipping/label cost, from your input (default 0).
- `totalCosts` (number): itemCost + shippingCost; null when itemCost is missing.
- `totalSellerFees` (number): Sum of fees the seller pays for this order.
- `totalBuyerFees` (number): Fees the platform charges the buyer on top (e.g. Vinted buyer protection); not deducted from the seller.
- `buyerPays` (number): orderTotal + totalBuyerFees, before tax.
- `netPayout` (number): orderTotal - totalSellerFees: what the platform pays out.
- `profit` (number): netPayout - totalCosts; null when itemCost is missing.
- `marginPercent` (number): profit / orderTotal x 100; null when itemCost is missing or orderTotal is 0.
- `effectiveFeeRatePercent` (number): totalSellerFees / orderTotal x 100; null when orderTotal is 0.
- `breakEvenSalePrice` (number): Lowest salePrice (same shipping and costs) with profit >= 0; null without itemCost or if none exists.
- `targetMarginPercent` (number): Target margin from input, if any.
- `targetSalePrice` (number): Lowest salePrice that reaches targetMarginPercent; null if not requested or not reachable.
- `fees` (array): Every fee line of the schedule with status applied, limit, not_applicable, not_included or excluded, the rate or fixed amount, the base and the charged amount.
- `notIncluded` (array): Costs this calculation does not cover (storage, taxes, refunds, ads...) with reasons. Never read them as zero.
- `assumptions` (array): Assumptions used for this row, in plain English.
- `warnings` (array): Rules that could not be applied or targets that cannot be reached.
- `scheduleLastReviewed` (string): Date SellersCalc last reviewed this platform's rates (not the date the rates took effect).
- `officialSource` (string): Official fee page of the platform, when the fee data lists one.
- `officialSourceNote` (string): Note about the official source.
- `calculatorUrl` (string): SellersCalc calculator page for this platform/fee.
- `source` (object): Provider, data URL, fetchedAt, license (CC BY 4.0) and attribution text.
- `feeKey` (string): Fee line key in the source data (export mode).
- `feeName` (string): Fee line name (export mode).
- `role` (string): charge, threshold, minimum or cap (export mode).
- `payer` (string): seller or buyer (export mode).
- `basis` (string): Basis such as per unit or per cubic foot per month; null = per order (export mode).

## Input settings

- `mode` (string): calculate = fees, payout, profit and break-even price for your sale scenarios. export = the fee table lines of the chosen platforms (all platforms if none chosen).
- `platforms` (array): One or more platform ids: etsy, ebay, amazon, walmart, tiktok-shop, facebook-marketplace, mercari, poshmark, depop, vinted, grailed, goat, stockx, whatnot, reverb, offerup, gumroad, paypal, stripe, square, shopify. Each scenario is calculated on every listed platform (one row each), so you can compare platforms in one run. Up to 25.
- `country` (string): 2-letter country of the fee schedule. The open fee data currently covers the US only (USD); other countries return a not_supported row instead of guessed fees.
- `scenarios` (array): Up to 100 sales, each an object: salePrice (required, item price paid by the buyer), shippingCharged (shipping the buyer paid you, default 0), itemCost (your cost of goods; needed for profit, margin and break-even), shippingCost (your label cost, default 0), currency (optional; must match the schedule, e.g. USD), id (optional label). Amounts are before sales tax.
- `targetMarginPercent` (integer): Optional. Also return the lowest sale price that reaches this profit margin (profit / order total), 0–95.
- `excludeFeeKeys` (array): Optional fee keys to leave out, e.g. etsy.listingFee or ebay.fixedFee (see the export mode for keys). Excluded lines are shown with status excluded.

## Step by step on Apify

1. Open the Input tab.
2. Keep the prefilled example: platform `etsy` and three sales in `scenarios`.
3. Click Start.
4. Open the Calculations view of the Dataset and check `totalSellerFees`, `netPayout` and `profit`.

## Use cases

| Task | Input | You get | Key fields | Next step |
|---|---|---|---|---|
| Price one product for a margin | `scenarios`, `targetMarginPercent` | calculation row | `profit`, `marginPercent`, `breakEvenSalePrice`, `targetSalePrice` | spreadsheet, repricer |
| Compare platforms for the same sale | `platforms` (several), `scenarios` | one row per platform | `platform`, `totalSellerFees`, `netPayout`, `effectiveFeeRatePercent` | BI table, dashboard |
| Check a whole catalog | `scenarios` (up to 100) | one row per product and platform | `scenarioId`, `fees[]`, `profit` | Google Sheets, CSV |
| Keep a fee table | `mode` = `export` | fee row | `feeKey`, `value`, `unit`, `minimumAmount`, `capAmount` | your own calculator |
| Answer a fee question in an AI agent | prefill input via MCP | calculation row | `fees[]`, `netPayout`, `notIncluded` | AI chat, agent |

## Tips

- Add your item cost. Then you also get profit and margin.
- Set a target margin to get the lowest price that reaches it.
- For Amazon orders you ship yourself, exclude the FBA fee.

## Limits



- `not_supported` and `invalid` rows are free.
- A run with no useful rows (`NO_RESULTS`) costs only the start event.
- A run that stops on an input error or a source error costs only the start event and saves no rows.
- Up to 100 sales and 25 platform names per run. 21 platforms are supported, so at most 2,100 charged rows plus up to 10 free rows. A full run took a few seconds in our tests.
- One request to the fee data per run.
- If Apify moves a run to another server, the run continues where it stopped: rows are not written or charged twice.
- Default timeout 300 seconds, memory 256 MB.

## Sample result

```json
{
  "type": "calculation",
  "status": "complete",
  "scenarioIndex": 0,
  "scenarioId": "mug",
  "platform": "etsy",
  "platformName": "Etsy",
  "country": "US",
  "currency": "USD",
  "salePrice": 25,
  "shippingCharged": 5,
  "orderTotal": 30,
  "itemCost": 8,
  "shippingCost": 4.5,
  "totalCosts": 12.5,
  "totalSellerFees": 3.3,
  "netPayout": 26.7,
  "profit": 14.2,
  "marginPercent": 47.33,
  "effectiveFeeRatePercent": 11,
  "breakEvenSalePrice": 9.31,
  "targetSalePrice": null,
  "fees": [
    { "key": "transactionPct", "name": "Transaction fee", "ratePercent": 6.5, "amount": 1.95, "status": "applied" },
    { "key": "paymentPct", "name": "Payment processing", "ratePercent": 3, "amount": 0.9, "status": "applied" },
    { "key": "paymentFixed", "name": "Payment fixed fee", "fixedAmount": 0.25, "amount": 0.25, "status": "applied" },
    { "key": "listingFee", "name": "Listing fee", "fixedAmount": 0.2, "amount": 0.2, "status": "applied" }
  ],
  "notIncluded": [{ "item": "sales_tax", "reason": "Sales tax and fees charged on tax are not in the fee data; amounts exclude tax." }],
  "scheduleLastReviewed": "2026-08-15",
  "officialSource": "https://www.etsy.com/legal/fees",
  "source": { "provider": "SellersCalc", "license": "CC BY 4.0", "attribution": "Fee data by SellersCalc (https://www.sellerscalc.com)" }
}
```

## Use cases with this tool

- [Track prices in shops and marketplaces](https://cliqtomedia.com/actors/use-cases/price-monitoring/): Track prices and offers in shops and marketplaces. See changes before your customers do.

## Similar tools

- [AliExpress Scraper: Products, Prices & Reviews, No Login](https://cliqtomedia.com/actors/aliexpress-scraper/)
- [Coles, Woolworths & Aldi Price Scraper - No Login](https://cliqtomedia.com/actors/au-supermarket-prices/)
- [Idealo Price Scraper: All Shop Offers, 6 Countries, No Login](https://cliqtomedia.com/actors/idealo-price-scraper/)
- [Naver Shopping Scraper: Korea Products & Prices](https://cliqtomedia.com/actors/naver-shopping-scraper/)
- [Trendyol Scraper: Products, Prices & Reviews (No login)](https://cliqtomedia.com/actors/trendyol-scraper/)
- [eBay Sold Listings Scraper - Sold Prices & Dates](https://cliqtomedia.com/actors/ebay-sold-listings/)
