Skip to main content

Search for prospects

warning

This is a v1 legacy endpoint. It uses a different path /rest/v1 and may return different error codes and response formats compared to v2. While it remains functional, consider handling errors accordingly.

Search for prospects that match your criteria, including email, company, tags, and other available fields.

Retrieve a paginated list of prospects in your account, each containing snippet data, global status, and key dates such as the last contacted date.

The campaigns_details object provides information about the campaigns a prospect is enrolled in, including their campaign status, local status, and interest level. You can also sort prospects or filter them by specific fields and values.

Fields available for searching
  • email
  • first_name
  • last_name
  • company
  • organization_id
  • industry
  • website
  • tags
  • title
  • phone
  • address
  • city
  • state
  • country
  • snipet1 - snipet4
  • snippet5 - snippet15

Request

Endpoint

GET https://api.woodpecker.co/rest/v1/prospects?campaigns_details=true&search={search-field}={search_value},{search-field-2}={search_value-2}

Headers

x-api-key: {YOUR_API_KEY}

For details on how to authenticate your requests, please see the authentication guide.

Parameters

Searching

Use the search parameter to find prospects matching your specific criteria

ParameterRequiredTypeDescription
searchYesstringComma-separated list of search criteria. A full list of searchable fields is available below.
  • for email, you can use a full email address format recipientname@mail.com for an exact match or a string recipientname to look for a regex match .*recipientname.*
  • You can search through multiple fields, for example:
    ?search=email=drew,company=companyName
  • Multiple search fields use AND operator; multiple fields of the same type use OR
  • Fields other than email and organization_id use broad search
    .*{search-value}.*
Fields available for searching
  • email
  • first_name
  • last_name
  • company
  • organization_id
  • industry
  • website
  • tags
  • title
  • phone
  • address
  • city
  • state
  • country
  • snipet1 - snipet4
  • snippet5 - snippet15

Filtering

You can filter results by using one or more of the following parameters:

ParameterRequiredTypeDescription
campaigns_detailsNobooleanWhether to add details of campaigns a prospect belongs to
statusNostringProspect's global status: ACTIVE, BOUNCED, REPLIED, BLACKLIST, INVALID
campaigns_idNointegerComma-separated list of campaign IDs that prospects are enrolled in. Using this parameter will result in response body as described in getting prospects in campaign - refer to this guide
contactedNobooleanWhether a prospect has ever been contacted
interestedNostringReturns prospects only if they have a specific interest level set in any of the campaigns they are enrolled in. Available values: INTERESTED, MAYBE-LATER, NOT-INTERESTED, NOT-MARKED
diffNostringReturn prospects whose activity timestamp is greater than the provided date. Uses ISO 8601-like format: 2025-01-15T00:00:00%2B0200. Available timestamps: updated, last_opened (only with OPENED activity paramater), last_clicked (only with CLICKED activity paramater)

Sorting and pagination

ParameterRequiredTypeDescription
pageNointegerRequested results page (1-based)
per_pageNointegerNumber of records per page. Default: 100, maximum: 1000
sortNostringOrder the results based on the specified column. Default: order by ID ascending

For sorting, use + before the field name for ascending order and - for descending order. To sort by multiple fields, separate them with a comma.

To sort prospects by company name ascending and last_contacted date descending use: sort=+company,-last_contacted

Fields available for sorting
  • id
  • status
  • updated
  • email
  • last_contacted
  • last_replied
  • first_name
  • last_name
  • company
  • organization_id
  • industry
  • website
  • tags
  • title
  • phone
  • address
  • city
  • state
  • country
  • snipet1 - snipet4
  • snippet5 - snippet15
  • last_opened - available only with OPENED activity paramater
  • last_clicked - available only with CLICKED activity paramater
  • sent_mails - available only with OPENED or CLICKED activity paramater

Request sample

Search for prospects

The example below showcases how to search for a prospect with a specific email, together with details about the campaigns they are enrolled to.

curl --request GET \
--url "https://api.woodpecker.co/rest/v1/prospects?campaigns_details=true&search=email=recipientname@mail.com" \
--header "x-api-key: {YOUR_API_KEY}"

Response

Response examples

An array of prospect objects. Some fields will be returned only when the request uses specific paramaters. Such properties are not available in the example below and have a note in the body schema

[
{
"id": 1234567890,
"email": "erlich@bachmanity.com",
"first_name": "Erlich",
"last_name": "Bachman",
"company": "Bachmanity",
"organization_id": 654321789,
"industry": "IT",
"website": "https://bachmanity.com",
"linkedin_url": "https://linkedin.com/erlich-bachman",
"tags": "#VISIONARY",
"title": "CEO",
"phone": "+1 987-654-321",
"address": "700 Welch Road",
"city": "Palo Alto",
"state": "California",
"country": "United States",
"last_contacted": "2025-03-20T14:32:34+0100",
"last replied": "2025-03-21T08:11:35+0100",
"updated": "2025-03-21T08:11:35+0100",
"encrypted": false,
"snipet1": "You are running a successful startup incubator Bachmanity",
"snipet2": "",
"snipet3": "",
"snipet4": "",
"snippet1": "",
"snippet2": "",
"snippet3": "",
"snippet4": "",
"snippet5": "",
"snippet6": "",
"snippet7": "",
"snippet8": "",
"snippet9": "",
"snippet10": "",
"snippet11": "",
"snippet12": "",
"snippet13": "",
"snippet14": "",
"snippet15": "",
"snippet_labels": { "custom_snippet": "You are running a successful startup incubator Bachmanity" },
"status": "REPLIED",
"campaigns_details": [
{
"campaign_id": 654321,
"campaign_name": "SaaS in America",
"campaign_status": "RUNNING",
"campaign_prospect_status": "ACTIVE",
"interested": "NOT_MARKED"
},
{
"campaign_id": 987654,
"campaign_name": "SaaS in Europe",
"campaign_status": "RUNNING",
"campaign_prospect_status": "REPLIED",
"interested": "INTERESTED"
}
]
}
]

Body schema

FieldTypeDescription
[].prospectobjectContains prospect data
  └─ idintegerUnique identifier of a prospect
  └─ emailstringProspect's email address
  └─ first_namestringProspect's first name
  └─ last_namestringProspect's last name
  └─ companystringProspect's company name
  └─ organization_idintegerUnique identifier of a prospect's company
  └─ industrystringProspect's industry
  └─ websitestringProspect's website URL
  └─ linkedin_urlstringProspect's LinkedIn profile URL
  └─ tagsstringTags associated with the prospect. Tags start with a # and are separated with a space
  └─ titlestringProspect's job title
  └─ phonestringProspect's phone number
  └─ addressstringProspect's address
  └─ citystringProspect's city
  └─ statestringProspect's state or region
  └─ countrystringProspect's country
  └─ snippet_labelsobjectCustom snippet labels
  └─└─ label_namestringKey - value pairs representing a snippet label and its value
  └─ last_contactedstringDate when the prospect was last contacted (ISO 8601 format)
  └─ last repliedstringDate when the prospect last replied (ISO 8601 format). Note the missing _
  └─ updatedstringDate when the prospect was last updated (ISO 8601 format)
  └─ encryptedbooleanWhether a prospect is encrypted
  └─ snipetstringLegacy. Always equal to the corresponding snippetX values. There are 4 snipet fields (snipet1 to snipet4)
  └─ snippetstringProspect custom snippets. There are 15 snippet fields (snippet1 to snippet15)
  └─ statusstringProspect's global status
  └─ campaigns_detailsarray[object]Campaign details
    └─└─ [].campaign_idintegerCampaign ID the prospect is enrolled in
    └─└─ [].campaign_namestringCampaign name
    └─└─ [].campaign_statusstringCurrent status of the campaign. Available values: RUNNING, DRAFT, STOPPED, PAUSED, EDITED, COMPLETED
    └─└─ [].campaign_prospect_statusstringCurrent campaign status of a prospect. Available values: ACTIVE, BOUNCED, TO-CHECK, TO-REVIEW, REPLIED, AUTOREPLIED, BLACKLIST, PAUSED, INVALID
    └─└─ [].interestedstringInterest level of a prospect in a given campaign. Available values: INTERESTED, MAYBE_LATER, NOT_INTERESTED, NOT_MARKED.
    └─└─ [].sent_mailsinteger/nullAvailable only with activity parameter. Total number of emails sent in all campaigns
    └─└─ [].last_openstring/nullAvailable only with OPENED activity parameter. Timestamp when the prospect has last opened an email
    └─└─ [].last_clickedstring/nullAvailable only with CLICKED activity parameter. Timestamp when the prospect has last clicked a link in an email
    └─└─ [].click_urlstring/nullAvailable only with CLICKED activity parameter. URL of the clicked link. Each clicked link will result in a separate prospect object