If you sell 3D printed items on Etsy (or anywhere else), you've probably done the maths in your head or in a scrappy spreadsheet. Filament cost, electricity, time, markup - it adds up, and getting it wrong means you're working for free.
I built PolyQuote to solve this - a REST API that calculates an accurate recommended sale price from your print parameters. And recently I added a CSV endpoint so you can pull live pricing directly into Google Sheets with a single formula. No scripts, no code, no setup.
Here's how to do it.
The formula
Paste this into any cell in Google Sheets:
=IMPORTDATA("https://3d-print-quote-api.polyform-api.workers.dev/demo/quote/csv?filament_type=PETG&weight_grams=85&print_hours=3.5&markup_percent=120")
Click "Allow access" if Sheets prompts you, and you'll get this:
Row 1 is headers. Row 2 is your live pricing data - material cost, electricity cost, total base cost, and recommended sale price, all calculated from the parameters you passed in.
What the parameters mean
| Parameter | What it is |
|---|---|
filament_type |
PLA, PETG, ABS, TPU, PLA+, PLA-SILK, PLA-MATTE, PETG-MATTE |
weight_grams |
How much filament your slicer says the print uses |
print_hours |
Total print time in hours |
markup_percent |
Your profit margin - 100 means double your cost |
So the formula above is asking: what should I charge for a PETG print that uses 85g of filament and takes 3.5 hours, with a 120% markup?
The answer comes back as £3.06.
Making it dynamic
The real power is linking the parameters to cells instead of hardcoding them. Set up a simple input table:
| A | B |
|---|---|
| Filament type | PETG |
| Weight (g) | 85 |
| Print hours | 3.5 |
| Markup % | 120 |
Then build the formula dynamically:
=IMPORTDATA(
"https://3d-print-quote-api.polyform-api.workers.dev/demo/quote/csv"
&"?filament_type=" & B1
&"&weight_grams=" & B2
&"&print_hours=" & B3
&"&markup_percent=" & B4
)
Change any input cell and the pricing updates automatically. Price a whole catalogue of prints by copying the formula down with different parameters per row.
What the API calculates
The response breaks down:
- material_cost_gbp - filament weight × cost per kg (system defaults or your own)
- electricity_cost_gbp - print time × printer wattage × your electricity rate
- total_base_cost_gbp - everything combined before markup
- recommended_price_gbp - base cost with your markup applied
The full API (with an API key) also supports failure rate buffer, packaging cost, printer depreciation, and platform fee breakdowns for Etsy, eBay, and Shopify. The demo endpoint keeps it simple - the four core parameters that cover most use cases.
Limits on the demo endpoint
The demo endpoint allows 5 requests per hour per IP - enough for testing and light use. For production use (pricing a full catalogue, running a batch script, or building a tool for other sellers), sign up for a free API key at api.polyformprints.co.uk. The free tier gives you 200 calls/month, no credit card required.
Why I built this
I run a small 3D printing business on Etsy - Polyform Prints - and kept pricing by gut feel. At the end of the month I'd realise I'd undercharged on half my listings.
PolyQuote started as a personal tool and I opened it up as a public API when I realised the problem wasn't unique to me. The Sheets integration came next because most small sellers live in spreadsheets, not terminal windows.
If you sell prints and want accurate pricing without building anything yourself, give it a try.
API landing page: api.polyformprints.co.uk
Docs: api.polyformprints.co.uk/docs.html
Postman collection: Run in Postman














