Read Inventory and Stock with the BSimple API
Use the BSimple API when an external portal, ordering site, dashboard or workflow needs current inventory information. The API separates product records from location, PAR, reorder and stocktake resources so an integration can request only what it needs.
Required scopes
inventory:readfor products and item quantities.suppliers:readfor supplier records.locations:readfor inventory locations.reorder:readfor PAR targets and reorder recommendations.stocktakes:readfor stocktake records, progress and variances.
Grant write access only when the integration genuinely needs to add inventory items. The current public API does not provide general stock adjustments or stocktake-count writes.
Find inventory items
Search products by code, name or description:
curl --fail --silent \
--header "X-API-Key: ${BSIMPLE_API_KEY}" \
"${BSIMPLE_API_BASE}/inventory/list?q=FILTER&page=1&per_page=20"
Use /inventory/get/<code-or-id> to retrieve one item. The item code is the preferred business identifier when your application already has it.
Read locations
Use /locations/list to discover active physical or virtual locations, then /locations/get/<id> for a location detail response. Keep the BSimple location identifier in your integration rather than relying only on a display name, because names can change.
Read PAR and reorder information
PAR data helps an external dashboard understand the target quantity and current shortfall for a product at a location:
/par/listreturns location/product PAR information./par/get/<location_id>/<product_id>returns the current quantity, target and non-negative shortfall./reorder/listreturns products below their target, with an optional supplier filter.
These endpoints are read-only through the current public API. The integration can recommend or display purchasing work, but it should not imply that it can submit a purchase order unless a future API release adds that capability.
Read stocktakes
The stocktake endpoints expose the operational state of a count without allowing the external application to alter the count:
/stocktakes/listfinds stocktakes by completion or location./stocktakes/activefinds the current unfinished stocktake./stocktakes/expected/<id>reads expected location-scoped rows./stocktakes/progress/<id>reads total, counted, remaining and variance counts./stocktakes/not-counted/<id>finds expected products still outstanding./stocktakes/variance/<id>finds completed rows that differ from the snapshot.
This is useful for a warehouse dashboard or management report that needs visibility without becoming the system that performs the count.
Pagination and freshness
All list responses use the standard data and meta envelope. Follow meta.total_pages and store the last successful page or checkpoint in your integration. If an external ordering system needs a guaranteed current quantity, request the relevant item or location data at the point where the decision is made rather than relying indefinitely on a cached response.
The current public API does not provide webhooks. Read polling and reconciliation before designing a synchronisation loop.