Free ProjectCalc API
Updated Formulas shown
Add material estimates to your app, quoting tool or spreadsheet with a single HTTP call. The ProjectCalc API runs all 54 of our calculators — concrete slabs, footings and bags, gravel and mulch by the yard and ton, roofing squares, fence and deck materials, paint, drywall, tile, pavers, insulation and more — and converts between any units. JSON out, no API key, open CORS.
Try it
GET https://projectcalc.io/api/v1/calculate/concrete-slab?length_ft=10&width_ft=10&thickness_in=4Edit the parameters and press “Send request” to call the live API.
Quick start
- Pick an endpoint below. Every endpoint lives under
https://projectcalc.io/api/v1/. - Send a
GETwith query parameters, or aPOSTwith a JSON body (Content-Type: application/json) — same parameters, same response. - Read the result from
data. Showmeta.attributionwith a link tometa.sourcewhere people see the numbers.
Endpoints
| Endpoint | What it returns |
|---|---|
/api/v1/calculate/concrete-slab | Concrete slab calculator (yards & bags) |
/api/v1/calculate/gravel | Gravel calculator (cubic yards & tons) |
/api/v1/calculators | List every calculator id with its page |
/api/v1/convert | Convert between units (length, area, volume, weight, temperature, speed, pressure, energy, power, fuel economy, data) |
/api/v1/calculate/{calculator} | 54 calculators share one URL pattern. |
GET /api/v1/calculate/concrete-slab
Concrete slab calculator (yards & bags). Imperial inputs (units are in the parameter names: _ft, _in, _pct); results include metric where relevant. See the calculator →
Parameters
| Name | Type | Default | Description |
|---|---|---|---|
length_ft required | number (0–1000000) | — | Slab length, ft |
width_ft required | number (0–1000000) | — | Slab width, ft |
thickness_in | number (0–1000000) | 4 | Thickness, inches (patio 4, driveway 5–6) |
waste_pct | number (0–100) | 10 | Extra for waste/overage, % |
bag_lb | 40 | 50 | 60 | 80 | 90 | 80 | Pre-mix concrete bag size, lb (40/50/60/80/90) |
price_per_yd3 | number (0–1000000) | — | Ready-mix price per cubic yard (optional, USD) |
Example request
curl "https://projectcalc.io/api/v1/calculate/concrete-slab?length_ft=10&width_ft=10&thickness_in=4"
Example response
Computed by the same engine as the API when this page was built.
{
"data": {
"calculator": "concrete-slab",
"inputs": {
"length_ft": 10,
"width_ft": 10,
"thickness_in": 4,
"waste_pct": 10,
"bag_lb": 80
},
"result": {
"volume": {
"cubic_yards": 1.358,
"cubic_feet": 36.67,
"cubic_meters": 1.038
},
"bags": {
"80lb": 62,
"60lb": 82,
"40lb": 123
},
"weight_lb": 5500,
"note": "Over ~1 yd³, ready-mix delivery is usually cheaper than bags."
}
},
"meta": {
"version": "1",
"docs": "https://projectcalc.io/api",
"source": "https://projectcalc.io/concrete-calculator",
"attribution": "Powered by ProjectCalc — https://projectcalc.io/concrete-calculator"
}
}GET /api/v1/calculate/gravel
Gravel calculator (cubic yards & tons). Imperial inputs (units are in the parameter names: _ft, _in, _pct); results include metric where relevant. See the calculator →
Parameters
| Name | Type | Default | Description |
|---|---|---|---|
shape | rect | circle | rect | |
length_ft | number (0–1000000) | 0 | Length, ft (rect) |
width_ft | number (0–1000000) | 0 | Width, ft (rect) |
diameter_ft | number (0–1000000) | 0 | Diameter, ft (circle) |
depth_in required | number (0–1000000) | — | Depth, inches |
waste_pct | number (0–100) | 5 | Extra for waste/overage, % |
price | number (0–1000000) | — | Price per ton (optional, USD) |
Example request
curl "https://projectcalc.io/api/v1/calculate/gravel?shape=rect&length_ft=20&width_ft=10&depth_in=3"
Example response
Computed by the same engine as the API when this page was built.
{
"data": {
"calculator": "gravel",
"inputs": {
"shape": "rect",
"length_ft": 20,
"width_ft": 10,
"diameter_ft": 0,
"depth_in": 3,
"waste_pct": 5
},
"result": {
"material": "Gravel (mixed)",
"density_lb_per_yd3": 2800,
"area_ft2": 200,
"volume": {
"cubic_yards": 1.944,
"cubic_feet": 52.5,
"cubic_meters": 1.487
},
"weight": {
"tons": 2.72,
"lb": 5444,
"tonnes": 2.47
}
}
},
"meta": {
"version": "1",
"docs": "https://projectcalc.io/api",
"source": "https://projectcalc.io/gravel-calculator",
"attribution": "Powered by ProjectCalc — https://projectcalc.io/gravel-calculator"
}
}GET /api/v1/calculators
All calculator ids accepted by /api/v1/calculate/{calculator}, with category and the matching projectcalc.io page. Parameters for each are in /api/v1/openapi.json. See the calculator →
Parameters
| Name | Type | Default | Description |
|---|---|---|---|
category | concrete | landscape | roofing | fencing | decking | interior | masonry | systems | conversions | — | Filter by category |
Example request
curl "https://projectcalc.io/api/v1/calculators"
Example response
Computed by the same engine as the API when this page was built.
{
"data": [
{
"id": "concrete-slab",
"name": "Concrete slab calculator (yards & bags)",
"category": "concrete",
"endpoint": "/api/v1/calculate/concrete-slab",
"page": "https://projectcalc.io/concrete-calculator"
},
{
"id": "concrete-column",
"name": "Concrete column / Sonotube calculator",
"category": "concrete",
"endpoint": "/api/v1/calculate/concrete-column",
"page": "https://projectcalc.io/concrete-column-calculator"
},
{
"id": "concrete-footing",
"name": "Concrete footing calculator",
"category": "concrete",
"endpoint": "/api/v1/calculate/concrete-footing",
"page": "https://projectcalc.io/concrete-footing-calculator"
},
"… 51 more"
],
"meta": {
"version": "1",
"docs": "https://projectcalc.io/api",
"source": "https://projectcalc.io/calculators",
"attribution": "Powered by ProjectCalc — https://projectcalc.io/calculators"
}
}GET /api/v1/convert
Exact NIST SP 811 conversion factors. Units are ids such as ft, m, in, cm, yd3, m3, gal, l, lb, kg, c, f, mph, kmh, psi, bar, btu, kwh, mpg, l100, mb, gb. `quantity` is optional when the unit pair is unambiguous. See the calculator →
Parameters
| Name | Type | Default | Description |
|---|---|---|---|
value required | number | — | Value to convert |
from required | string | — | Unit id to convert from |
to required | string | — | Unit id to convert to |
quantity | length | area | volume | mass | temperature | speed | pressure | energy | power | fuel | data | — | Quantity (inferred from the units when omitted) |
Example request
curl "https://projectcalc.io/api/v1/convert?value=10&from=ft&to=m"
Example response
Computed by the same engine as the API when this page was built.
{
"data": {
"quantity": "length",
"value": 10,
"from": {
"id": "ft",
"name": "foot",
"symbol": "ft"
},
"to": {
"id": "m",
"name": "meter",
"symbol": "m"
},
"result": 3.048,
"formula": "meters = feet × 0.3048",
"factor": 0.3048,
"exact": true
},
"meta": {
"version": "1",
"docs": "https://projectcalc.io/api",
"source": "https://projectcalc.io/unit-converters",
"attribution": "Powered by ProjectCalc — https://projectcalc.io/unit-converters"
}
}All calculators
54 calculators share one URL pattern. Every one accepts GET query parameters or a POST JSON body; omitted optional fields use the defaults shown.
Concrete
/api/v1/calculate/concrete-slab— Concrete slab calculator (yards & bags)length_ft*,width_ft*,thickness_in=4,waste_pct=10,bag_lb=80,price_per_yd3?/api/v1/calculate/concrete-column— Concrete column / Sonotube calculatordiameter_in*,height_ft*,count=1,waste_pct=5,bag_lb=80/api/v1/calculate/concrete-footing— Concrete footing calculatorlength_ft*,width_in*,depth_in*,waste_pct=10,bag_lb=80/api/v1/calculate/concrete-steps— Concrete steps calculatorsteps*,rise_in=7,run_in=11,width_ft*,platform_in=0,waste_pct=10,bag_lb=80
Fencing
/api/v1/calculate/post-concrete— Fence post concrete calculator (bags per post)posts*,hole_diameter_in=10,hole_depth_in=30,post=4x4,bag_lb=80/api/v1/calculate/fence— Fence calculator (posts, pickets, rails, concrete)length_ft*,height_ft=6,post_spacing_ft=8,gates=0,picket_width_in=5.5,gap_in=0.25,rails_per_section=3
Landscape & aggregates
/api/v1/calculate/gravel— Gravel calculator (cubic yards & tons)shape=rect,length_ft=0,width_ft=0,diameter_ft=0,depth_in*,waste_pct=5,price?/api/v1/calculate/pea-gravel— Pea gravel calculator (cubic yards & tons)shape=rect,length_ft=0,width_ft=0,diameter_ft=0,depth_in*,waste_pct=5,price?/api/v1/calculate/crushed-stone— Crushed stone calculator (cubic yards & tons)shape=rect,length_ft=0,width_ft=0,diameter_ft=0,depth_in*,waste_pct=10,price?/api/v1/calculate/river-rock— River rock / landscape rock calculator (cubic yards & tons)shape=rect,length_ft=0,width_ft=0,diameter_ft=0,depth_in*,waste_pct=5,price?/api/v1/calculate/driveway— Gravel driveway (road base) calculator (cubic yards & tons)shape=rect,length_ft=0,width_ft=0,diameter_ft=0,depth_in*,waste_pct=10,price?/api/v1/calculate/sand— Sand calculator (cubic yards & tons)shape=rect,length_ft=0,width_ft=0,diameter_ft=0,depth_in*,waste_pct=10,price?/api/v1/calculate/topsoil— Topsoil calculator (cubic yards & tons)shape=rect,length_ft=0,width_ft=0,diameter_ft=0,depth_in*,waste_pct=10,price?/api/v1/calculate/mulch— Mulch calculator (cubic yards & tons)shape=rect,length_ft=0,width_ft=0,diameter_ft=0,depth_in*,waste_pct=0,price?/api/v1/calculate/asphalt— Asphalt calculator (cubic yards & tons)shape=rect,length_ft=0,width_ft=0,diameter_ft=0,depth_in*,waste_pct=5,price?/api/v1/calculate/fill-dirt— Fill dirt calculator (cubic yards & tons)shape=rect,length_ft=0,width_ft=0,diameter_ft=0,depth_in*,waste_pct=20,price?/api/v1/calculate/sod— Sod calculator (rolls & pallets)length_ft*,width_ft*,waste_pct=5,roll_ft2=10,pallet_ft2=450,price_per_pallet?/api/v1/calculate/grass-seed— Grass seed calculatorlength_ft*,width_ft*,rate_lb_per_1000ft2=7,bag_lb=20/api/v1/calculate/firewood— Firewood cord calculatorstack_length_ft*,stack_height_ft*,log_length_in=16,price_per_cord?/api/v1/calculate/fertilizer— Lawn fertilizer calculatorarea_ft2*,nitrogen_pct*,target_lb_n_per_1000ft2=1,bag_lb=15
Conversions
/api/v1/calculate/cubic-yards— Cubic yards / cubic feet calculatorlength*,width*,height*,unit=ft,quantity=1/api/v1/calculate/yards-to-tons— Cubic yards ↔ tons converterdirection=yards_to_tons,amount*,material=gravel/api/v1/calculate/area-convert— Area converter (ft², yd², m², acres, hectares)amount*,from*,to*/api/v1/calculate/square-footage— Square footage calculator (multi-room, L-shapes, circles)unit=ft,shape=rectangle,a=0,b=0,c=0,d=0,qty=1,pieces?,waste_pct=0,price_per_ft2?
Roofing
/api/v1/calculate/roofing— Roofing / shingle calculator (squares & bundles)length_ft*,width_ft*,pitch=6,waste_pct=10,price_per_square?/api/v1/calculate/metal-roofing— Metal roofing panel calculatoreave_length_ft*,panel_run_ft*,planes=2,coverage_in=36,waste_pct=5/api/v1/calculate/rafter— Rafter length calculatorspan_ft*,pitch=6,overhang_in=12,ridge_in=1.5/api/v1/calculate/roof-pitch— Roof pitch calculator (angle, slope, rafter, roof area)pitch?,rise_in?,run_in=12,angle_deg?,span_ft?,overhang_in=0,ridge_in=1.5,footprint_ft2?
Decking & lumber
/api/v1/calculate/deck— Deck board calculatorlength_ft*,width_ft*,board_width_in=5.5,gap_in=0.1875,board_length_ft=16,waste_pct=10,price_per_board?/api/v1/calculate/studs— Wall stud calculatorwall_length_ft*,spacing_in=16,corners=0,openings=0/api/v1/calculate/plywood— Plywood / OSB sheet calculatorlength_ft*,width_ft*,sheet=4x8,waste_pct=10/api/v1/calculate/board-foot— Board foot calculator (lumber list)thickness_in=0,width_in=0,length_ft=0,pieces=1,boards?,sizing=nominal,waste_pct=0,price_per_bf?/api/v1/calculate/stairs— Stair calculator (risers, treads, stringer, IRC checks)total_rise_in*,tread_in=10,max_riser_in=7.75,risers?,width_in=36,stringer_depth_in=11.25
Interior
/api/v1/calculate/tile— Tile calculatorlength_ft*,width_ft*,tile_width_in*,tile_length_in*,grout_in=0.125,waste_pct=10,tiles_per_box=0/api/v1/calculate/flooring— Flooring calculator (laminate, LVP, hardwood boxes)length_ft*,width_ft*,waste_pct=10,box_coverage_ft2=20,price_per_ft2?/api/v1/calculate/carpet— Carpet calculator (square yards)length_ft*,width_ft*,waste_pct=10,price_per_yd2?/api/v1/calculate/paint— Paint calculator (gallons for a room)length_ft*,width_ft*,height_ft=8,doors=1,windows=2,coats=2,include_ceiling=false,coverage_ft2_per_gal=350/api/v1/calculate/drywall— Drywall calculator (sheets, screws, mud, tape)length_ft*,width_ft*,height_ft=8,include_ceiling=true,openings_ft2=0,sheet=4x8,waste_pct=10/api/v1/calculate/insulation— Insulation calculator (batts/rolls)length_ft*,width_ft*,coverage_per_bag_ft2=40,waste_pct=5/api/v1/calculate/epoxy— Epoxy resin calculatorshape=rect,length_in*,width_in=0,thickness_in=0.125,waste_pct=10/api/v1/calculate/caulk— Caulk calculator (tubes)joint_length_ft*,joint_width_in=0.25,joint_depth_in=0.25/api/v1/calculate/ceiling-fan— Ceiling fan size calculatorlength_ft*,width_ft*,ceiling_ft=8
Masonry
/api/v1/calculate/pavers— Paver / retaining wall block calculatorlength_ft*,width_ft*,unit_width_in=6,unit_length_in=9,joint_in=0.125,waste_pct=10/api/v1/calculate/brick— Brick calculatorwall_length_ft*,wall_height_ft*,openings_ft2=0,brick=modular,waste_pct=5/api/v1/calculate/concrete-block— Concrete block (CMU) calculatorwall_length_ft*,wall_height_ft*,openings_ft2=0,block=16x8,waste_pct=5,price_per_block?/api/v1/calculate/mortar— Mortar calculator (80 lb bags)kind=brick,units*,waste_pct=10/api/v1/calculate/rebar— Rebar grid calculatorlength_ft*,width_ft*,spacing_in=16,edge_in=3,bar_length_ft=20
Systems
/api/v1/calculate/pool— Pool volume calculator (gallons)shape=rectangle,length_ft*,width_ft=0,width2_ft=0,shallow_ft*,deep_ft*/api/v1/calculate/aquarium— Aquarium volume calculatorlength_in*,width_in*,height_in*/api/v1/calculate/electricity— Electricity cost calculatorwatts*,hours_per_day*,cents_per_kwh=18,quantity=1/api/v1/calculate/pipe— Pipe volume calculatorinside_diameter_in*,length_ft*/api/v1/calculate/btu— BTU calculator (AC and heating size for a room)area_ft2?,length_ft=0,width_ft=0,ceiling_ft=8,sun=normal,insulation=average,occupants=2,kitchen=false,climate=mixed/api/v1/calculate/wire-size— Wire size calculator (NEC ampacity + voltage drop)amps*,volts=240,length_ft*,metal=copper,phase=single,temp_rating=75,max_drop_pct=3,continuous=false/api/v1/calculate/voltage-drop— Voltage drop calculatorawg*,amps*,volts=120,length_ft*,metal=copper,phase=single,parallel_sets=1,max_drop_pct=3
Response format
Successful calls return HTTP 200 with the result in data and links in meta:
{
"data": {
"…": "…"
},
"meta": {
"version": "1",
"docs": "https://projectcalc.io/api",
"source": "https://projectcalc.io/concrete-calculator",
"attribution": "Powered by ProjectCalc — https://projectcalc.io/concrete-calculator"
}
}Errors
400 | Invalid or missing parameters. details lists each problem as { param, message }. |
404 | Unknown endpoint on this domain (each site serves only its own calculators). |
429 | Rate limit exceeded. Wait for the number of seconds in the Retry-After header. |
{
"error": "Invalid parameters.",
"details": [
{
"param": "length_ft",
"message": "Invalid input: expected number, received string"
}
],
"docs": "https://projectcalc.io/api"
}Rate limits and caching
- 120 requests per minute per IP address. Over the limit you get 429 with Retry-After.
- No API key, no sign-up. CORS is open (Access-Control-Allow-Origin: *), so you can call it from the browser.
- Deterministic GET responses are cached at the edge for 24 hours (Cache-Control: public, s-maxage=86400); cache them on your side too.
- Random generators and POST responses are never cached.
- Need more? Email us — we're happy to raise limits for reasonable use.
Attribution
The API is free. In return we ask (but don't enforce) a visible credit with a followed link to the page in meta.source wherever you show results:
<a href="https://projectcalc.io/concrete-calculator">Powered by ProjectCalc</a>
OpenAPI spec
A machine-readable OpenAPI 3.1 description of every endpoint is at https://projectcalc.io/api/v1/openapi.json — import it into Postman, Insomnia, or a client generator.
Terms
Use of the API is covered by our Terms of Use. Results are estimates for information only — not tax, legal or financial advice — and ProjectCalc is provided as is, without warranty. Don't resell raw access, hammer the endpoints, or present the numbers as your own engine's. We may change or rate-limit the API; breaking changes get a new version (/api/v2).
Related
Frequently asked questions
Is the ProjectCalc API free?
Yes — no key and no sign-up. Calls are limited to 120 per minute per IP address, and we ask for a visible “Powered by ProjectCalc” link wherever you show the results.
Which units does the API use?
Inputs are imperial, with the unit in each parameter name: _ft for feet, _in for inches, _pct for percent. Results include cubic yards, cubic feet and cubic meters, plus tons, pounds and metric tonnes where weight matters. Use /api/v1/convert for anything else.
Are the results the same as on the website?
Yes. The API calls the same formulas as each calculator page, including the default waste allowances and bag yields. Results are estimates; check quantities with your supplier before ordering.
How do I find a calculator's parameters?
Every calculator is listed below with its parameters and defaults, /api/v1/calculators returns the ids, and /api/v1/openapi.json has the full schema for each one.
Your business here? Sponsor this calculator from $13/week. See placements
Estimates only. Check quantities with your supplier or contractor before ordering.