SOQL Query to Count Leads in Salesforce

Copy-paste SOQL to count leads in Salesforce, with variants for filtered counts, COUNT(Id) vs COUNT(), and grouped totals.

Updated 2026-09-09

You need a number, not a list: how many leads exist in this org, and how many of them match a filter. COUNT() answers both without pulling a single record into memory.

Leads are high-churn: they are created by campaigns, converted, and archived, so almost every lead query wants a date or status filter.

The query: count all leads

COUNT() returns a single row with the total. It is the cheapest way to size an object before you export or mass-update it.

Count every lead
SELECT COUNT() FROM Lead

Count with a filter

Add a WHERE clause to scope the count. This is the query to run before any data operation, so you know exactly how many rows you are about to touch.

Leads created in the last 30 days
SELECT COUNT() FROM Lead
WHERE CreatedDate = LAST_N_DAYS:30

Count leads grouped by LeadSource

COUNT(Id) plus GROUP BY gives you a breakdown in one call. Note the alias - aggregate columns are returned as expr0 unless you name them.

Breakdown by LeadSource
SELECT LeadSource, COUNT(Id) total
FROM Lead
GROUP BY LeadSource
ORDER BY COUNT(Id) DESC

Common mistakes to avoid

  • Use the API name Lead, not the UI label - the two differ on several standard objects.
  • Wrap literal text values in single quotes; date literals such as LAST_N_DAYS:30 must stay unquoted.
  • Run the query in a sandbox first if it feeds a bulk update - a WHERE clause that is one character off can select the whole table.
  • COUNT() takes no field and returns one row; COUNT(Id) is the aggregate form you need whenever you also GROUP BY.
  • Counts respect sharing when run as a non-admin user, so two people can legitimately see different totals.

Run it faster with TurboKit

Counting is usually step one of a bigger job - export, cleanup, or a mass update on those leads.

TurboKit's AI SOQL builder lets you describe the result you want in plain English, returns the query, and exports the rows to CSV or Excel in the same panel - without leaving the Salesforce tab you are already on.

Frequently asked questions

What is the difference between COUNT() and COUNT(Id) on Lead?
COUNT() returns a single scalar total and cannot be combined with other selected fields. COUNT(Id) is an aggregate function, so it can sit next to GROUP BY columns - use it whenever you want counts broken down by LeadSource.
Does a COUNT() query on Lead hit governor limits?
COUNT() does not return rows, so it does not consume the 50,000-row query limit in Apex the way a full SELECT would. It still counts as one SOQL query against the per-transaction query limit.
Why is my lead count different from the report total?
Reports apply their own filters, record-type scoping, and sharing rules. A SOQL count run as an admin sees every record the admin can access, which is frequently a larger set than a filtered report.

More from the SOQL Library

Related reading