Query data using FetchXml

FetchXml is a proprietary XML based query language used to retrieve data from Dataverse. See FetchXml reference for the elements used to retrieve data.


FetchXml is also used to define views for model-driven apps and some reporting capabilities. Elements and attributes for those use cases are not included here. Learn more about customizing model-driven app views with code.

Compose a query

All queries are based on a single table. The root element is fetch. Use the entity element to select the table the query retrieves data from. The following example represents a simple FetchXml query:

<fetch top='5'>
  <entity name='account'>
      <attribute name='name' />

This query returns the Name column of the first five rows from the Account table, using the LogicalName of the table to set the entity name attribute.

Limit the number of rows

To limit the number of rows returned, use the fetch element top attribute. Without the top attribute, Dataverse returns up to 5,000 rows.

Alternatively, specify a number of records to return using paging. Don't use the top attribute when you request pages of data. Learn how to request paged results

You can't use top when you request a count of rows using the returntotalrecordcount attribute. Learn to count rows

Return distinct results

Use the fetch element distinct attribute to require the query to exclude any duplicate values in the results.

If you use the distinct attribute, you must add at least one order element to have consistent paging.

When you use the distinct attribute, the results returned don't include primary key values for each record because they represent an aggregation of all the distinct values.

Retrieve Data

To get results from your query, you need to send your request to Dataverse. Learn to retrieve data from Dataverse using FetchXml

Refine your query

After you select the table to start your query with, refine the query to get the data you need. The following articles explain how to complete your query.

Article Task
Select columns Specify which columns of data to return.
Join tables Specify which related tables to return in the results.
Order rows Specify the sort order of the rows to return.
Filter rows Specify which rows of data to return.
Page results Specify how many rows of data to return with each request.
Aggregate data How to group and aggregate the data returned.
Count number of rows How to get a count of the number of rows returned.
Performance optimizations How to optimize performance

Community tools

The XrmToolbox FetchXmlBuilder is a free tool to compose and test FetchXml requests.


Tools created by the community are not supported by Microsoft. If you have questions or issues with community tools, contact the publisher of the tool.

Use FetchXml as a message parameter

You also use FetchXml as a parameter for Dataverse operations such as the following messages:

Message Name SDK for .NET Request class Web API Operation
BackgroundSendEmail BackgroundSendEmailRequest BackgroundSendEmail action
BulkDetectDuplicates BulkDetectDuplicatesRequest BulkDetectDuplicates action
FullTextSearchKnowledgeArticle FullTextSearchKnowledgeArticleRequest FullTextSearchKnowledgeArticle action
FetchXmlToQueryExpression FetchXmlToQueryExpressionRequest FetchXmlToQueryExpression Function
SendBulkMail SendBulkMailRequest SendBulkMail action
Rollup RollupRequest Rollup function

Next steps

Learn how to select columns.

Learn how to retrieve data with FetchXml.