Skip to main content
People search, enrichment, and outreach. Get started with the clodo API
Guides

GTM Lead Generation

Learn how to find B2B sales leads with an API: turn your ICP into a prospect list, qualify decision-makers, enrich email addresses, and prepare personalized outreach.

Turn an ideal customer profile into a list of people to contact. This guide connects natural-language people search, lead qualification, email enrichment, and personalized outreach for sales prospecting and go-to-market workflows.

Your ICP can be as specific as the problem your product solves. Combine the person's responsibilities, their company's technology stack, past experience, and relevant public work. For example, look for an engineering leader at a fintech using Snowflake who previously built data infrastructure at a bank and has spoken publicly about data-platform migrations.

Describe the people you would want to meet if you could write the exact criteria yourself. Start with who owns the problem, then explain the combination of company context, technology, experience, and public evidence that would make them a strong fit. Include must-haves, preferences, exclusions, and a time window when recency matters.

You do not need to reduce a nuanced persona to a job title and location. “People who have done X, at companies using Y, with evidence of Z” is a useful way to write an Agentic Search query. Its query field supports up to 2,000 characters, so use that space to explain what a good match looks like.

Starting point More useful search
Manufacturing leads Operations leaders at US manufacturers who have taken warehouse automation from pilot to production; prioritize people who have described the implementation in a public case study
Prospects for data infrastructure Data-platform leaders at fintech companies using Snowflake, with prior experience building data infrastructure at a bank
Prospects for developer tooling Engineering leaders at B2B software companies using Kubernetes who have given a conference talk about platform engineering; exclude agencies and consultants
Security decision-makers Security leaders at UK financial-services companies who previously led a cloud-security program and have published an article or spoken about its implementation

Make the evidence requirement explicit: identify the technology, experience, publication, or event that matters, and ask for sources supporting the match. A query expresses what you want found; review the returned evidence to establish which criteria were actually verified. Missing evidence is an unanswered qualification question.

Publicly accessible posts can also provide context: ask for people who have written about a particular implementation problem, and include a known post URL when you have one. A person's own public writing and the list of people who liked a post are different sources; the latter requires social-engagement access beyond the current public API.

#Example: combine tech-stack signals, career history, and public work

For an enrolled account, send this body to POST /api/public/v1/agentic-search/ after completing the setup checklist. Replace the example webhook URL with your public HTTPS receiver.

{
  "query": "Find data-platform leaders at US or UK fintech companies using Snowflake. Prioritize people who previously built data infrastructure at a bank and have written an engineering article or given a conference talk about a data-platform migration since January 2025. Exclude consultants and agencies. Company use of Snowflake is required; prior banking experience and public migration work are preferences. Include sources supporting the technology and experience matches, and distinguish missing evidence from confirmed facts.",
  "target_results": 25,
  "max_credits": 500,
  "webhook_url": "https://your-app.example/webhooks/clodo"
}

Wait for agentic_search.completed, or poll GET /api/public/v1/agentic-search/{job_id}/. Review fit_summary, proof_points, and evidence, together with partial and completion_reason. Carry the supported context into qualification and outreach. You can proceed directly to step 3 with these results.

#2. Build the initial prospect list

For a broader first pass, use People Search. This is an alternative starting point to the detailed Agentic Search above, useful when a role and company description is enough to build your initial pool. After completing the setup checklist, send this JSON body to POST /api/public/v1/search/ with your x-api-key header. Replace the example receiver with your public HTTPS webhook URL.

{
  "query": "Plant managers and operations directors at industrial manufacturing companies in the United States with 200 to 2000 employees.",
  "max_results": 50,
  "webhook_url": "https://your-app.example/webhooks/clodo"
}

Store the id from the 202 response. Wait for search.completed, or poll GET /api/public/v1/search/{job_id}/. A completed webhook contains results; a completed polling response places them in result.results. Inspect failures and terminal status before treating a job as ready.

Need a researched shortlist? Deep Search adds professional context and fit scores. For the detailed combination of technology, experience, and public work shown above, use Agentic Search and assess the evidence for each criterion.

#3. Qualify leads before enriching contact details

Keep each prospect's name, professional URL, current role, and company in your application. Compare them with your ICP and remove people outside your target audience. Your own CRM can hold the review status and campaign membership; clodo search does not write those records automatically.

Prioritize people whose responsibilities relate to the problem your product solves. A matching title is a starting point for qualification, not proof of budget or purchase intent. When more background would change your decision, call Professional Profile Enrichment to inspect work history.

#4. Find an email for a selected prospect

Send the person's returned professional_url to POST /api/public/v1/enrich/email/. This is a synchronous request. The value below is a placeholder; use the actual profile URL you selected.

{
  "professional_url": "https://www.linkedin.com/in/selected-prospect"
}

A 200 returns email. A 404 means no email was resolved; leave the contact unresolved instead of inventing an address. Completed email lookups cost 5 credits even when there is no match, so enrich after qualification. See Email Enrichment for accepted input combinations and other errors.

#5. Draft a relevant first touch

Connect a mailbox and verify it appears in Sending Accounts. Send a separate request to POST /api/public/v1/emails/, using the resolved email and accurate recipient details. The example below shows the structure, not a real recipient.

{
  "to": {
    "email": "alex@manufacturer.example",
    "first_name": "Alex",
    "company_name": "Example Manufacturing",
    "context": "Operations director at an industrial manufacturer."
  },
  "instructions": "Write a short introduction to our production-planning software. Connect it to the recipient's operations role without assuming they have a particular problem. Ask whether reducing manual scheduling work is a current priority. Do not claim we have met or invent company news.",
  "review": "required"
}

Poll GET /api/public/v1/emails/{id}/ until the email reaches pending_review or another terminal outcome. Review the subject and body, edit if needed, then call POST /api/public/v1/emails/{id}/approve/ to queue it for sending. Approval is a separate action; creating this draft does not send it. See Outreach Emails for the full lifecycle and Sequences for follow-ups.

#6. Expand the campaign without repeating the same page

To continue a completed People Search, send its job ID as search_id with max_results and webhook_url. Omit query for the continuation. clodo returns the next non-overlapping page for that search. Still deduplicate records in your own application when combining different searches or campaigns.

Use Idempotency for retrying search requests and respect Rate Limits. Keep search, enrichment, and drafting charges separate in your budget; a list of 50 prospects does not require 50 enrichment calls or 50 drafts.

#Lead generation questions

#How do I find B2B sales leads with an API?

Describe the decision-maker and target company in People Search, review returned profiles against your ICP, then enrich contact details for the prospects you select. This separates audience discovery from the decision to contact someone.

#Can I search for decision-makers at target accounts?

Include the company or account criteria and relevant functions in your query. Review returned company and role fields before adding someone to an account-based sales campaign. For complex qualification, use Agentic Search or Deep Search.

#How specific can my ideal customer profile be?

Combine multiple criteria in plain language: company technology, current responsibilities, previous employers, implementation experience, published work, conference participation, geography, and recency. Use Agentic Search for a detailed persona and state which conditions are required versus preferred. Specificity guides the research; it does not guarantee that every condition has a publicly verifiable match.

#Does this workflow identify buying intent?

A role or company match does not establish buying intent. If a particular public activity matters, describe it in an Agentic Search query and assess any supporting evidence. Do not treat an unsupported assumption as a verified signal.

clodo Docs