LeadSquared Developer Centre


Lead Distribution Analytics

This API retrieves lead data based on various user and lead conditions.
The API structure consists of report filters (consisting of user and lead filters), date filters, output conditions, and response format. By using a combination of these parameters, you can get analytical insights on varied use cases.


Example Use Cases

  • The number of leads with engagement score < 20 in the last month
  • The number of leads from a particular source in the last week
  • The number of leads in a particular lead stage
  • The average engagement score for all leads under a particular owner, etc.


Structure of the API

  1. The “Report Filter” node contains “UserFilter” and “LeadFilter” parameters.
    • The “UserFilter” lets you use condition groups (see User Advanced Search) to filter users.
    • The “LeadFilter” lets you filter based on any lead field.
  2. The “DateFilter” node lets you filter based on a particular date field (modified on, created on, etc.) and range.
  3. The “Output” node lets you control how you want the results to be displayed.
    1. You can retrieve results as a ‘list’ of leads
    2. Or you can use the ‘aggregate’ option to perform operations like averaging or summing up a particular lead field (lead score, engagement score, etc.)
  4. “Paging” options are used the same way across all our APIs. Use them to sort your results.

Note: The “ResponseFormat” parameter in the API URL lets you retrieve results in either JSON (default) or CSV formats.



POST https://{host}/Leads/LeadDistribution/FilterByLeadField?accessKey=AccessKey&secretKey=SecretKey&responseformat=ResponseFormat

URL Parameters

Parameter Description
ResponseFormat The response can be displayed in either JSON (default) or CSV formats. The response Content-Type will be “text/csv” in case of CSV response format. The CSV attachment can be downloaded.


Content-Type: application/json
JSON Body/Payload Icon
  "ReportFilter": {
    "UserFilter": {
      "GroupConditions": [
          "Condition": [
              "LookupName": "UserID",
              "Operator": "eq",
              "LookupValue": "01f131a5-7746-11e6-bcaf-0677ec402fcf,07934579-8551-11e6-88b9-0677ec402fcf,090529bc-862c-11e6-88b9-0677ec402fcf,0ec2b1d5-3d0f-11e5-b982-22000aa68b6f"
    "LeadFilters": [
        "LookUpName": "EngagementScore",
        "LookUpValue": "0",
        "SqlOperator": "<>"
  "DateFilter": [
      "DateField": "LeadCreatedOn",
      "FromDate": "2017-11-10 12:00:00",
      "ToDate": "2018-11-10 12:00:00"
  "Output": {
    "Type": "aggregate",
    "GroupBy": "OwnerId",
    "AggregateFunction": "Average",
    "AggregateField": "EngagementScore",
    "IncludeCSV": ""
  "Paging": {
    "PageIndex": 1,
    "PageSize": 10

Request Parameters

Parameter Description
User Filter

You can enter multiple User Ids/Email Addresses or use advanced search conditions.

If no user filter is specified, all users will be considered.

Lead Filters

You can enter multiple lead field filters separated by AND condition.

  • “LookupName” – Schema name of the lead field. For example, “EngagementScore”.
    To get the schema names for all lead fields use the LeadsMetaData API.
  • “LookupValue” – This is the value of the field you passed in “LookupName”.
  • “SQLOperator”
    Operator Accepted Value in API
    Equals =
    Greater than >
    Less than <
    Greater than equal to >=
    Less than equal to <=
    Contains data def
    Doesn’t contain data ndef
    Contains lik
    Doesn’t contain nlik
    In in*

    If you use the SQL operator in, you can specify multiple values in the LookupValues array. For example –
    “LookUpName”: “EngagementScore”,
    “SqlOperator”: “in”,
    “LookUpValues”: [

    Note: For an exact match pass “SqlOperator”:”=”

Date Filter

Lets you leads based on a particular date field. Multiple date filter are permitted.

  • “DateField” – The date field you want to filter on. Allowed values are “LeadCreatedOn” and “LeadModifiedOn”
  • “FromDate” – The start date you want to filter from.
  • “ToDate” – The end date you want to filter till.

Note: The date format must be yyyy-MM-dd hh:mm:ss


“Type” – You can receive the output as either

  • “List” – Leads will be displayed as a list. If you use this option, it is mandatory to pass the “IncludeCSV” parameter to specify the lead fields you want to include in the response.
    “GroupBy”, “AggregateFunction” and “AggregateField” parameters won’t be considered.
  • “Aggregate” – If you use this option, it is mandatory to pass “GroupBy”, “AggregateFunction” and “AggregateField”.
    • “GroupBy” – Enter the lead field you want to group the results by. For example, “OwnerId”, “ProspectStage” etc.
    • “AggregateFunction” and “AggregateField” – Accepted values are
      • “Count” (returns count of leads),
      • “Average” (returns count of leads and average of AggregateField such as Score/EngagementScore, etc.)
      • “Sum” – (returns count of leads and sum of AggregateField such as Score/EngagementScore. etc.)

The results matching your criteria may be large. You can fetch the result in blocks of “PageSize” and make multiple calls to the API with increasing values of “PageIndex”.  For example, you can specify “PageIndex”: 1, “PageSize”: 100 for the first call and specify “PageIndex”: 2, “PageSize”: 100 for second call.


200 OK
Content-Type: application/json
  "TotalCount": "4",
  "Results": [
      "OwnerId": "07934579-8551-11e6-88b9-0677ec402fcf",
      "Count": 18,
      "Average_EngagementScore": 9.944444444444445
      "OwnerId": "01f131a5-7746-11e6-bcaf-0677ec402fcf",
      "Count": 0,
      "Average_EngagementScore": null
      "OwnerId": "090529bc-862c-11e6-88b9-0677ec402fcf",
      "Count": 0,
      "Average_EngagementScore": null
      "OwnerId": "0ec2b1d5-3d0f-11e5-b982-22000aa68b6f",
      "Count": 0,
      "Average_EngagementScore": null

HTTP Response Codes

Code Description
200 OK

This is the status code for successful API call.

401 Unauthorized

The API call was made with invalid access credentials. Check your AccessKey and SecretKey.

400 Bad Request

The message body on the request is not as per API specification. Make sure that content type is set to “application/json” and the JSON body has correct attribute names and structure.

404 Not Found

The API could not be found. Please check the API signature.

429 Too Many Requests

API calls exceeded the limit of 25 in 5 second(s)

500 Internal Server Error

The API called failed. There could be many reasons for it. Check the exception message to get more details.

On this page

© 2024 by MarketXpander Services Pvt Ltd. All Rights Reserved.