Cold calling remains one of the most effective ways to reach potential customers and drive sales. However, the success of your cold calling efforts heavily relies on the quality and accuracy of your prospecting data. And sourcing quality B2B data isn't easy.
You need better data if your connection rate is ~4%
Manually sourcing contact information for your prospects is not only time-consuming but also often results in outdated or incorrect data.
You might spend 15 minutes searching the web only to end up with generic company phone numbers that lead to a dead end. And even if you do manage to find decision maker phone numbers, the process is hardly scalable.
Existing B2B data providers offer a solution, but they come with their own set of drawbacks. Subscription costs can be high, and the data quality isn't always reliable. You might end up paying a premium for bad data.
Also, traditional B2B data providers often lack the flexibility and integrability that modern sales teams need. Their data is typically siloed off in proprietary platforms like web applications or Google Chrome extensions, making it difficult to integrate into your existing workflows and sales tools.
The solution? Programmatic lead generation via API.
What is an API and how can it help with cold calling?
An API, or Application Programming Interface, is a set of protocols and tools that allow different software applications to communicate with each other.
With an API, you can automate the entire process of finding, enriching, and updating your prospects.
Imagine being able to automatically feed fresh leads directly into your CRM, enrich your existing database with up-to-date phone numbers, or trigger personalized outreach based on real-time data changes, and beyond.
With an API, all of this is possible.
But not just any API works
You need a B2B enrichment API. And not just any B2B enrichment API will give you fresh quality data for a cost-effective price.
That's where Proxycurl came in.
Proxycurl spent years doing the hard part: scraping a massive amount of B2B data and matching it up to identifiers, such as LinkedIn profiles, then offering that data through a REST API. With it, you could make HTTP requests to retrieve specific data points, such as a prospect's direct phone number, email address, job title, company information, and more.
You could also use the API to search for prospects based on specific criteria, such as industry, location, job title, or beyond.
Let me explain how:
Programmatically enrich your existing prospects with contact information
For starters, with the Personal Contact Number Lookup Endpoint, which was part of Proxycurl's Contact API, you could enrich social media profiles (LinkedIn, X, Facebook) with their respective personal phone numbers.
No more guessing games or leaving voicemails that never get returned, just a direct line to the people you need to talk to.
There were several ways to query the API, any programming language of your choice, but one of the easiest ways was to use a simple cURL GET command such as follows:
curl \
-G \
-H "Authorization: Bearer Your_API_Key_Here" \
'https://nubela.co/proxycurl/api/contact-api/personal-contact' \
--data-urlencode 'linkedin_profile_url=https://linkedin.com/in/elon-musk' \
--data-urlencode 'page_size=0'
cURL can be easily installed, and may already be depending on your operating system, and used on macOS, Linux, and Windows.
After cURL made an HTTP GET request to the Personal Contact Number Lookup Endpoint, it then returned a phone number:
{
"numbers": [
"+1123123123"
]
}
You could do many, or even thousands of profiles at the same time. ChatGPT, some simple Python, and a CSV file could accomplish it for you.
Not bad, right? It didn't take being a rocket scientist either.
Important update: Proxycurl has since been sunset, and Sapiengraph is no more as well. The same founder behind Proxycurl is now building NinjaPear. If your workflow depends on direct phone numbers specifically, this old Proxycurl flow is useful historical context, but NinjaPear is the current platform and it does not provide phone numbers. What it does provide is fresher company and person enrichment from public sources, verified work emails, company monitoring, customer intelligence, and a spreadsheet-first prospecting workflow through Prospector.
We can also help with finding interesting prospects
Now, let's say rather than enriching an existing prospect you've already found, you want to find some new prospects. We can also help you with that.
Namely, the Person Search Endpoint helped here.
The Person Search Endpoint allowed you to search through an entire dataset of hundreds of millions of profiles and filter with several data points, such as:
- Job role
- Education
- Current company
- Country, city
- Skills
- And beyond
Using cURL again, let's say we're looking to target HR tech companies:
curl \
-G \
-H "Authorization: Bearer Your_API_Key_Here" \
'https://nubela.co/proxycurl/api/v2/search/person/' \
--data-urlencode 'country=US' \
--data-urlencode 'current_role_title=hr OR human resources OR people OR talent' \
--data-urlencode 'current_company_industry=Human Resources' \
--data-urlencode 'current_company_employee_count_min=50' \
--data-urlencode 'current_company_employee_count_max=5000' \
--data-urlencode 'skills=recruiting OR talent acquisition OR employer branding OR diversity' \
--data-urlencode 'page_size=10'
The above query would search the dataset and find you matching prospects that fit your search criteria, returning the results like follows:
{"results": [{"linkedin_profile_url": "https://www.linkedin.com/in/fox-boswell-65874874", "profile": null, "last_updated": null}, {"linkedin_profile_url": "https://www.linkedin.com/in/alice-jiaqi-wang-601777b4", "profile": null, "last_updated": null}, {"linkedin_profile_url": "https://www.linkedin.com/in/angie-hughes-1bb661b8", "profile": null, "last_updated": null}, {"linkedin_profile_url": "https://www.linkedin.com/in/ir-bistok-r-s-nadeak-829588107", "profile": null, "last_updated": null}, {"linkedin_profile_url": "https://www.linkedin.com/in/devon-edmisten-02001468", "profile": null, "last_updated": null}, {"linkedin_profile_url": "https://www.linkedin.com/in/geet-matharoo", "profile": null, "last_updated": null}, {"linkedin_profile_url": "https://www.linkedin.com/in/darenwardatgluereply", "profile": null, "last_updated": null}]}
And continuing on, full of LinkedIn profile URLs, which you could then enrich with contact information like phone numbers from there using the respective Personal Contact Number Lookup Endpoint above.
Additionally, there were many different search parameters you could use with the Person Search Endpoint.
Such as enabling enrichment by using enrich_profiles=enrich which would instead of just returning LinkedIn profile URLs, also return a structured JSON result back of their LinkedIn profile such as this:
{"results": [{"linkedin_profile_url": "https://www.linkedin.com/in/hemasri-nagaraj-923a56a3", "profile": {"public_identifier": "hemasri-nagaraj-923a56a3", "first_name": "Hemasri", "last_name": "Nagaraj", "full_name": "Hemasri Nagaraj", "occupation": "Principal Consultant", "summary": "Associate Consultant - Talent Acquisition at AVTAR Career Creators", "country": "US"}, "last_updated": "1970-01-01T00:00:00"}, {"linkedin_profile_url": "https://www.linkedin.com/in/naman-kaur-573ba05a", "profile": {"public_identifier": "naman-kaur-573ba05a", "first_name": "Naman", "last_name": "Kaur", "full_name": "Naman Kaur", "occupation": "Human Resources Recruiter at Elite Hr Practices", "summary": "IT Recruiter Elite HR Practices...", "country": "US"}, "last_updated": "1970-01-01T00:00:00"}]}
The profile example above containing "occupation": "Human Resources Recruiter at Elite Hr Practices" as a key data point, of course.
You can see all of the possibilities in terms of additional parameters available with the Person Search Endpoint on the documentation.
But finding the right prospects and their respective phone numbers is just the first step in cold calling.
To really maximize the results of your cold calling, you'll want to use the rich data available through your enrichment stack to personalize your cold calling outreach.
Honestly, I’ve found that if you already have old leads sitting in your CRM or spreadsheet that never converted, following up with those can be way more effective than constantly buying fresh lists. Less sketchy too.
If you're reading this in 2026 and beyond, this is where NinjaPear becomes a plausible alternative in the workflow.
Not for phone numbers. It does not do that.
But for the rest of the pipeline, it is genuinely useful:
- profile enrichment from public sources
- company profile data
- verified work email finding
- employee count
- customer intelligence
- competitor discovery
- ongoing account monitoring through the Monitor API
That matters because automating cold calling lead generation is not just about finding a number. It's about knowing who to call, why now, and what changed at the account before your rep dials.
If I were rebuilding this stack today, I would split it in two:
- a contact data layer for direct dials, if direct dials are mandatory for your motion
- a richer context layer for timing, relevance, work email, company changes, and account prioritization
NinjaPear fits the second bucket very well.
Using personalization for the ultimate cold call
One of the biggest mistakes sales reps make when cold calling is using a generic, one-size-fits-all script. In today's noisy sales landscape, that simply doesn't cut it anymore.
Prospects are bombarded with cold outreach every day. If you want to stand out and actually get them to engage, you need to demonstrate that you understand their specific situation and needs.
That's where the power of personalization comes in.
For example, let's say you're selling a marketing automation platform. With enrichment data, you can pull information like:
- Job title
- Work history
- Skills
- Location
- Summary of the individual
- Education
- The size and industry of their company
- Recent company news and events
- Beyond
...and with these insights, you can tailor your pitch to speak directly to the prospect's challenges and goals.
So, instead of a generic opener like, "Hi, I'm calling from MarketCo and we offer marketing automation software," you could say something like:
"Hi Sarah, I noticed that ACME Corp recently raised a Series B and is rapidly expanding its marketing team. Congrats. I imagine with that growth, implementing the right automation tools is probably a big priority for you right now. Many of our other clients in the SaaS space have found our platform really helpful for scaling personalized campaigns without adding headcount. I'd love to learn more about ACME's specific needs and share some relevant case studies. Do you have 15 minutes to chat next week?"
See the difference?
By using just a little bit of prospecting data in your script, you show that you've done your homework and understand their needs. You're not just pitching a product, you're offering targeted solutions to their problems.
And the more relevant and personalized your outreach, the more likely prospects are to actually engage and take a meeting.
We hired 5 SDRs last year. Within 4 weeks, we let 3 of them go. The 2 who stayed: • Started at 1-3 booked appointments per day • Now at 5-10 booked appointments per day In the first 3 months of having setters at all, our positive-reply-to-appointment conversion tripled. BEFORE SETTERS: positive reply lands → email back → 24-hour response cycle → most cool off. AFTER SETTERS: positive reply lands → 2-minute email response → phone call within five minutes if a number exists → text message if no answer → most book. Setting isn't as easy to systematize as cold email itself. But it IS the no.1 lever you can use to book more calls. Agencies running cold email without setters are leaving a TON of their booked-appointment potential on the table.
— Atishay (@axtalks) Tue May 12 14:00:00 +0000 2026
In fact while we're talking about enrichment, let me show you one more of the more notable endpoints here:
General prospect enrichment
Outside of using the enrichment parameter on the Person Search Endpoint, if you already had a social media profile URL like a LinkedIn URL on your prospects, you could also use the Person Profile Endpoint to return structured and enriched data of your prospect.
And on this endpoint, if you're using use_cache=if-present, Proxycurl could guarantee it was scraped within 29 days, often live. It also had a personal_contact parameter, and if you chose to enable that, you could also pull their phone number through this endpoint as well.
Here's an example using cURL:
curl \
-G \
-H "Authorization: Bearer Your_API_Key_Here" \
'https://nubela.co/proxycurl/api/v2/linkedin' \
--data-urlencode 'linkedin_profile_url=https://linkedin.com/in/johnrmarty/' \
--data-urlencode 'personal_contact_number=include' \
--data-urlencode 'use_cache=if-recent' \
--data-urlencode 'fallback_to_cache=on-error'
Which returns a similar JSON result, such as the Person Search Endpoint with the enrichment parameter, but also includes contact information:
{
"public_identifier": "johnrmarty",
"first_name": "John",
"last_name": "Marty",
"full_name": "John Marty",
"occupation": "Co-Founder at FF Real Estate",
"country": "US",
"city": "Seattle",
"state": "Washington",
"personal_numbers": ["+19707495020"]
}
It's safe to say it's pretty easy to get access to the B2B data you need.
Also, for a current-day alternative, NinjaPear now covers a good chunk of the non-phone enrichment side. On its homepage, NinjaPear explicitly offers profile enrichment, company profile data, verified work email finding, employee count, and customer intelligence, all pay-as-you-go with no monthly minimums. That's a different product shape from old Proxycurl, but for automating cold calling lead generation it is a pretty sane fit if your team is sourcing leads, prioritizing accounts, and teeing up reps with context before the call.
How to get the most out of your cold calling
Do your research
Before each call, take a few minutes to review the prospect's enriched data.
Look for key points that you can use to tailor your pitch, like recent company events, tech stack info, or industry-specific challenges.
If you are using a modern stack, this is where monitoring changes matters. A prospect who just raised, just hired a new VP, just changed pricing, or just launched a new product is a very different call from a random name on a stale list.
Prioritize relevance over volume
It's tempting to stuff your script with every piece of data you have on the prospect. But this can quickly become overwhelming and sound artificial.
Instead, pick the one or two most relevant points and focus on those. Quality over quantity.
Connect the dots
Don't just recite facts about the prospect's company. Use that information to draw explicit connections to your offering.
For instance, "I see you use Salesforce CRM. Our integration with Salesforce allows you to automatically sync lead data and activity, which could save your reps hours per week."
Keep it conversational
While a script is important, you don't want to sound like you're reading from a teleprompter.
Use your personalization data points as natural conversation starters, but be prepared to go off-script and actually listen to the prospect's responses.
By the way, generally speaking, a cold call should flow something like this:
- Intro, who you are, reason for calling
- Value prop, how you help similar companies solve a relevant problem
- Qualification, key questions to see if they're a fit
- CTA, book a meeting, demo, next step
- Objection handling, acknowledge concerns, pivot to value
Be prepared to go off-script to address their unique needs. The goal is to start a dialog, not close on the first call.
Continue reiterating
Keep track of which talking points seem to resonate most with prospects, and which fall flat.
Over time, refine your cold calling script based on what's working. It's an iterative process.
Ultimately with a bit of targeting and research, instead of your cold calls getting brushed off as "just another sales call," you'll be able to start meaningful conversations that lead to real sales opportunities.
Recapping things
Throughout this article I talked about a lot of different ways a B2B enrichment API could help you with your cold calling. Let me recap them for you.
To begin with, you can use a person search endpoint to build targeted cold calling prospecting lists and surface fresh, accurate leads that fit your ideal customer profile.
These dynamically generated lists can then be automatically enriched with direct-dial phone numbers, verified emails, job titles, latest work details, and quite a few other B2B data points using enrichment APIs like a Personal Contact Lookup and Person Profile endpoint.
Your existing CRM leads and downloaded lists can also be continuously enriched and kept up-to-date using these same types of API endpoints.
Additionally, you can set up workflows to identify warmer prospects ready for outreach based on activity signals, fresh funding news, job changes, and other trigger events, then automatically, and manually, conduct outreach.
That last piece is where NinjaPear is actually more interesting than the old world of static enrichment tools. NinjaPear is not a phone number product. But it does combine person enrichment, work email finding, customer data, competitor discovery, and company monitoring in one place. If your team cold calls based on timing and account movement, not just raw list volume, that's useful.
The key is to think of your API not as a separate tool, but as a core data layer that integrates into your B2B business.
The bottom line
Cold calling may be a tried-and-true sales tactic from the old days, but in today's competitive and jaded landscape, it's not enough to simply dial through a list of prospects.
To truly excel at cold calling, you need accurate contact information, fresh data on your prospects, personalized outreach, and a focus on delivering value.
Proxycurl used to make the phone-number-and-enrichment side much easier. Today, if you are rebuilding the motion, I would think in layers.
- direct dial data, if your team truly needs phone numbers
- profile and company enrichment
- work email coverage
- account change monitoring
- CRM sync and workflow automation
That said, tools in the mold of the old Proxycurl endpoints, such as a Person Search Endpoint, a Person Profile Endpoint, and a Personal Contact Number Lookup Endpoint, are still the right conceptual building blocks.
And if you want the modern Nubela answer, it's NinjaPear for the enrichment, monitoring, and competitive-intel side of the stack.
Try the modern stack
If you're trying to automate cold calling lead generation today, don't just buy a giant list and hope reps muscle it into pipeline. Build a small workflow first.
Start with account selection. Add person enrichment. Layer in verified work emails and company-change monitoring. Then decide whether direct dials are actually the constraint, or whether your real problem is stale timing and weak context.
If you want the current platform from the team behind Proxycurl, try NinjaPear's 3-day free trial and test whether its enrichment, work email, customer data, and monitoring actually improve your call prep and targeting. That's the sane next step.