ProjectCalcAdvertise

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

Slab length, ft
Slab width, ft
Thickness, inches (patio 4, driveway 5–6)
Extra for waste/overage, %
Pre-mix concrete bag size, lb (40/50/60/80/90)
Ready-mix price per cubic yard (optional, USD)
Request
GET https://projectcalc.io/api/v1/calculate/concrete-slab?length_ft=10&width_ft=10&thickness_in=4
Response
Edit the parameters and press “Send request” to call the live API.

Quick start

  1. Pick an endpoint below. Every endpoint lives under https://projectcalc.io/api/v1/.
  2. Send a GET with query parameters, or a POST with a JSON body (Content-Type: application/json) — same parameters, same response.
  3. Read the result from data. Show meta.attribution with a link to meta.source where people see the numbers.

Endpoints

EndpointWhat it returns
/api/v1/calculate/concrete-slabConcrete slab calculator (yards & bags)
/api/v1/calculate/gravelGravel calculator (cubic yards & tons)
/api/v1/calculatorsList every calculator id with its page
/api/v1/convertConvert 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

NameTypeDefaultDescription
length_ft requirednumber (0–1000000)—Slab length, ft
width_ft requirednumber (0–1000000)—Slab width, ft
thickness_innumber (0–1000000)4Thickness, inches (patio 4, driveway 5–6)
waste_pctnumber (0–100)10Extra for waste/overage, %
bag_lb40 | 50 | 60 | 80 | 9080Pre-mix concrete bag size, lb (40/50/60/80/90)
price_per_yd3number (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

NameTypeDefaultDescription
shaperect | circlerect
length_ftnumber (0–1000000)0Length, ft (rect)
width_ftnumber (0–1000000)0Width, ft (rect)
diameter_ftnumber (0–1000000)0Diameter, ft (circle)
depth_in requirednumber (0–1000000)—Depth, inches
waste_pctnumber (0–100)5Extra for waste/overage, %
pricenumber (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

NameTypeDefaultDescription
categoryconcrete | 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

NameTypeDefaultDescription
value requirednumber—Value to convert
from requiredstring—Unit id to convert from
to requiredstring—Unit id to convert to
quantitylength | 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

Fencing

Landscape & aggregates

Conversions

Roofing

Decking & lumber

Interior

Masonry

Systems

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

400Invalid or missing parameters. details lists each problem as { param, message }.
404Unknown endpoint on this domain (each site serves only its own calculators).
429Rate 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.