The problem: specs are trapped in PDFs

If you're building a construction estimation tool, an energy modeling app, a BIM plugin, or any software that needs to reason about building product performance, you hit the same wall immediately: there is no unified, queryable source of building product specifications.

Want the SEER rating for a specific Carrier heat pump? It's in a 47-page product data sheet. Need to find all insulation products with R-value above 30? You're clicking through manufacturer websites one by one. Trying to compare window U-values across Andersen, Pella, and Milgard? That's three separate PDFs, three different table formats, and a lot of manual copying.

This is not a niche problem. It affects every developer working in the construction technology space:

No existing API solves this. RSMeans has no API. 1build covers pricing but not specs. Manufacturer APIs don't exist. The data exists — it's just not accessible programmatically.

Substrata is the first REST API built specifically to solve this.

What Substrata covers: 500+ products, 12 categories

Substrata has structured spec data for over 500 building products across 12 categories. Each product includes the performance attributes that developers actually need to filter and compare.

HVAC
seer_rating eer_rating btu_capacity energy_star cop
Insulation
r_value r_value_per_inch thermal_conductivity thickness_in fire_resistance
Windows
u_value shgc visible_transmittance air_leakage frame_material
Concrete
compressive_strength_psi slump_in water_cement_ratio air_content_pct mix_design
Roofing
fire_rating wind_resistance_mph impact_resistance r_value slope_min
Structural
yield_strength_psi tensile_strength_psi fire_resistance_rating load_capacity_lbs span_ft

Beyond performance specs, every product includes manufacturer, category, subcategory, price range (min/max USD), certifications (ENERGY STAR, LEED, GreenGuard), dimensions, and weight. The full field list is in the API documentation.

Code examples: 4 practical queries

Here's what's actually possible with the Substrata API today. All examples use curl — swap in your HTTP client of choice.

1. Filter HVAC products by SEER rating ≥ 16

Energy codes in many states now require SEER ≥ 16 for new residential installations. This query finds all qualifying products and sorts by efficiency.

curl
# Find all HVAC products with SEER ≥ 16, sorted by efficiency curl "https://substrata-34wm.polsia.app/v1/products?category=hvac&min_seer=16&sort=seer_rating&order=desc" \ -H "Authorization: Bearer sk_sub_your_key" # Response: { "data": [ { "id": 4821, "name": "Carrier Infinity 24 Heat Pump", "manufacturer": "Carrier", "category": "hvac", "subcategory": "heat_pumps", "seer_rating": 24, "eer_rating": 18, "btu_capacity": 36000, "energy_star": true, "price_min_usd": 1850, "price_max_usd": 2400 }, // ... more results ], "meta": { "total": 34, "page": 1, "limit": 20 } }

2. Find insulation with R-value > 30

High-performance wall assemblies and passive house designs typically require R-30+. This query surfaces all qualifying insulation products, filterable by type.

curl
# Find closed-cell spray foam insulation with R-value > 30 curl "https://substrata-34wm.polsia.app/v1/products?category=insulation&min_r_value=30&subcategory=spray_foam" \ -H "Authorization: Bearer sk_sub_your_key" # Or target a specific R-value range (R-30 to R-40 for 2x6 walls): curl "https://substrata-34wm.polsia.app/v1/products?category=insulation&min_r_value=30&max_r_value=40" \ -H "Authorization: Bearer sk_sub_your_key" # Response includes thermal conductivity for energy modeling: { "data": [ { "name": "Icynene Classic Ultra LD-C-50", "manufacturer": "Icynene", "category": "insulation", "subcategory": "spray_foam", "r_value": 38, "r_value_per_inch": 6.5, "thermal_conductivity": 0.022, "thickness_in": 6, "fire_resistance": "Class A", "price_min_usd": 1.20, "price_max_usd": 2.10 } ] }

3. Compare window U-values across manufacturers

Energy code compliance often requires window U-values below a threshold (IECC 2021 requires ≤ 0.30 in most Climate Zones). This query lets you compare across all manufacturers in one call.

curl
# Compare casement windows with U-value ≤ 0.30, sorted by performance curl "https://substrata-34wm.polsia.app/v1/products?category=windows&subcategory=casement&max_u_value=0.30&sort=u_value&order=asc&limit=10" \ -H "Authorization: Bearer sk_sub_your_key" # Group by manufacturer to compare brands: curl "https://substrata-34wm.polsia.app/v1/products?category=windows&max_u_value=0.30&manufacturer=Andersen,Pella,Milgard" \ -H "Authorization: Bearer sk_sub_your_key" # Response: { "data": [ { "name": "Andersen 100 Series Double-Hung", "manufacturer": "Andersen", "u_value": 0.27, "shgc": 0.26, "visible_transmittance": 0.51, "air_leakage": 0.01, "energy_star": true, "frame_material": "Fibrex", "price_min_usd": 420, "price_max_usd": 680 }, // Pella, Milgard results follow... ] }

4. Get all products with fire_resistance data

Fire-rated assemblies require products with documented fire resistance ratings. This query returns all products where that field is populated, across all categories.

curl
# All products with fire resistance data — any category curl "https://substrata-34wm.polsia.app/v1/products?has_field=fire_resistance" \ -H "Authorization: Bearer sk_sub_your_key" # Narrow to structural products with 2-hour fire rating: curl "https://substrata-34wm.polsia.app/v1/products?category=structural&fire_resistance=2hr" \ -H "Authorization: Bearer sk_sub_your_key" # Response includes rating in standardized format: { "data": [ { "name": "USG Structo-Crete Type C Drywall", "manufacturer": "USG", "category": "structural", "fire_resistance_rating": "2hr", "fire_resistance_standard": "ASTM E119", "thickness_in": 0.625, "price_min_usd": 18, "price_max_usd": 28 } ] }

Why alternatives don't solve this

Developers evaluating this space run into the same dead ends. Here's the honest picture:

Source Spec Data Queryable API Free Tier Coverage
Substrata ✓ Structured ✓ REST API 100/day, no CC 500+ products, 12 categories
RSMeans Limited ✗ No API ✗ None Cost data, not specs
1build ✗ None ✓ REST API ✗ Contact sales Pricing only
Manufacturer PDFs Buried in PDF ✗ None Free (manual) Per-product, inconsistent

RSMeans is the industry benchmark for cost data — labor rates, installation costs, regional adjustments — but it was never built to surface product performance attributes. Asking RSMeans for a SEER rating or R-value is asking the wrong question of the right institution. They don't have it in queryable form, and there's no API anyway.

1build solves the pricing problem well — real-time distributor prices for thousands of SKUs. But specs are entirely absent. If you need to know whether a product qualifies for an energy code requirement before you know what it costs, 1build can't help you there.

Manual PDF lookup is the current reality for most developers. It works at small scale and breaks completely when you need to compare 50 products, automate a BIM workflow, or power an AI recommendation engine. The data is technically "free" — the cost is engineering time, which isn't.

Get started: 100 free calls/day, no credit card

The free tier gives you 100 API calls per day forever — enough to build a prototype, validate your integration, and understand the data before committing. No credit card required at signup.

For production use: Starter is $49/mo for 5,000 calls/day. Pro is $199/mo for 50,000 calls/day. Both upgrade automatically from the free tier with no data migration.

The full API documentation has every available filter parameter by category, response schemas, and examples in Python, JavaScript, and Go. The price index shows live data across all 12 categories.

If you're building anything in construction tech — estimation software, energy modeling, BIM plugins, procurement tools, or AI-powered product selection — the spec data you need is here. It's the only place it's queryable.

If you're specifically building a cost estimator, see the tutorial: Build a Construction Cost Estimator with the Substrata API — a complete Node.js walkthrough that takes room dimensions and outputs cost ranges using price_min_usd / price_max_usd from the API.

Try Substrata free

100 API calls per day, no credit card. SEER ratings, R-values, U-values, fire ratings, compressive strength — all queryable via REST.

Get API Key → Read Docs