# Migrating from Reports to ReportStats https://api-docs.lumar.io/docs/graphql/reports-to-report-stats-migration ## Differences between Report and ReportStat Report and ReportStat mostly share the same fields. The main difference is that the Report type represents a single ReportType (e.g. Added) and ReportStat contains the data for all available ReportTypes (Basic, Added, Missing and Removed). Because of that, all fields which access URL data or rely on ReportType accept an additional `reportType` argument. By default, those fields return the data for the Basic ReportType and the argument is required only if you need to access non-Basic ReportType data. The total number of URLs, available under the Report totalRows field, can be accessed on ReportStat using fields named after ReportType. For example, to get the equivalent of the URLs count in a Removed Report you would retrieve the removed field on ReportStat. ReportStat provides streamlined and faster access to your data but does not have the same filtering and sorting capabilities as Report. For detailed examples and side-by-side comparisons, see the sections below. ## Examples ### getReport vs getReportStat A single ReportStat with URL data can be retrieved by crawl ID and ReportTemplate code. Same as getReport, getReportStat accepts an optional segmentId argument as part of the input. ### getReportsForCrawls vs getReportStats A multiple ReportStats can be retrieved by crawl ID and ReportTemplate code pairs. Additionally, an optional `segmentId` argument can be provided as part of each input object. ### Crawl.reportsByCode vs Crawl.reportStats By default, Crawl.reportStats field returns all available ReportStats. They can be filtered by providing an optional `reportTemplateCodes` argument. Same as the top-level queries from previous examples, an optional `segmentId` argument is also accepted. ### Crawl.reports vs Crawl.reportStats Crawl.reportStats field does not provide the same filtering capabilities as Crawl.reports field. It can only be filtered by providing an optional `reportTemplateCodes` argument as shown in the previous example. It also doesn't have any sorting capabilities. If required, additional filtering or sorting would have to be done on the client side after retrieving all ReportStats.