Free Tool

OData Query Builder for Business Central & F&O

Build and test OData queries visually. Catch inefficiencies with the built-in linter, fire queries against your own endpoint, and export in 7 formats — Postman, cURL, TypeScript, Python, C#, JS, and Power Automate.

No sign-upFree forever7 export formats15-rule query linter

Platform & Entity

Base URL

Leave blank to use Sample mode with mock data.

$select fields

nodisplayNameemailblocked

$filter

$expand

$orderby

Pagination & Options

off

Live URL Preview

Raw edit
customers?$select=no,displayName,email,blocked&$top=50
🌐 Live endpoint
⚠ Enter a base URL above to run a live query

No issues found

15 rules checked — all clear

From OData queries to full integration

From OData queries to full integration

Dynamics Mobile is built on the same OData APIs you're querying. We've already solved the hard parts — authentication, pagination, error handling, and real-time sync — so your team can focus on building apps, not plumbing.

OData for BC & F&O — common questions

What is OData and why does it matter for BC/F&O integrations?

OData (Open Data Protocol) is a REST-based standard that Dynamics 365 Business Central and Finance & Operations use to expose their data via API. Every integration — Power Automate flows, custom apps, Postman tests — ultimately uses OData URLs. Getting queries right (correct $select, $filter, $expand) is the difference between fast, reliable integrations and slow, error-prone ones.

How do I filter by date in Business Central OData?

Use the OData date() function to avoid timezone issues: date(postingDate) eq 2024-01-15. Without date(), BC compares full datetime values against your filter and results vary by timezone. The linter in this tool flags missing date() usage automatically.

What's the difference between BC OData v4 and F&O OData?

Both use OData v4, but with differences: BC uses api/v2.0 endpoints with camelCase field names and supports contains() in $filter. F&O uses /data/ endpoints with PascalCase fields and does not support contains() — use startswith() instead. F&O also has stricter $expand depth limits. This tool's linter detects platform-specific issues automatically.

Why does my BC OData query return only 20 records?

BC limits some API v2.0 endpoints to 20 columns when $select is omitted, and paginates results at 1000 records. Always add $select to your query, and follow the @odata.nextLink URL in the response to retrieve additional pages. This tool generates pagination-aware code in all 7 export formats automatically.

How do I use $expand with $select in Dynamics 365 OData?

Use nested $select inside the $expand clause: $expand=salesOrderLines($select=lineNo,itemNo,quantity). Without the nested $select, every field of every related record is returned, which dramatically increases response size and risks timeouts. This tool's linter (rule L007) warns when $expand is missing a nested $select.