The `$count` system query option with the value `true` answers how many rows a request would retrieve, without retrieving them. ## Request ```text GET .../odata4/ExactOnlineREST.Financial.GLAccountsBulk@eol?$count=true ``` ## Answer The answer is the number itself, as the whole body: ```text 1284 ``` This differs from the OData standard, which asks for a collection carrying `@odata.count` beside the rows. A request on this service therefore asks either for the rows or for their number, never for both at once. The `/$count` path segment is not offered either; the system query option is the way. ## Counting a Selection A filter counts with the request, so the number is the number of rows the same filter would retrieve: ```text GET .../odata4/ExactOnlineREST.Financial.GLAccountsBulk@eol?$filter=Division eq 920474&$count=true ``` ## Counting the Groups Beside a grouping the number answered is the number of groups rather than the number of rows: ```text GET .../odata4/ExactOnlineREST.Financial.GLAccountsBulk@eol?$apply=groupby((DivisionName),aggregate($count as Accounts))&$count=true ``` That makes it a cheap way to find out how large a grouped answer will be before asking for it. A `$top` next to it has no effect on the number, because the number of a collection is the number before a limit is taken from it. ## When To Use It A row count is useful to size a download before starting it, and to check afterwards that a report received everything. It is not free: the platform still has to work out the number, and on a platform without a counting facility that means reading the rows. A count therefore counts against the [[Invantive Bridge Online/Fair Use Limits|Fair Use Limits]] like any other request.