InsightsArticle

How to Build a Signal-Based Prospecting List with an API

Learn how to build a signal-based prospecting list with an API: run a daily social-search routine that pulls fresh post engagers as leads, plus hiring signals.

The DataForB2B TeamEngineering9 min read

A sales tool pulls 5,000 contacts from a filter and the list looks sharp on Monday. By Friday it is rotting, because the people who were in a buying window gave off a signal weeks ago that no static filter caught. This guide shows how to build a signal-based prospecting list with an API, and the engine is a daily social-search routine: every morning a job runs the Search Social Posts endpoint on your competitor's posts and target keywords, and each run returns the people who just engaged as fresh leads. That is live data pulled at run time, not a frozen roster, and you will see the exact chain of calls that feeds it.

Key Takeaways#

  • The primary engine is a daily social-search routine that calls Search Social Posts on a competitor's posts, returning that day's fresh engagers as leads.
  • Running the search every day keeps the list fresh: it is live data pulled at run time, never a stored list that goes stale.
  • Layer hiring signals from Search Jobs and firmographic filters from Search People on top of the daily engagers.
  • Webhooks and monitors are a secondary push option for a short list of precise watched accounts.

Why do static filter dumps go stale?#

A filter dump captures a snapshot, and the second you export it the market moves on. People switch jobs, teams scale, budgets shift, and none of that reaches your CSV. A signal list fixes this by reading a live event on every run instead of freezing a persona, so each record arrives with a reason to reach out this week.

Static lists also push outreach toward generic, because nothing tells you why this person matters now. Timing is the strongest personalization you have, and the build below keeps it attached to every name by pulling the signal live before any firmographics.

Which signals actually predict a buying window?#

Three signals move budget, headcount, or priorities hard enough to act on: post engagement, hiring, and funding. Someone reacting to a competitor's post is showing interest right now, and it is the one signal you can pull fresh every single day. A company posting ten roles is scaling. A fresh round frees spend. Rank by how many of these overlap on one account.

Score each candidate before you spend a credit enriching it:

  1. Weight the raw signal: engagement on a buying-intent keyword outranks a like on a viral post.
  2. Check for overlap: a company hiring and freshly funded beats one showing a single flag.
  3. Set a decay clock. A job change runs hottest in its first ninety days; a funding signal cools over a quarter.

Run Search Social Posts daily as your lead engine#

This is the primary engine of the whole list. When someone reacts to or comments on a competitor's post, they raise their hand in public that day. A daily routine turns that signal into a fresh lead list every morning, pulled live at the moment you run it rather than read back from a stored file. Here is the chain the routine repeats each day.

  1. Call Search Social Posts at POST /search/posts every morning with the competitor's post keyword or author, set the platform to LinkedIn, and pass an include of reactions and comments. Instead of only the posts, the response returns each engager with name, headline, and profile URL. Because you run it fresh each day, you get that day's engagers, not last week's.
  2. Trim the engagers with the author_job_title and author_company filters so only the right roles survive, then use date_posted to keep the most recent activity.
  3. Send each profile URL to Enrich Profile to resolve a verified work email plus GitHub, so every engager becomes a contact-ready lead.

Cost stays predictable: one credit per ten posts and one credit per ten engagements, so a daily sweep of a busy competitor thread runs for a handful of credits. Point the same call at a keyword or subreddit instead of one post to widen the net to everyone talking about the problem you solve.

A Claude routine can run this chain unattended every morning. It uses the MCP tools to search your competitor's latest LinkedIn posts with reactions and comments included, enriches every new engager for a work email, filters to your ICP by job title and company size, and appends the survivors to a sheet. Nothing is stored and left to rot; the list is rebuilt from live data on every run, so running Search Social Posts daily is precisely how it stays fresh. You set the ICP once and the sheet repopulates itself.

How do you turn a hiring signal into an account?#

Hiring is the strongest complement to the daily social sweep. A company hiring is a company growing, and growth loosens budget. This chain turns one job posting into the right person to contact.

  1. Call Search Jobs at POST /search/jobs across LinkedIn and the major job boards, filtering by keyword such as SDR or backend engineer, location with radius, seniority, and date_posted. Each result names an expanding company.
  2. For every hiring company, call the People Search API at POST /search/people, filtering by current_company and the title or seniority of the person who owns that budget.
  3. Run the matched decision-makers through Enrich Profile for a work email, then hand the pair, the hiring signal and the contact, to your sequencing layer.

The job posting doubles as your opening line, so your first message writes itself around a fact, not a hunch.

How do you tighten the list without gutting it?#

Add firmographic and person filters after the signal, never before. Size a heavy query first so you do not burn credits on something that returns twelve rows or two million.

  1. Run Count Results first to estimate how many matches a filter set returns. If the number is tiny, loosen a filter; if it is huge, add one. You tune before you spend.
  2. Layer conditions on Search People (40-plus filters across 800M-plus profiles) and Search Company (75M-plus records) using fields like current_company_funding_stage, seniority, employee_growth, and recent_hires.
  3. When the ask is fuzzy, hand a plain-English description to Reasoning Search, also called Text-to-Filters. You describe the lead in words and the endpoint builds the structured query for you.

Keep the signal as the anchor and treat every filter as a dial, not a gate. Over-filtering is the most common way a promising list collapses, so push borderline criteria into scoring instead of cutting them.

Add webhooks as a secondary push for watched accounts#

The daily social-search routine covers most of the list, but for a short list of precise accounts you can add a push channel instead of polling. A webhook monitor watches a specific profile and posts to your endpoint the moment a signal fires, so you do not wait for the next daily run. Treat it as a complement to the routine, not a replacement, reserved for the named accounts you never want to miss. Create one with a single call to POST /monitors:

{
  "signal": "post_engagement",
  "watch": ["https://social.com/in/competitor-founder"],
  "url": "https://your-app.com/webhooks/leads"
}

Swap the signal to a job change and the same mechanism alerts you when a watched contact lands a new role. Otherwise, the daily social-search sweep stays the workhorse. The DataForB2B free tier is enough to wire one monitor alongside your daily routine. Start on the free tier and prove the loop first.

Where does the list stop and outreach begin?#

The list ends the moment an entity is qualified, fresh, and enriched. Everything after that, sequencing, sending, handling replies, is a separate layer with its own state and failure modes. Fusing the two makes the system hard to test.

If you are building an AI SDR, this boundary is the cleanest seam. The daily social-search routine produces a stream of qualified, timely records. The AI SDR action layer consumes that stream and decides what to send. Design the handoff as a queue and each half stays simple.

You do not need a warehouse to start. Stand up the daily social-search routine first, resolve the people, enrich them, and add a webhook only for the accounts you cannot miss. That loop is a working signal-based prospecting list, and DataForB2B runs it over REST, MCP, and webhooks. Spin it up on the free tier and ship it now.

Frequently Asked Questions#

How do I create a prospect list?#

Stand up a daily social-search routine before you touch a persona filter. Each morning, call Search Social Posts with an include of reactions and comments to pull that day's engagers of a relevant competitor post. Enrich each one for a work email, score what comes back, drop the stale rows, and pass the rest to your outreach layer. Live signal first and filters second is the whole method.

What is signal-based prospecting?#

Signal-based prospecting assembles a target list from live buying signals rather than a static persona export. The signal, whether post engagement, a new job posting, a job change, or a funding round, marks an account entering a buying window. You query the people or companies attached to that event, so every record carries a reason to reach out now.

How to build a prospect database?#

A prospect database is the broad store you draw from; a signal list is the active slice you work this week. Build the database with wide queries on Search People and Search Company, then let the daily social-search routine pull the moving subset out of it. Use Count Results to size a segment before you commit credits to it.

How many signals should one list track?#

Start with the daily social-search routine and get the full chain working end to end, from the search call to enrichment to your outreach queue. Add hiring as a second signal only once you can rank results by both. Tracking six signals from day one usually produces noise you cannot act on.

How often should the list refresh?#

Run the social-search routine daily so the list is rebuilt from live data every morning rather than aged in place. For a handful of named accounts, add a webhook monitor so new matches arrive as events between runs, and let a freshness score retire the old ones.

Related
Get Started
// fig. ∞ — ship

Build with us. Now.

Get an API key in 60 seconds. Plug your AI agent into 800M+ verified profiles and 75M+ companies — today.

↓ nextREST · MCP · Webhooks