Acoustic IndexAcoustic Index
SucheAPI
Für ProfessionalsFür Hersteller

API docs

Getting started

OverviewAuthenticationAccess and keys

API reference

Interactive referenceSearch materialsMaterial detailBatch fetchPublic endpoints

Operations

Errors and rate limitsAPI terms

Read API

Search materials

Search acoustic materials and get a compact, paginated result list. Use it for search UIs, material pickers, browse views, and sync jobs.

When to use it

Search, filter and compare in one call

Narrow the set with filters, get filter counts with facets, and embed single-number ratings plus an octave snapshot per hit with include=acoustics, so you can compare absorption without a follow-up detail call.

Great for

Material pickers, faceted search and browse views, and live comparison by absorption, alpha_w, NRC or SAA.

Need the full record?

Call `GET /materials/{id}` for one product, or batch several with `GET /materials?ids=`, to get images, specs, and the full third-octave measurements.

Endpoint reference

GET /api/v1/materials/search

Pass a query, optional filters, and the include/facets flags. Get back a ranked list, with acoustic ratings inline and facet counts when requested.

GET200 OK

Search published materials

Search for acoustic materials and get a compact result list. Perfect for pickers, autocomplete, browse pages, or any flow where you need to let users find a product.

/api/v1/materials/search
`q` is optional. Leave it out to browse the most recently updated materials.
`page` is zero-based. `limit` defaults to `20` and is capped at `50`, no matter what you pass.
Use `has_more` to decide whether to ask for the next page, instead of guessing from `items.length`.

Request contract

Authorization

Bearer <api_key>

Your API key, sent in the `Authorization` header on every request.

q

string | optional

Free-text search across product name, manufacturer, and description.

page

number | optional

Zero-based page number. Defaults to `0`.

limit

number | optional

How many items you want per page. Defaults to `20`, maximum `50`.

category, character, installation

string | optional

Filter by material category, absorption character, or installation type. Multi-value via comma-separated or repeated params. Unknown values return `400`.

manufacturer

string | optional

Filter by manufacturer slug (multi-value). Discover slugs from the `facets.manufacturers` buckets.

alpha_w_min, alpha_w_max

number | optional

Restrict the weighted absorption coefficient (`α_w`) to a range between 0 and 1.

fire_class

string | optional

Minimum fire class per DIN EN 13501-1 (`A1`-`F`). Returns products rated that class or safer.

has_epd, purchasable_only

boolean | optional

Restrict to products with an EPD, or to commercial products only (excludes PTB reference data).

sort

string | optional

Ordering: `relevance`, `alphaW_desc`, `alphaW_asc`, `date_desc`, or `name_asc`.

include

string | optional

Comma-separated expansions. `acoustics` embeds `nrc`, `saa`, and `absorption_octave` in each hit. `geometry` embeds an approximate 3D primitive (`shape`, bounding box in mm, size variants, and a mounting-aware exposed area for Sabine `S`). `geometry` is also supported on the detail and batch endpoints.

facets

boolean | optional

When `true`, the response carries a `facets` object with filter counts (categories, characters, installations, manufacturers, fire classes, EPD).

Response contract

items

array

The results for this page, in ranked order.

page

number

The page number you asked for, echoed back.

limit

number

The page size actually used. If you asked for more than `50`, this will show `50`.

total_count

number

Total number of matching materials across all pages. Handy for showing result counts in your UI.

has_more

boolean

`true` when there are more pages waiting. Use this to drive your pagination controls.

items[]

Each search result is a lightweight summary. Fetch the detail endpoint when you need images or full measurement data.

id

string

The product's canonical UUID. Pass this — or the `slug` field below — to `GET /materials/{id}` to load the full record.

slug

string

Human-readable, globally unique identifier (e.g. `fural-systeme-amp-p`). Stable for the lifetime of the product. Use this if you want a readable material name in Blender, Revit, etc.

label

string

A ready-to-display label for the product, already fallback-friendly.

commercial_name

string | null

The official marketing name of the product, if the manufacturer has one.

manufacturer

string

The manufacturer's name as a flat string, ready to render.

material_category

string | null

Broad category of the material. German id values, e.g. `textil`, `metall`, `holz`.

installation_types

string[]

Where the product can be installed, e.g. `wall` or `ceiling`.

alpha_w

number | null

Weighted absorption coefficient (`α_w`) per ISO 11654, if a value is available.

nrc

number | null

Noise Reduction Coefficient (ASTM C423). Only present when you pass `include=acoustics`. Null when the four octave bands are not all published.

saa

number | null

Sound Absorption Average (ASTM C423). Only present when you pass `include=acoustics`. Null when the twelve third-octave bands are not all published.

absorption_octave

Record<string, number> | null

Practical absorption (`α_p`) octave snapshot per ISO 11654, keyed by Hz. Only present when you pass `include=acoustics`.

updated_at

string (ISO 8601) | null

When the product data was last updated. Useful for incremental syncs.

Request example

# Add filters, include=acoustics for inline ratings, and facets for counts.
curl "https://acousticindex.com/api/v1/materials/search?q=wood&category=holz&alpha_w_min=0.6&sort=alphaW_desc&include=acoustics&facets=true" \
  -H "Authorization: Bearer YOUR_API_KEY"

Response example

{
  "items": [
    {
      "id": "11111111-2222-3333-4444-555555555555",
      "slug": "fural-systeme-amp-p",
      "label": "Acoustic panel",
      "commercial_name": "Panel 50",
      "manufacturer": "Acme Acoustic",
      "material_category": "textile",
      "installation_types": ["wall"],
      "alpha_w": 0.85,
      "updated_at": "2026-04-01T10:00:00.000Z"
    }
  ],
  "page": 0,
  "limit": 20,
  "total_count": 142,
  "has_more": true
}

Behavior

A few things to keep in mind

Small details about pagination and nullable fields that can save you from surprises later.

Pagination uses `total_count` and `has_more`

Each response gives you `items`, `page`, `limit`, `total_count`, and `has_more`. Check `has_more` before asking for the next page so you don't request empty results.

`page` is zero-based

The first page is `page=0`. Negative values are clamped to zero, and `limit` is capped at `50` even if you ask for more.

`manufacturer` is a flat string

You get the manufacturer's name as a plain string, not a nested object, so you can render it directly in your UI.

`alpha_w` can be `null`

When a product has no weighted absorption value yet, this field is `null`. Handle that case in your UI instead of assuming a number.

Filters and `facets` use a different ranking engine

A plain `q` search and a filtered search are served by different engines. Any filter, `sort`, or `facets=true` runs on the faceted engine, which ranks, recalls, and counts differently from plain text search. `include=acoustics` and `include=geometry` are the exception: they only add fields, so they never change which results you get or their order.

Acoustic IndexAcoustic Index

Die Datenbank für akustische Materialkennwerte. Professionelle Messdaten nach ISO-Normen.

Produkte

  • Absorber
  • Diffusoren
  • Alle Produkte

Unternehmen

  • Über uns
  • Kontakt
  • Für Hersteller

Werkzeuge

  • Schallabsorptionsgrad
  • Schallabsorber vergleichen
  • Nachhallzeit Rechner
  • Akustiklösungen
  • Read API

Rechtliches

  • Impressum
  • Datenschutz
  • AGB
  • Nutzungsbedingungen

© 2026 Acoustic Index. Alle Rechte vorbehalten.