<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" xmlns:nubela="http://nubela.co/blog/" version="2.0">
<channel>
<title><![CDATA[ NinjaPear Blog ]]></title>
<description><![CDATA[ Welcome to the NinjaPear blog, where we will chronicle our journey in building the world&#x27;s largest first-party B2B data platform. ]]></description>
<link>https://nubela.co/blog</link>
<image>
    <url>https://nubela.co/blog/favicon.png</url>
    <title>NinjaPear Blog</title>
    <link>https://nubela.co/blog</link>
</image>
<lastBuildDate>Thu, 23 Apr 2026 22:31:01 +0800</lastBuildDate>
<atom:link href="https://nubela.co/blog" rel="self" type="application/rss+xml"/>
<ttl>60</ttl>

    <item>
        <title><![CDATA[ Ultimate Guide To The Professional Social Network API: People Profile API (with Python Examples) ]]></title>
        <description><![CDATA[ Learn all about the Professional Social Network API, with comprehensive Python code demos. Dive into the world of Professional Social Network APIs, official and third-party alternatives, and understand how to access and utilize Professional Social Network profile data through Python code examples. ]]></description>
        <link>https://nubela.co/blog/ultimate-guide-to-linkedin-api_people-profile-api_with-python-examples/</link>
        <guid isPermaLink="false">6038ba67418c82000107db70</guid>
        <category><![CDATA[ profile api ]]></category>
        <dc:creator><![CDATA[ Steven Goh | CEO ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2019/05/square.jpg"/>
        <pubDate>Wed, 11 Dec 2024 11:00:00 +0800</pubDate>
        <media:content url="" medium="image"/>
        <content:encoded><![CDATA[ <p>Let's kick off this article with a demo. Run the following command to see what an enriched Professional Social Network profile looks like when accessed through a [3rd-party Professional Social Network API](<a href="https://nubela.co/proxycurl/Professional?ref=nubela.co">https://nubela.co/proxycurl/Professional</a> Social Network).</p>
<p>Some notes:</p>
<ul>
<li>You can run a <strong>demo API call</strong> that consume no credit, and return our favourite Mr. Bill Gates' pre-filled profile data.</li>
<li>Or you can run an <strong>actual API call</strong>, <a href="https://nubela.co/proxycurl/auth/register?ref=nubela.co">register for an account here</a> and get your API key to run it. It'll consume credits.</li>
</ul>
<p><a href="https://nubela.co/proxycurl/docs?ref=nubela.co#people-api-person-profile-endpoint">See the docs here.</a></p>

<!--kg-card-begin: html-->
<iframe src="https://nubela.co/proxycurl/widget/person-profile" width="100%" height="750" frameborder="0"></iframe>
<!--kg-card-end: html-->
<p><a href="https://gitlab.nubela.co/-/snippets/83?ref=nubela.co">Impressed by what you see</a>? This is a demonstration of the <a href="https://nubela.co/proxycurl/?ref=nubela.co">Proxycurl API</a> in action. There exists the official Professional Social Network API, as well as third-party Professional Social Network APIs like Proxycurl.</p>
<p>As the CEO of Proxycurl, and a coder myself, I've garnered a few years of experience dealing with Professional Social Network data. In this guide, I aim to equip you with a comprehensive understanding of Professional Social Network APIs, both official and 3rd-party alternatives. Expect a deep dive from both a technical and business perspective.</p>
<h2 id="types-of-professional-social-network-apis">Types of Professional Social Network APIs</h2>
<table>
<thead>
<tr>
<th></th>
<th>Official Professional Social Network API</th>
<th>Proxycurl</th>
<th>PhantomBuster</th>
<th>People Data Labs</th>
</tr>
</thead>
<tbody>
<tr>
<td>Business Reliability</td>
<td>✓</td>
<td>✓</td>
<td></td>
<td>✓</td>
</tr>
<tr>
<td>Minimum Spend</td>
<td>$x0000/mo</td>
<td>$10/one-time</td>
<td>$56/mo</td>
<td>$98/mo</td>
</tr>
<tr>
<td>Legal Compliance</td>
<td>✓</td>
<td>✓</td>
<td></td>
<td></td>
</tr>
<tr>
<td>Risk of your account being banned?</td>
<td></td>
<td></td>
<td>✓</td>
<td></td>
</tr>
<tr>
<td>Availability of fresh data</td>
<td>✓</td>
<td>✓ (Profiles no older than 29 days)</td>
<td></td>
<td></td>
</tr>
<tr>
<td>Can you get started immediately?</td>
<td></td>
<td>✓</td>
<td>✓</td>
<td>✓</td>
</tr>
</tbody>
</table>
<p>Professional Social Network APIs fall into two categories: the official Professional Social Network API and 3rd-party [Professional Social Network APIs](<a href="https://nubela.co/proxycurl/Professional?ref=nubela.co">https://nubela.co/proxycurl/Professional</a> Social Network).</p>
<p>To gain access to the official Professional Social Network API, you must be a Professional Social Network Partner. This means you, the developer, and your associated business will need to navigate through administrative hoops for several months in hopes of getting approved. One of the criteria for being approved as a Professional Social Network Partner is that you cannot be a competitor to Professional Social Network in any way. So, if you are in an industry like HR tech, building an application that might compete with an existing Professional Social Network product, you're out of luck.</p>
<p>As far as I'm aware, another requirement for being a Professional Social Network Partner is that you need to be paying five-digit monthly fees to Professional Social Network.</p>
<p>At the other end of the spectrum, we have 3rd-party Professional Social Network APIs. The world of third-party Professional Social Network APIs is like the wild west.</p>
<p>Some 3rd-party vendors, like [PhantomBuster](<a href="https://nubela.co/blog/proxycurl-api-vs-phantombusters-Professional">https://nubela.co/blog/proxycurl-api-vs-phantombusters-Professional</a> Social Network-profile-scraper/), require you to supply your own Professional Social Network account(s). PhantomBuster is a great choice if you want to automate actions within your own Professional Social Network account and aren't scared of having your personal Professional Social Network account banned.</p>
<p>There are also vendors like <a href="https://nubela.co/blog/top-5-alternatives-to-people-data-labs-in-2023-and-the-one-we-think-is-best/">People Data Labs (PDL)</a>, which have obtained bulk Professional Social Network data from various vendors and resell access to this combined Professional Social Network profile database. The data from such resellers often tend to be out-of-date.</p>
<p>Then, there are 3rd-party vendors that scrape Professional Social Network. There are variations in this category too. [Some of these scraping vendors](<a href="https://nubela.co/blog/what-you-should-know-now-that-mantheos-a-Professional">https://nubela.co/blog/what-you-should-know-now-that-mantheos-a-Professional</a> Social Network-scraping-service-is-sued-by-Professional Social Network/) engage in fraudulent behavior, such as registering fake accounts and using private throwaway debit cards to sign up for free Sales Navigator trials, and then using such whitelisted accounts to scrape Professional Social Network at scale. Meanwhile, some vendors strictly work with [publicly accessible Professional Social Network profiles](<a href="https://nubela.co/blog/what-is-the-difference-between-Professional">https://nubela.co/blog/what-is-the-difference-between-Professional</a> Social Network-public-profiles-vs-Professional Social Network-private-profiles-with-python-code-samples/).</p>
<p>The ramifications are significant. On one hand, companies that engage in fraud have been sued and shut down. On the other hand, companies that work exclusively with public Professional Social Network profiles operate within a [legally tested framework](<a href="https://nubela.co/blog/is-Professional">https://nubela.co/blog/is-Professional</a> Social Network-scraping-legal/) for compliance.</p>
<p>Here's a quick recap with the comparison table:</p>
<table>
<thead>
<tr>
<th></th>
<th>Official Professional Social Network API</th>
<th>Proxycurl</th>
<th>PhantomBuster</th>
<th>People Data Labs</th>
</tr>
</thead>
<tbody>
<tr>
<td>Business Reliability</td>
<td>✓</td>
<td>✓</td>
<td></td>
<td>✓</td>
</tr>
<tr>
<td>Minimum Spend</td>
<td>$x0000/mo</td>
<td>$10/one-time</td>
<td>$56/mo</td>
<td>$98/mo</td>
</tr>
<tr>
<td>Legal Compliance</td>
<td>✓</td>
<td>✓</td>
<td></td>
<td></td>
</tr>
<tr>
<td>Risk of your account being banned?</td>
<td></td>
<td></td>
<td>✓</td>
<td></td>
</tr>
<tr>
<td>Availability of fresh data</td>
<td>✓</td>
<td>✓ (Profiles no older than 29 days)</td>
<td></td>
<td></td>
</tr>
<tr>
<td>Can you get started immediately?</td>
<td></td>
<td>✓</td>
<td>✓</td>
<td>✓</td>
</tr>
</tbody>
</table>
<p><em>Interested in learning more about 3rd-party Professional Social Network APIs? We've compared [7 top Professional Social Network scraping tools](<a href="https://nubela.co/blog/reviewing-top-Professional">https://nubela.co/blog/reviewing-top-Professional</a> Social Network-scraping-api-services/). You can read more about it.</em></p>
<h2 id="official-professional-social-network-api">Official Professional Social Network API</h2>
<h3 id="what-can-you-do-with-the-official-professional-social-network-api">What Can You Do with the Official Professional Social Network API?</h3>
<p>Professional Social Network is a formidable professional social network that serves as a treasure trove of data for professionals and job listings. This data is something that a <a href="https://nubela.co/proxycurl/solutions/hr-tech?ref=nubela.co">recruitment tech startup</a> or a <a href="https://nubela.co/proxycurl/solutions/sales-marketing-automation-api?ref=nubela.co">sales automation product</a> would love to integrate into their offerings. Professional Social Network recognizes its value and <a href="https://developer.professionalsocialnetwork.com/blog/posts/2015/todays-changes?ref=nubela.co">closed public access to their API in 2015</a>. To access the official Professional Social Network API, you'll need to become a Professional Social Network Partner.</p>
<p>Once you become a Professional Social Network Partner, you'll gain access to a subset of the following APIs:</p>
<ol>
<li><strong>Profile API</strong>: Allows access to a user's Professional Social Network profile information. You can access basic profile details, pictures, and headlines.</li>
<li><strong>Connections API</strong>: Allows access to a user's Professional Social Network network. You can retrieve the list of a user's connections.</li>
<li><strong>Share API</strong>: Allows you to post shares for authenticated members. You can share text, URLs, and media.</li>
<li><strong>Invitation API</strong>: Allows you to invite others to connect on Professional Social Network.</li>
<li><strong>Organization API</strong>: Allows you to retrieve organization and brand data.</li>
<li><strong>UGC (User Generated Content) API</strong>: Allows you to retrieve, create, and manage rich, multi-faceted content.</li>
<li><strong>Compliance API</strong>: Allows you to report content that violates Professional Social Network's Professional Community Policies.</li>
</ol>
<h3 id="getting-approved-as-a-professional-social-network-partner">Getting Approved as a Professional Social Network Partner</h3>
<p>The Professional Social Network Partner Program is open to four types of businesses:</p>
<ol>
<li>Talent Solutions, for HR tech companies.</li>
<li>Marketing Solutions, for marketing automation companies.</li>
<li>Sales Navigator Application Development, for startups looking to enhance Professional Social Network Sales Navigator.</li>
<li>Professional Social Network Learning Integration, for content companies.</li>
</ol>
<p>From what I understand, it's a long and arduous process to get a company approved as a Professional Social Network Partner. Your best bet is to select the category that best fits your company's offerings and apply to become a Professional Social Network Partner.</p>
<p>Most of the impressive Professional Social Network API features also require a paid subscription to Professional Social Network Developer Enterprise Products.</p>
<h3 id="profile-enrichment-with-the-official-professional-social-network-api">Profile Enrichment with the Official Professional Social Network API</h3>
<p>Most companies will want to start with Professional Social Network's Consumer Solutions Platform (CSP). When you think of Professional Social Network, you likely think of the rich and bountiful profiles, and CSP is your access point to these alluring profiles.</p>
<p>There are only two features of the CSP that allow you to extract profile data from Professional Social Network:</p>
<ol>
<li><code>Sign In with Professional Social Network</code> provides the authentication layer to your product by allowing users to sign in with their professional Professional Social Network profiles.</li>
<li><code>Profile API</code> returns structured data of a profile programmatically.</li>
</ol>
<h3 id="sign-in-with-professional-social-network-oauth">"Sign In with Professional Social Network" OAuth</h3>
<p><em>Sign In with Professional Social Network</em> is an OAuth provider for your application. Most people assume that if you use <em>Sign In with Professional Social Network</em>, Professional Social Network will provide every user's Professional Social Network profile. However, this is not the case. What can be returned are:</p>
<ol>
<li>First/Last name</li>
<li>Email address</li>
<li>Profile picture</li>
</ol>
<p>Also, there is a rate limit of <code>500</code> requests per day.</p>
<p>In my opinion, <em>Sign In with Professional Social Network</em> offers very little utility for most applications because the key data you want to extract is the user's Professional Social Network profile, not general information about the user devoid of any data from their Professional Social Network profile.</p>
<h3 id="fetch-person-profile-data-via-the-official-professional-social-network-profile-api">Fetch Person Profile Data via the Official Professional Social Network Profile API</h3>
<p>There are two ways to fetch the data of a profile via the official Professional Social Network API:</p>
<ol>
<li>The first "Sign In With Professional Social Network" method is free and available to most developers. However, you must <strong>obtain permission from each profile</strong> you wish to extract into your application.</li>
<li>The second "Profile API" method is only available to <strong>approved developers with a paid subscription</strong> to Professional Social Network's Consumer Solution Platform. This allows you to fetch profile data from any profile ID.</li>
</ol>
<h4 id="using-the-sign-in-with-professional-social-network-method">Using the "Sign In With Professional Social Network" Method</h4>
<p>The first method requires you, the developer, to seek permission from the user who owns the profile. To do that, Professional Social Network requires you to fetch an access_token via 3-legged OAuth, a fancy term describing a two-step process to obtain an access token.</p>
<p><strong>Step 0</strong>: Obtain a <code>CLIENT_ID</code> and <code>CLIENT_SECRET</code> by creating an app on the <em>Professional Social Network Developers</em> page. (You can find this page through a Google search)</p>
<p><strong>Step 1</strong>: To get permission from a user, you will generate an authorization URL to send your user to Professional Social Network, where they can permit your application to download their profile.</p>
<p>In this case, you must provide a <code>REDIRECT_URI</code>, the webpage to which Professional Social Network will send the user back after they have finished granting permission.</p>
<pre><code class="language-python">def generate_authorization_url():
  """
  Generate an authorization URL for a user to give permission to extract their Professional Social Network Profile.

  The generated URL will take the user to a Professional Social Network page where they will be asked to give explicit
  permission to share their profile with you (the application creator).

  Should the user agree, they will be redirected to `Professional Social Network_REDIRECT_URI`.
  In the redirect, two fields will appear in the URL parameter, namely `code` and `state`.

  * `state` is generated below using `secrets.token_hex(8).upper()`. This serves as a form of identifier for this user.
  * `code` is the authorization_code, and can be used in `get_access_token()` to exchange for an `access_token`.

  """
  LI_AUTH_URL = 'https://www.professionalsocialnetwork.com/oauth/v2/authorization'
  url = requests.Request('GET', LI_AUTH_URL,
              params={
                'response_type': 'code',
                'client_id': Professional Social Network_CLIENT_ID,
                'redirect_uri': Professional Social Network_REDIRECT_URI,
                'state': secrets.token_hex(8).upper(),
                'scope': '%20'.join(['r_liteprofile', 'r_emailaddress', 'w_member_social']),
              }).prepare().url
  return url
</code></pre>
<p><strong>Step 2</strong>: After a user permits you to access their profile, you'll receive an authorization code. With this code, you will exchange it for an access_token to access the user's profile.</p>
<pre><code class="language-python">def get_access_token(authorization_code):
  """
  Given an authorization `code`, this function will return an `access_token` which can then be used to access a user's Professional Social Network profile.
  """
  LI_ACCESS_TOKEN_EXCHANGE_URL = 'https://www.professionalsocialnetwork.com/oauth/v2/accessToken'
  access_token = requests.post(LI_ACCESS_TOKEN_EXCHANGE_URL, params={
    'grant_type': 'authorization_code',
    'code': authorization_code,
    'redirect_uri': Professional Social Network_REDIRECT_URI,
    'client_id': Professional Social Network_CLIENT_ID,
    'client_secret': Professional Social Network_CLIENT_SECRET,
  }).json()['access_token']
  return access_token
</code></pre>
<p><strong>Step 3</strong>: Fetch the user's profile.</p>
<pre><code class="language-python">def get_profile(access_token):
  """
  Fetches the profile of a Professional Social Network user who has given you their permission to view their profile.
  """
  LI_PROFILE_API_ENDPOINT = 'https://api.professionalsocialnetwork.com/v2/me'
  r = requests.get(LI_PROFILE_API_ENDPOINT, headers={
           'Authorization': 'Bearer ' + access_token})
  return r.json()
</code></pre>
<p>The working Python code for this method can be found [in our Professional Social Network-api-python3-examples GitHub repository](<a href="https://github.com/nubelaco/Professional?ref=nubela.co">https://github.com/nubelaco/Professional</a> Social Network-api-python3-examples/blob/master/Professional Social Network_api_method_1.py).</p>
<h4 id="using-the-profile-api-method">Using the "Profile API" Method</h4>
<p>The second method does not require you to seek permission from the user. However, your application must be approved to use the People's Profile API endpoint with a 2-legged OAuth.</p>
<p><strong>Step 0</strong>: In your pre-approved Professional Social Network App, obtain the <code>CLIENT_ID</code> and <code>CLIENT_SECRET</code> fields.</p>
<p><strong>Step 1</strong>: Using your application's <code>CLIENT_ID</code> and <code>CLIENT_SECRET</code>, exchange for an access_token.</p>
<pre><code class="language-python">def get_access_token():
  """
  If you are:

  1. An approved Professional Social Network developer
  2. On a paid subscription to their Consumer Product

  You can use this function to fetch an `access_token` to access the API.
  """
  LI_ACCESS_TOKEN_EXCHANGE_URL = 'https://www.professionalsocialnetwork.com/oauth/v2/accessToken'
  access_token =requests.post(LI_ACCESS_TOKEN_EXCHANGE_URL, params={
    'grant_type': 'client_credentials',
    'client_id': Professional Social Network_CLIENT_ID,
    'client_secret': Professional Social Network_CLIENT_SECRET,
  }).json()['access_token']
  return access_token
</code></pre>
<p><strong>Step 2</strong>: Fetch any profile with profile_id.</p>
<pre><code class="language-python">def get_profile(access_token, profile_id):
  """
  Given an `access_token`, fetch the structured data of any profile.
  """
  LI_PROFILE_API_ENDPOINT = f'https://api.professionalsocialnetwork.com/v2/people/{profile_id}'
  r = requests.get(LI_PROFILE_API_ENDPOINT, headers={
           'Authorization': 'Bearer ' + access_token,
           'X-RestLi-Protocol-Version': '2.0.0'})
  return r.json()
</code></pre>
<p>The working Python code for this method can be found [in our Professional Social Network-api-python3-examples GitHub repository](<a href="https://github.com/nubelaco/Professional?ref=nubela.co">https://github.com/nubelaco/Professional</a> Social Network-api-python3-examples/blob/master/Professional Social Network_api_method_2.py).</p>
<h2 id="proxycurl-api">Proxycurl API</h2>
<p>The Proxycurl API offers <a href="https://nubela.co/proxycurl/?ref=nubela.co">B2B enrichment services</a> quite like the official Professional Social Network API. In some respects, it even surpasses the capabilities of the official Professional Social Network API, though it does have its restrictions. It's worth noting that Proxycurl works exclusively with [public Professional Social Network profiles](<a href="https://nubela.co/blog/what-is-the-difference-between-Professional">https://nubela.co/blog/what-is-the-difference-between-Professional</a> Social Network-public-profiles-vs-Professional Social Network-private-profiles-with-python-code-samples/).</p>
<p>The Proxycurl API provides the following functions:</p>
<ol>
<li><strong>People API</strong>: This feature enriches people's profiles, identifies people from emails or names, searches for prospects, and retrieves profile pictures.</li>
<li><strong>Company API</strong>: Enrich Professional Social Network company profiles, fetch funding data, list and search employees, identify companies, and obtain the employee count.</li>
<li><strong>Contact API</strong>: Use this to fetch personal phone numbers, personal and work email addresses, and social media profiles of anyone with a Professional Social Network profile via Proxycurl's Contact API.</li>
<li><strong>Jobs API</strong>: This function fetches up-to-date job posting data.</li>
<li><strong>School API</strong>: List students and enrich school profiles.</li>
<li><strong>Search API</strong>: Perform advanced searches for people and companies.</li>
</ol>
<h3 id="enrich-person-profile-data-via-proxycurls-person-profile-endpoint">Enrich Person Profile Data via <em>Proxycurl's Person Profile Endpoint</em></h3>
<p>Negotiating the challenges of Professional Social Network's API can be daunting. Thankfully, there's Proxycurl, which provides its [Professional Social Network API](<a href="https://nubela.co/proxycurl/Professional?ref=nubela.co">https://nubela.co/proxycurl/Professional</a> Social Network) so you can get everything that Professional Social Network's official Profile API offers, and a <strong>whole lot more</strong>. To see what data fields are supported, check out <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#people-api-person-profile-endpoint">Proxycurl's Person Profile API documentation</a>.</p>
<p>To get profile data from any profile ID, you just need to follow one method.</p>
<p><strong>Step 0</strong>: <a href="https://nubela.co/proxycurl/auth/login?ref=nubela.co">Get a Proxycurl API key</a> by signing into Proxycurl with your work email address.</p>
<p><strong>Step 1</strong>: Query the Person Profile Endpoint with a Professional Social Network Profile URL.</p>
<pre><code class="language-python">import requests

PROXYCURL_API_KEY = '' # todo - fill this field up


def get_profile(profile_id):
  api_endpoint = 'https://nubela.co/proxycurl/api/v2/Professional Social Network'
  header_dic = {'Authorization': 'Bearer ' + PROXYCURL_API_KEY}
  params = {
    'url': f'https://www.professionalsocialnetwork.com/in/{profile_id}',
  }
  response = requests.get(api_endpoint,
              params=params,
              headers=header_dic)
  return response.json()
</code></pre>
<p>You can find the working Python code for this method [in our Professional Social Network-api-python3-examples Github repository](<a href="https://github.com/nubelaco/Professional?ref=nubela.co">https://github.com/nubelaco/Professional</a> Social Network-api-python3-examples/blob/master/proxycurl_people_profile_api_endpoint.py).</p>
<h3 id="what-if-you-dont-have-the-users-professional-social-network-profile-url">What if you don't have the user's Professional Social Network profile URL?</h3>
<p>For some industries, like recruitment tech, identifying profiles of interest is a necessary step before profile enrichment. The current solution for the non-tech native involves purchasing Professional Social Network Sales Navigator and performing a <a href="https://nubela.co/blog/ultimate-guide-to-boolean-search-syntax/">Boolean search</a>. However, Proxycurl offers a "headless" equivalent known as the <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#search-api">Search API</a>.</p>
<p>To perform a Boolean search on the Person Search Endpoint and identify people living in the US who have previously worked at Google as Software Engineers, use the following code:</p>
<pre><code class="language-python">import requests

YOUR_API_KEY = 'your-api-key-here'  # Replace with your API key

headers = {
    'Authorization': f'Bearer {YOUR_API_KEY}',
}

params = {
    'country': 'US',
    'past_company_name': 'Google', 
    'past_role_title': '(?i)software engineer',
}

response = requests.get('https://nubela.co/proxycurl/api/search/person/', headers=headers, params=params)

if response.status_code == 200:
    data = response.json()
    print(data)
else:
    print(f"Request failed with status {response.status_code}")
</code></pre>
<p>The response will include a <code>Professional Social Network_profile_url</code> that you can use within the <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#people-api-person-profile-endpoint">Person Profile Endpoint</a> for enrichment.</p>
<h3 id="advanced-proxycurl-features">Advanced Proxycurl Features</h3>
<p>Proxycurl supports some advanced features that the Professional Social Network API does not natively support.</p>
<h4 id="fetching-contact-information">Fetching Contact Information</h4>
<p>For many use-cases, the natural next step after enriching a profile is to reach out to the person. Proxycurl's <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#contact-api">Contact API</a> allows you to fetch three different types of contact information.</p>
<ol>
<li>Work emails via the <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#contact-api-work-email-lookup-endpoint">Work Email Lookup Endpoint</a>.</li>
<li>Personal (free) emails via the <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#contact-api-personal-email-lookup-endpoint">Personal Email Lookup Endpoint</a>.</li>
<li>Personal phone numbers via the <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#contact-api-personal-contact-number-lookup-endpoint">Personal Contact Number Lookup Endpoint</a>.</li>
</ol>
<p>This contact information is not sourced from Professional Social Network, but from a myriad of other external sources.</p>
<h4 id="listing-employees-or-students">Listing Employees or Students</h4>
<p>You can also [fetch (or search for) a list of employees](<a href="https://nubela.co/blog/how-can-i-retrieve-a-list-of-all-employees-within-a-company-through-the-Professional">https://nubela.co/blog/how-can-i-retrieve-a-list-of-all-employees-within-a-company-through-the-Professional</a> Social Network-api/) from any target company or school. To get a list of past or present employees, you can use Proxycurl's <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#company-api-employee-listing-endpoint">Employee Listing Endpoint</a>. The <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#school-api-student-listing-endpoint">Student Listing Endpoint</a> is available for listing graduates of any school organization.</p>
<h4 id="identifying-key-people-in-a-company">Identifying Key People in a Company</h4>
<p>With Proxycurl's <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#people-api-role-lookup-endpoint">Role Lookup Endpoint</a>, you can easily identify the key people you need to reach out to within any company.</p>
<h4 id="profile-pictures-and-company-logos">Profile Pictures and Company Logos</h4>
<p>This is a freebie from Proxycurl. You can <a href="https://freelogocreator.com/?ref=nubela.co">get business logos</a> of any company with Proxycurl's <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#company-api-company-profile-picture-endpoint">Company Profile Picture Endpoint</a>. Similarly, you can get profile pictures of any Professional Social Network Profile with the <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#people-api-person-profile-picture-endpoint">Person Profile Picture Endpoint</a>. Both of these API endpoints are free :)</p>
<hr>
<p>There's a whole lot more you can do with Proxycurl API, including other free API endpoints. Check out the full list of Proxycurl powers <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#explain-it-to-me-like-i-39-m-5">here</a>!</p>
<h2 id="summarizing-the-state-of-professional-social-network-profile-apis">Summarizing the State of Professional Social Network Profile APIs</h2>
<p>Professional Social Network has made it <strong>extremely difficult</strong> for developers to work with their API, creating many hoops to jump through. "Sign in with Professional Social Network", while free, is throttled with rate limits and requires cumbersome per-user permission granting. Even then, you won't be able to obtain rich Professional Social Network profile data about the user signing into your service. The Profile API, with its 2-legged OAuth that lets you query any profile ID, requires you to be a Professional Social Network Partner and necessitates a hefty payment via a Professional Social Network subscription.</p>
<p>Proxycurl offers an [alternative equivalent to Professional Social Network's Profile API](<a href="https://nubela.co/blog/ultimate-guide-to-Professional">https://nubela.co/blog/ultimate-guide-to-Professional</a> Social Network-api_people-profile-api_with-python-examples/). The key difference lies in latency and data completeness. Proxycurl's Person Profile Endpoint performs a live scrape of a profile on each API call, so each call might take a few seconds to complete. To overcome throughput, a developer can launch requests to Proxycurl's API in parallel.</p>
<p>Proxycurl is cost-effective and eliminates most of the headaches involved with pulling data from Professional Social Network—even when compared to the official paid tools available from Professional Social Network, like their own limited API or Professional Social Network Sales Navigator.</p>
<p><a href="https://nubela.co/proxycurl/auth/register?ref=nubela.co">Give Proxycurl a try today</a>.</p>
<p><strong>P.S.</strong> Do you have any questions about Proxycurl or how we scrape data from Professional Social Network and beyond? Reach out to us at “<a href="mailto:hello@nubela.co">hello@nubela.co</a>”, and we would be happy to help.</p>
 ]]></content:encoded>
    </item>

    <item>
        <title><![CDATA[ Introducing Work Email Data (+ other QOL improvements) ]]></title>
        <description><![CDATA[ I am happy to introduce to you today a new NinjaPear API Endpoint—the Work Email Endpoint. The Work Email Endpoint takes in a person&#39;s name and the company where they work, for which a work email is returned on a best-effort basis.


This API Endpoint takes special ]]></description>
        <link>https://nubela.co/blog/introducing-work-email/</link>
        <guid isPermaLink="false">69e87e7f0cfe430001d29d45</guid>
        <category><![CDATA[ ninjapear ]]></category>
        <dc:creator><![CDATA[ Steven Goh | CEO ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2019/05/square.jpg"/>
        <pubDate>Wed, 22 Apr 2026 15:57:02 +0800</pubDate>
        <media:content url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2026/04/workemail.png" medium="image"/>
        <content:encoded><![CDATA[ <p>I am happy to introduce to you today a new NinjaPear API Endpoint—the <a href="https://nubela.co/docs?ref=nubela.co#work-email-endpoint">Work Email Endpoint</a>. The Work Email Endpoint takes in a person's name and the company where they work, for which a work email is returned on a best-effort basis.</p>
<p>This API Endpoint takes special care not to read from private or proprietary datasets, and only from public sources, while doing its best to return a valid work email address. We do so as not to violate privacy laws or breach the Terms of Use or User Agreement of any sites.</p>
<p>That said, let me put it out there first: there are better contact enrichment services out there. But read on to find out the narrow use cases for which you should use NinjaPear's.</p>
<h2 id="how-well-does-it-work">How well does it work?</h2>
<p>To give you a transparent look at what to expect, we ran a fulfillment test across 20 diverse profiles. Our goal wasn't just to see if the API returns data, but to see how it handles real-world scenarios, including obscure domains and legacy companies.</p>
<h3 id="performance-summary">Performance Summary</h3>
<ul>
<li><strong>Fulfillment Rate:</strong> 65% (13/20)</li>
<li><strong>Reliability:</strong> 100% (All 20 calls returned HTTP 200; no technical errors)</li>
<li><strong>Average Latency:</strong> ~9.3 seconds</li>
</ul>
<h3 id="fulfillment-test-results-n20">Fulfillment Test Results (n=20)</h3>
<table>
<thead>
<tr>
<th><strong>#</strong></th>
<th><strong>Name</strong></th>
<th><strong>Domain</strong></th>
<th><strong>Result</strong></th>
<th><strong>Latency</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>Matt Aitken</td>
<td>residencesontheavenue.com</td>
<td>MISS</td>
<td>10.0 s</td>
</tr>
<tr>
<td>2</td>
<td>Christian Floisand</td>
<td>helcim.com</td>
<td><code>c********@helcim.com</code></td>
<td>10.6 s</td>
</tr>
<tr>
<td>3</td>
<td>Michael Komosinski</td>
<td>amplify.com</td>
<td><code>m**********@amplify.com</code></td>
<td>11.2 s</td>
</tr>
<tr>
<td>4</td>
<td>Pradeep Baliga</td>
<td>paypal.com</td>
<td><code>p******@paypal.com</code></td>
<td>8.7 s</td>
</tr>
<tr>
<td>5</td>
<td>Chuck Anthony</td>
<td>silverbullet.ac</td>
<td>MISS</td>
<td>8.6 s</td>
</tr>
<tr>
<td>6</td>
<td>Ryan Huber</td>
<td>defined.net</td>
<td><code>r***@defined.net</code></td>
<td>10.8 s</td>
</tr>
<tr>
<td>7</td>
<td>Pieter van der Does</td>
<td>adyen.com</td>
<td><code>p**********@adyen.com</code></td>
<td>8.6 s</td>
</tr>
<tr>
<td>8</td>
<td>Ravi Hubbly</td>
<td>exploredigits.com</td>
<td><code>r*******@exploredigits.com</code></td>
<td>8.8 s</td>
</tr>
<tr>
<td>9</td>
<td>Mihai Chiorean</td>
<td>cash.app</td>
<td><code>m********@cash.app</code></td>
<td>11.6 s</td>
</tr>
<tr>
<td>10</td>
<td>Dave Wiskus</td>
<td>standard.com</td>
<td>MISS</td>
<td>11.3 s</td>
</tr>
<tr>
<td>11</td>
<td>Robert Bollinger</td>
<td>robertbollinger.com</td>
<td><code>r*****@robertbollinger.com</code></td>
<td>9.0 s</td>
</tr>
<tr>
<td>12</td>
<td>Mark Frohnmayer</td>
<td>badhabit.com</td>
<td>MISS</td>
<td>7.8 s</td>
</tr>
<tr>
<td>13</td>
<td>Sergio Buniac</td>
<td>boozallen.com</td>
<td>MISS</td>
<td>8.9 s</td>
</tr>
<tr>
<td>14</td>
<td>Mo Hessabi</td>
<td>metrostar.com</td>
<td><code>m*******@metrostar.com</code></td>
<td>9.7 s</td>
</tr>
<tr>
<td>15</td>
<td>Steven Goh</td>
<td>nubela.co</td>
<td><code>s*****@nubela.co</code></td>
<td>0.3 s (Cache)</td>
</tr>
<tr>
<td>16</td>
<td>Tim Beard</td>
<td>silverbullet.md</td>
<td>MISS</td>
<td>12.2 s</td>
</tr>
<tr>
<td>17</td>
<td>Lucas Salisbury</td>
<td>fastspring.com</td>
<td><code>l*********@fastspring.com</code></td>
<td>9.0 s</td>
</tr>
<tr>
<td>18</td>
<td>Charles Cao</td>
<td>ibm.com</td>
<td><code>c**********@ibm.com</code></td>
<td>9.7 s</td>
</tr>
<tr>
<td>19</td>
<td>Ignacio Llorente</td>
<td>sun.com</td>
<td>MISS</td>
<td>9.5 s</td>
</tr>
<tr>
<td>20</td>
<td>David Nachman</td>
<td>fastspring.com</td>
<td><code>d*******@fastspring.com</code></td>
<td>9.5 s</td>
</tr>
</tbody>
</table>
<h2 id="there-are-other-better-tools-out-there-for-contact-enrichment">There are other, better tools out there for contact enrichment</h2>
<p>I'm going to be honest: Apollo or Clay will be infinitely better contact enrichment tools. NinjaPear isn't trying to be a contact enrichment product. We built the Work Email Endpoint simply because it is convenient for our users, and for those who want contact data strictly via public sources and not fished out from Chrome Extensions hooking into private Gmail accounts, like what Clearbit used to do.</p>
<p>In other words, use the Work Email Endpoint only if you do not already have access to better enrichment tools and you want 100% kosher contact data so that when a contact asks how you got their email, you can confidently say:</p>
<blockquote>
<p>Hey, I found your email on the public web. You had either posted it somewhere in cleartext or your company has a known email pattern.</p>
</blockquote>
<p>That said, honest to goodness: I built this because we are building out our AI agentic outbound sales / cold email pipeline and this was a missing piece. In fact, if you see our Competitors Listing Endpoint and Similar People Endpoint, you can see how we are gradually building out our own prospecting capabilities for our agentic pipelines ;)</p>
<h2 id="how-much-does-the-work-email-endpoint-cost">How much does the Work Email Endpoint cost?</h2>
<p>It costs <code>2</code> credits on a successful lookup—whenever we actually return something useful—and <code>0.5</code> credits if we return nothing. We charge a token amount to prevent denial-of-service attacks and also to cover our costs because we are performing live scraping and LLM calls on every API call. (See, we do not read from a contact database like the other guys).</p>
<h2 id="look-up-companies-by-name-instead-of-website">Look up companies by name instead of website</h2>
<p>A lot of customers have reached out asking if they can use a company name because they do not have the company website to perform various API calls. Well, as of today, yes you can!</p>
<p>For most API endpoints that take a company website, you can now provide a company name instead, whereby we will automagically look up the company's website. However, we still very much prefer that you use a website instead simply because it is more precise. There are many companies with the same or similar names globally, and NinjaPear works worldwide!</p>
<p>These are the API endpoints that now accept company names instead of a company website input:</p>
<ul>
<li><a href="https://nubela.co/docs?ref=nubela.co#customer-listing-endpoint">Customer Listing Endpoint</a></li>
<li><a href="https://nubela.co/docs?ref=nubela.co#competitor-listing-endpoint">Competitor Listing Endpoint</a></li>
<li><a href="https://nubela.co/docs?ref=nubela.co#company-details-endpoint">Company Details Endpoint</a></li>
<li><a href="https://nubela.co/docs?ref=nubela.co#employee-count-endpoint">Employee Count Endpoint</a></li>
<li><a href="https://nubela.co/docs?ref=nubela.co#company-updates-endpoint">Company Updates Endpoint</a></li>
<li><a href="https://nubela.co/docs?ref=nubela.co#company-funding-endpoint">Company Funding Endpoint</a></li>
<li><a href="https://nubela.co/docs?ref=nubela.co#person-profile-endpoint">Person Profile Endpoint</a></li>
<li><a href="https://nubela.co/docs?ref=nubela.co#similar-people-endpoint">Similar People Endpoint</a></li>
</ul>
<h2 id="what-is-on-the-horizon">What is on the horizon</h2>
<p>We have recently started mapping every damn product and service of all businesses worldwide into a giant database that you can look up. In other words, I want you to know that product data is coming soon, amongst others. I will keep you posted. I'm excited about this.</p>
<p>Because just think about it: short of a Google search and doing it manually, how can you find a "CRM that has OAuth and Gmail integration, with PAYG options" instantly? There exists AI deep research which will send an agent to make a web search and trawl the sites, but it will still only perform a top <code>N</code> SERP result crawl and not go deeper. I'm excited about this!</p>
<p>On top of that, there is something we're doing on the B2C front that will be a multi-year endeavor. I'll keep you posted on this too.</p>
<p>Questions? Send us an email at <a href="mailto:hello@nubela.co">hello@nubela.co</a>!</p>
 ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ Is Scraping LinkedIn Legal in 2026? (I Was Sued by LinkedIn) ]]></title>
        <description><![CDATA[ TL;DR


If you&#39;re asking is scraping LinkedIn legal in 2026, the narrow answer is: scraping public LinkedIn data is not automatically criminal under the CFAA after hiQ. The useful answer, the one that matters if you run a company, buy data, or build product on top of ]]></description>
        <link>https://nubela.co/blog/is-scraping-linkedin-legal-in-2026/</link>
        <guid isPermaLink="false">69e198be44d9df00016fef87</guid>
        <category><![CDATA[ is scraping linkedin legal ]]></category>
        <dc:creator><![CDATA[ Steven Goh | CEO ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2019/05/square.jpg"/>
        <pubDate>Fri, 17 Apr 2026 10:19:42 +0800</pubDate>
        <media:content url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2026/04/cover_11.webp" medium="image"/>
        <content:encoded><![CDATA[ 
<!--kg-card-begin: html-->
<h2 id="tldr">TL;DR</h2>
<p>If you're asking <strong>is scraping LinkedIn legal in 2026</strong>, the narrow answer is: scraping <em>public</em> LinkedIn data is not automatically criminal under the CFAA after <em>hiQ</em>. The useful answer, the one that matters if you run a company, buy data, or build product on top of it, is harsher: <strong>legal does not mean safe</strong>. LinkedIn can still drag you into a civil lawsuit, use its User Agreement against you, demand your code, your downstream data, your customer list, and a couple years of your life. I know because I was sued by LinkedIn, and Proxycurl and I have since settled.</p>
<blockquote>
<p>“Just because it is legal doesn't mean that LinkedIn won't have any recourse. The TOS are a contract and if they can prove damages because Apollo and Seamless violated that contract they may have a claim against them.”</p>
</blockquote>
<blockquote class="reddit-embed-bq" style="height:316px" data-embed-height="316">
<a href="https://www.reddit.com/r/sales/comments/1j5uyjm/apollo_and_seamless_booted_from_linkedin/?ref=nubela.co">Apollo and Seamless booted from LinkedIn?</a><br> by
<a href="https://www.reddit.com/user/Far_Tomorrow7860/?ref=nubela.co">u/Far_Tomorrow7860</a> in
<a href="https://www.reddit.com/r/sales/?ref=nubela.co">r/sales</a>
</blockquote>
<script async="" src="https://embed.reddit.com/widgets.js" charset="UTF-8"></script>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<div class="lead-magnet-cta" style="border:1px solid #e0e0e0;border-radius:8px;padding:20px;margin:24px 0;background:#f8f9fb;">
<strong>📥 Free download: LinkedIn Data Risk Checklist for Founders and Buyers</strong><br>
<span style="color:#555;">A practical audit checklist to find LinkedIn-derived data hiding in your vendors, browser tools, databases, model pipelines, and Git history.</span><br>
<a href="https://f000.backblazeb2.com/file/agent-pub-filestore/linkedin-data-risk-checklist-3e3b074c.pdf?ref=nubela.co" style="display:inline-block;margin-top:10px;padding:8px 14px;background:#1d70b8;color:#fff;border-radius:6px;text-decoration:none;">Download now →</a>
</div>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<table>
<thead>
<tr>
<th>Factor</th>
<th>Public scraping after <em>hiQ</em></th>
<th>Buying from a broker</th>
<th>Building on LinkedIn-derived data</th>
<th>Winner</th>
</tr>
</thead>
<tbody>
<tr>
<td>Criminal exposure</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>Tie</td>
</tr>
<tr>
<td>Contract safety</td>
<td>⭐☆☆☆☆</td>
<td>☆☆☆☆☆</td>
<td>☆☆☆☆☆</td>
<td>None</td>
</tr>
<tr>
<td>Civil lawsuit risk</td>
<td>⭐⭐☆☆☆</td>
<td>⭐☆☆☆☆</td>
<td>☆☆☆☆☆</td>
<td>Public scraping, narrowly</td>
</tr>
<tr>
<td>Business durability</td>
<td>☆☆☆☆☆</td>
<td>☆☆☆☆☆</td>
<td>☆☆☆☆☆</td>
<td>None</td>
</tr>
<tr>
<td>Discovery survivability</td>
<td>⭐☆☆☆☆</td>
<td>⭐☆☆☆☆</td>
<td>☆☆☆☆☆</td>
<td>Barely public scraping</td>
</tr>
<tr>
<td>Long-term founder sanity</td>
<td>☆☆☆☆☆</td>
<td>☆☆☆☆☆</td>
<td>☆☆☆☆☆</td>
<td>None</td>
</tr>
<tr>
<td>Overall score</td>
<td><strong>1.86/5</strong></td>
<td><strong>1.14/5</strong></td>
<td><strong>0.71/5</strong></td>
<td><strong>Do not build here</strong></td>
</tr>
</tbody>
</table>
<h2 id="why-im-writing-this">Why I'm writing this</h2>
<p>The day we signed the settlement, I understood something I had spent ~6 years arguing against: there is no version of building on LinkedIn data that is safe. Not scraping, not buying from a broker, not “just enriching.” Not any of it.</p>
<p>I was a named defendant in <em>LinkedIn Corporation v. Nubela Pte. Ltd., Proxycurl LLC, Steven Goh, and Bach Le</em>, filed in the Northern District of California on January 24, 2025, Case No. 3:25-cv-00828. Proxycurl and I have settled the case with LinkedIn. I am not going to relitigate it here, and I'm not going to disclose settlement terms beyond that line.</p>
<p>What I am going to do is tell you what I wish someone had told me in 2019, when I wrote a post titled <em>Is LinkedIn Scraping Legal?</em> on Nubela's blog. That post is still up. I still stand by the narrow CFAA analysis in it. What I no longer stand by is the comforting inference people took from it, namely: “therefore LinkedIn data is safe to build on.” That part was wrong.</p>
<p>And yes, that is a painful sentence to write.</p>
<p>Most founders, RevOps teams, and buyers of B2B data operate on a cartoon version of legal risk. They think the question is binary. Legal or illegal. Fine or not fine. That's not how this works once a real plaintiff with real lawyers shows up.</p>
<h2 id="legal-safe">Legal ≠ Safe</h2>
<p>If you only remember one line from this article, make it this one: <strong>legal is not the same thing as safe</strong>.</p>
<p>When people ask, “is scraping LinkedIn legal,” they usually mean one of four different things and mash them together:</p>
<ol>
<li><strong>Criminal law</strong>: can the state prosecute me?</li>
<li><strong>Civil statutory liability</strong>: can a private plaintiff sue me under a statute, like the CFAA under 18 U.S.C. § 1030(g)?</li>
<li><strong>Contract liability</strong>: did I breach the User Agreement?</li>
<li><strong>Everything else</strong>: unfair competition, misappropriation, trademark, unjust enrichment, the usual kitchen-sink stuff.</li>
</ol>
<p>The case everyone cites is <em>hiQ Labs v. LinkedIn</em>, 31 F.4th 1180 (9th Cir. 2022). What that case actually gave people was a narrow win on a narrow question: scraping <em>public</em> LinkedIn pages did not cleanly fit the CFAA's “without authorization” theory in that posture.</p>
<p>What it did <strong>not</strong> hold:</p>
<ul>
<li>that LinkedIn scraping is generally safe</li>
<li>that contract claims disappear</li>
<li>that California state-law claims disappear</li>
<li>that buying LinkedIn-derived data from someone else saves you</li>
<li>that a cease-and-desist is a joke</li>
</ul>
<p>This is where I need to eat my own cooking a bit.</p>
<p>My 2019 post literally said: <strong>“You'd still have to be compliant with websites' ToS.”</strong> It also said: <strong>“Deal with public [LinkedIn] profiles only? Ok. Scrape [LinkedIn] profiles with fake logged-in accounts? Not ok.”</strong> People remembered the headline. They forgot the caveat. Frankly, I probably underestimated how badly that caveat would matter in the real world.</p>
<p>So if you want the operator answer to <strong>is scraping LinkedIn legal in 2026</strong>, here it is: <em>public scraping may be outside one narrow CFAA theory, but that does not make your business safe from LinkedIn</em>. Those are different questions, and confusing them is how people end up burning years of their life.</p>
<h2 id="the-user-agreement-catches-everyone">The User Agreement catches everyone</h2>
<p>This is the part most people in B2B data have not actually read. They talk about “public data” as if that ends the discussion. It doesn't. The contract is the tripwire.</p>
<h3 id="almost-everyone-reading-this-is-bound-by-it">Almost everyone reading this is bound by it</h3>
<p>LinkedIn's complaint says the platform had over one billion members at the time. If you have a LinkedIn account, had one, or your company has a LinkedIn Page, you almost certainly clicked into a contract.</p>
<p>LinkedIn's current User Agreement says, in plain English, that by creating an account <strong>or accessing or using</strong> the services, you're entering a legally binding contract. This is not subtle. This is not buried in a weird annex. It's up front.</p>
<p>That matters because breach of contract is the cleanest, least romantic claim in the world. No hacking movie soundtrack. No hand-wringing about whether scraping is “theft.” Just: you agreed to this, then you did the thing you said you would not do.</p>
<h3 id="the-agreement-does-not-stop-at-scraping">The Agreement does not stop at scraping</h3>
<p>Most people know there is a scraping clause. Fewer people know there is a <strong>buyer clause</strong>.</p>
<p>From LinkedIn's User Agreement, § 8.2(2):</p>
<blockquote>
<p>“Develop, support or use software, devices, scripts, robots or any other means or processes (such as crawlers, browser plugins and add-ons or any other technology) to scrape or copy the Services...”</p>
</blockquote>
<p>Fine. That's the obvious one.</p>
<p>Now read § 8.2(4):</p>
<blockquote>
<p>“Copy, use, display or distribute any information (including content) obtained from the Services, whether directly or through third parties (such as search tools or data aggregators or brokers), without the consent of the content owner...”</p>
</blockquote>
<p>That phrase, <strong>“whether directly or through third parties ... data aggregators or brokers,”</strong> is the line most buyers have never internalized.</p>
<p>If you're a LinkedIn member and you bought a CSV, enrichment feed, or “professional contacts” dataset from a broker, and any of that came from LinkedIn, LinkedIn has a very obvious place to point in its contract. Public or not public does not save you there. “We bought it from a vendor” does not save you there. “The vendor is outside the US” does not save you there.</p>
<p>Then there is § 8.2(11):</p>
<blockquote>
<p>“Rent, lease, loan, trade, sell/re-sell or otherwise monetize the Services or related data or access to the same, without LinkedIn's consent.”</p>
</blockquote>
<p>And § 8.2(13):</p>
<blockquote>
<p>“Use bots or other unauthorized automated methods to access the Services...”</p>
</blockquote>
<p>This is not a narrow anti-scraping rule. It's a whole perimeter.</p>
<h3 id="pages-pull-companies-in-too">Pages pull companies in too</h3>
<p>If your company has a LinkedIn Page, congratulations, the company clicked into this too.</p>
<p>The complaint against us walked through Nubela's and Proxycurl's Pages and pointed out that creating a Page required affirmative agreement to LinkedIn's Pages terms, which incorporate the User Agreement. It also used that contract theory, together with forum-selection language, to pull a Singaporean company and a Wyoming LLC into the Northern District of California.</p>
<p>This is the part people skip because it feels administrative. It isn't. Your company page is not just a marketing asset. It's also a signed piece of paper, functionally speaking.</p>
<h3 id="deleting-your-account-does-not-save-you">Deleting your account does not save you</h3>
<p>This one tends to stop people cold.</p>
<p>Section 5 of LinkedIn's User Agreement contains a survival clause. It says the following survive termination: <strong>Sections 4, 6, 7, and 8.2</strong>.</p>
<p>Section 8.2 is the whole “Dos and Don'ts” machinery. Scraping, copying, third-party broker use, resale, bots. All of it.</p>
<p>And Section 6, the governing law and dispute machinery, survives too.</p>
<p>Translation: you do not get to click “close account” and magically un-sign the contract you already signed. If you were bound, the restrictions that matter here can keep traveling with you.</p>
<h3 id="the-practical-consequence">The practical consequence</h3>
<p>If you are, or ever were, a LinkedIn member or Page admin, and you buy, use, resell, or build on LinkedIn-derived data, LinkedIn has a plausible contract story against you.</p>
<p>Notice I said <strong>plausible</strong>. I'm being precise here.</p>
<p>Whether they sue is their business decision. Whether they <em>can</em> build a complaint around it is a different question. And after being the person on the receiving end, I no longer think founders should comfort themselves with the second question.</p>
<blockquote>
<p>“I got logged out of my account and LinkedIn gave me a warning that they detected automation software and I could get banned if it continues. It’s annoying because I wasn’t automating anything but I did delete the Apollo extension asap.”</p>
</blockquote>
<blockquote class="reddit-embed-bq" style="height:316px" data-embed-height="316">
<a href="https://www.reddit.com/r/sales/comments/1j6tuj8/with_the_linkedin_crackdown_on_apollo_seamless/?ref=nubela.co">With the Linkedin crackdown on Apollo, Seamless etc.,what tools do ...</a><br> by
<a href="https://www.reddit.com/user/FreshPrince2308/?ref=nubela.co">u/FreshPrince2308</a> in
<a href="https://www.reddit.com/r/sales/?ref=nubela.co">r/sales</a>
</blockquote>
<script async="" src="https://embed.reddit.com/widgets.js" charset="UTF-8"></script>

<h2 id="what-the-complaint-actually-said">What the complaint actually said</h2>
<p>Abstract legal debates are cute right up until you read a real complaint with your own name in it.</p>
<h3 id="six-claims-stacked">Six claims, stacked</h3>
<p>LinkedIn's complaint against us stacked six claims:</p>
<ol>
<li><strong>Breach of contract</strong></li>
<li><strong>Fraud and deceit</strong> under California Civil Code §§ 1572 and 1710</li>
<li><strong>Computer Fraud and Abuse Act</strong></li>
<li><strong>California Unfair Competition Law</strong> under Bus. &amp; Prof. Code § 17200</li>
<li><strong>Trademark dilution by tarnishment</strong> under the Lanham Act</li>
<li><strong>Misappropriation</strong></li>
</ol>
<p>This matters because even if you think half of that is bullshit, you still have the other half. Federal litigation does not need every claim to be a winner in order to wreck your year.</p>
<h3 id="they-used-my-own-blog-post-against-me">They used my own blog post against me</h3>
<p>This was the most humbling part for me personally.</p>
<p>LinkedIn quoted my own 2019 blog post as an admission against interest. Not a competitor's rant. Not some internal Slack leak. My own published writing.</p>
<p>From Complaint ¶60:</p>
<blockquote>
<p>“Defendants caution that 'lines are blurred should you choose to scrape another's website, without their explicit permission or in disregard of their Terms of Service (ToS). This is where things become a little tricky. Freely extracting data from another site could be argued as trespassing or theft.'”</p>
</blockquote>
<p>From ¶61:</p>
<blockquote>
<p>“Defendants are aware that 'very clear evidence' that scraping is unlawful is 'creation of fake accounts to access otherwise-inaccessible users' data.'”</p>
</blockquote>
<p>And again from ¶61:</p>
<blockquote>
<p>“Defendants aptly summed it up: 'Clearly fraudulent activities are a big no-no in web scraping.'”</p>
</blockquote>
<p>I wrote those lines to be responsible and nuanced. LinkedIn used them to show that I knew the terrain was dangerous.</p>
<p>That's not LinkedIn being sneaky. That's just litigation.</p>
<p>If you run a data company and publicly write about the legal edges of your business, assume every sentence might one day get printed, highlighted, and handed to a judge. Because it might.</p>
<h3 id="the-prayer-for-relief-is-the-scary-part">The prayer for relief is the scary part</h3>
<p>The complaint's prayer for relief is the part founders should read twice.</p>
<p>Complaint ¶121 asked for:</p>
<blockquote>
<p>“An order requiring Defendants to destroy all documents, data, and other items, electronic or otherwise, in their possession, custody, or control, that were wrongfully extracted and copied from LinkedIn's website, along with any data that Defendants have inferred, aggregated, or synthesized as a result of data wrongfully extracted and copied from LinkedIn's website...”</p>
</blockquote>
<p>Then ¶122:</p>
<blockquote>
<p>“An order requiring Defendants to destroy all software code and other instrumentalities for scraping LinkedIn's platform...”</p>
</blockquote>
<p>Then ¶123:</p>
<blockquote>
<p>“An order requiring Defendants to notify all customers that purchased or otherwise acquired access to scraped data from LinkedIn of any decision or award against Defendants..."</p>
</blockquote>
<p>Read ¶121 again. <strong>“Inferred, aggregated, or synthesized.”</strong></p>
<p>That is not just “delete the raw rows.” That reaches downstream derivatives. If your model weights were trained on LinkedIn-derived features, good luck explaining why those weights are spiritually different. If your product dashboards, scores, or enrichment layers were built on top of disputed data, they're in the blast radius too.</p>
<p>This is where people who say “we don't scrape, we just enrich” are kidding themselves.</p>
<h2 id="discovery-is-the-punishment">Discovery is the punishment</h2>
<p>The complaint is the visible part. Discovery is where your life gets expensive.</p>
<h3 id="six-claims-means-six-fishing-lines">Six claims means six fishing lines</h3>
<p>Every claim opens a different line of attack.</p>
<p>Breach of contract? They want evidence you agreed, knew, and breached.</p>
<p>CFAA? They want to talk about authorization, account use, access patterns, infrastructure, proxies, browser flows.</p>
<p>Trademark? They want marketing materials, website copy, extension screenshots, sales collateral.</p>
<p>UCL and misappropriation? Enjoy the broad sweep.</p>
<p>One lawsuit can become six parallel excavations into how your company actually works.</p>
<h3 id="everything-gets-opened-up">Everything gets opened up</h3>
<p>If you have never been close to discovery, here's the operator version.</p>
<p>It means, potentially:</p>
<ul>
<li>every email matching terms like <code>linkedin</code>, <code>scrape</code>, <code>extension</code>, <code>proxy</code>, <code>captcha</code>, <code>sales nav</code></li>
<li>every Slack thread where someone made a cute joke about “borrowing” data</li>
<li>every Git commit touching scrapers, browser automation, parsers, login flows, anti-detection workarounds</li>
<li>every Jira ticket and CI log</li>
<li>every database schema that ever stored a LinkedIn URL, member ID, or copied profile field</li>
<li>every vendor deal with proxy providers, browser farms, CAPTCHA solvers, data brokers</li>
<li>every customer contract tied to those outputs</li>
<li>every old bucket or backup you forgot existed</li>
</ul>
<p>This is why I say legal is not the same as safe. You can have a debate-worthy legal theory and still be completely, utterly unsafe as a business.</p>
<h3 id="the-asymmetry-is-the-point">The asymmetry is the point</h3>
<p>LinkedIn's complaint was signed by Munger, Tolles &amp; Olson.</p>
<p>That matters.</p>
<p>There is an economic asymmetry baked into this system. A company like LinkedIn can spend millions on litigation and keep functioning. A bootstrapped or venture-backed data company can be legally interesting and economically dead at the same time.</p>
<p>Settlement is often not some moral confession. Sometimes it is just arithmetic.</p>
<p>That was true in my world too. I am not going to pretend otherwise.</p>
<h3 id="why-buyers-should-care-too">Why buyers should care too</h3>
<p>If you buy LinkedIn-derived data from a vendor and LinkedIn sues the vendor, you do not get to stay magically offstage.</p>
<p>You can get subpoenaed.</p>
<p>Your procurement emails get read. Your Slack messages get read. Your “do we know where this really comes from?” messages get read. Your diligence process, or lack of one, gets exposed.</p>
<p>The buyer fantasy is that the vendor is the shield. In reality, the vendor is often just the first domino.</p>
<blockquote>
<p>“You will get banned, all your accounts, if you continue to bypass, there will be threat of legal action. it’s not sustainable buisness model.”</p>
</blockquote>
<blockquote class="reddit-embed-bq" style="height:316px" data-embed-height="316">
<a href="https://www.reddit.com/r/n8n/comments/1qdt3si/linked_in_scraping_legal_situation/?ref=nubela.co">Linked In Scraping legal Situation?</a><br> by
<a href="https://www.reddit.com/user/Jaded_Marionberry771/?ref=nubela.co">u/Jaded_Marionberry771</a> in
<a href="https://www.reddit.com/r/n8n/?ref=nubela.co">r/n8n</a>
</blockquote>
<script async="" src="https://embed.reddit.com/widgets.js" charset="UTF-8"></script>

<h2 id="apollo-and-seamless-were-the-warning-shot">Apollo and Seamless were the warning shot</h2>
<p>My case was not the beginning of enforcement. It was one rung on a ladder.</p>
<p>Public reporting from MarTech said that sometime around March 6, 2025, Apollo.io and Seamless.ai disappeared from LinkedIn. LeadGenius and LiGo both wrote about the removals as part of a broader crackdown on scraping and extension-based data extraction.</p>
<p>The important part is not whether every outsider interpretation of motive is perfect. The important part is that <strong>LinkedIn removed official Company Pages without filing a public lawsuit first</strong>.</p>
<p>That tells you a lot.</p>
<p>There is a graduated enforcement ladder here:</p>
<ol>
<li>account restrictions</li>
<li>automation warnings</li>
<li>Page removals</li>
<li>cease-and-desist letters</li>
<li>federal complaint</li>
</ol>
<p>The ladder is real because we have seen multiple rungs in the wild.</p>
<p>And once you understand that ladder, the question <strong>is scraping LinkedIn legal in 2026</strong> starts sounding childish. Sorry, but it does. The adult question is: <em>what can LinkedIn do to me, contractually and operationally, before I ever get a chance to win an argument on the merits?</em></p>
<p>That answer is: quite a lot.</p>
<blockquote>
<p>“Apollo &amp; Seamless had their entire company pages deleted from Linkedin yesterday for violating their terms of service by scraping data”</p>
</blockquote>
<blockquote class="reddit-embed-bq" style="height:316px" data-embed-height="316">
<a href="https://www.reddit.com/r/sales/comments/1j6tuj8/with_the_linkedin_crackdown_on_apollo_seamless/?ref=nubela.co">With the Linkedin crackdown on Apollo, Seamless etc.,what tools do ...</a><br> by
<a href="https://www.reddit.com/user/FreshPrince2308/?ref=nubela.co">u/FreshPrince2308</a> in
<a href="https://www.reddit.com/r/sales/?ref=nubela.co">r/sales</a>
</blockquote>
<script async="" src="https://embed.reddit.com/widgets.js" charset="UTF-8"></script>

<p>And if you want the market's blunt version, here's one from X:</p>
<blockquote class="twitter-tweet"><p lang="en" dir="ltr">LinkedIn has no official MCP server. While clever, this is a browser scraper using your credentials, one LinkedIn policy change from breaking, and one ToS violation from getting your account banned. Cool hack. Risky business tool.</p>&mdash; Mister Lee (@MisterLeeHODL) <a href="https://x.com/MisterLeeHODL/status/2043467209087787289?ref=nubela.co">Sun Apr 12 23:12:03 +0000 2026</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

<p>I think that post is basically right.</p>
<p>Cool hack. Risky business tool.</p>
<h2 id="the-only-safe-path-is-data-without-linkedin">The only safe path is data without LinkedIn</h2>
<p>This is the point where I stopped arguing the other side.</p>
<p>If you are building, using, or scaling with B2B data, the only durable path I trust now is: <strong>use data that does not have LinkedIn as a source</strong>.</p>
<p>Not “mostly not.” Not “not directly.” Not “we only use it for enrichment.”</p>
<p>Not at all.</p>
<h3 id="what-no-linkedin-data-actually-means">What no LinkedIn data actually means</h3>
<p>This standard is stricter than most founders want to hear.</p>
<p>It means:</p>
<ul>
<li>no LinkedIn-sourced rows in production, staging, dev, or notebooks</li>
<li>no LinkedIn URLs, member IDs, or copied profile fields in code paths</li>
<li>no LinkedIn content in training data, prompt corpora, eval sets, or fine-tuning runs</li>
<li>no browser extensions touching <code>linkedin.com</code></li>
<li>no vendor whose vendor touched LinkedIn</li>
<li>no old Git blobs with scraper code “but we deleted that months ago”</li>
<li>no archived backups you are hoping nobody asks about</li>
</ul>
<p>Because here's the problem: once the bell has been rung, you do not get to unring it.</p>
<p>If your model has seen the data, the provenance problem is now inside the model. If your customer-facing product is downstream of it, the problem moved downstream with it.</p>
<p>This is exactly why a clean-room posture is so much cheaper than a litigated cleanup.</p>
<h3 id="why-im-building-ninjapear-this-way">Why I'm building NinjaPear this way</h3>
<p>I am building NinjaPear with a zero-LinkedIn-data posture. Not as a marketing gimmick. As a survival rule.</p>
<p>NinjaPear is a B2B company intelligence platform, and the whole point is that it is built on other lawful, durable, public-web and first-party style signals, not on LinkedIn. If I mention products here, it is only because they reflect that posture: the <a href="https://nubela.co/customers?ref=nubela.co">Customer Listing API</a> maps customer and partner relationships from the public web, and the <a href="https://nubela.co/docs/?ref=nubela.co">NinjaPear docs</a> are explicit about data ownership and ethical sourcing.</p>
<p>I'm not interested in clever workarounds anymore.</p>
<p>I did the clever phase already.</p>
<p>Now I care about whether a company can still exist in 10 years.</p>
<p>And for me, after being sued, the answer is straightforward: if LinkedIn data touched the building, the company has a timer on it.</p>
<p>One more thing, because people always ask this after I explain the posture.</p>
<p>Neither NinjaPear nor I maintain a LinkedIn profile now. No member account. No Company Page. No Showcase Page. Nothing.</p>
<p>The reason is not that we want to scrape LinkedIn. We do not. The reason is simpler: the User Agreement is broad enough, and survives long enough, that the only exposure level I trust is zero.</p>
<p>Some people will call that excessive. Fine.</p>
<p>After living through a real complaint, “excessive” is the first level of caution I actually believe.</p>
<h2 id="my-actual-answer">My actual answer</h2>
<p>So, <strong>is scraping LinkedIn legal in 2026</strong>?</p>
<p>My answer is this:</p>
<ul>
<li><strong>Narrow legal answer</strong>: scraping public LinkedIn pages is not automatically criminal under the CFAA after <em>hiQ</em>.</li>
<li><strong>Real founder answer</strong>: no version of building on LinkedIn data is safe.</li>
<li><strong>Buyer answer</strong>: buying it from a broker does not magically clean the provenance.</li>
<li><strong>Operator answer</strong>: the User Agreement is the trap, discovery is the punishment, and the business risk is bigger than the headline legal question.</li>
</ul>
<p>If you are already using LinkedIn-derived data, assume LinkedIn's lawyers walk into your office tomorrow and subpoena everything.</p>
<p>Ask yourself four ugly questions:</p>
<ol>
<li>Can you prove where every row came from?</li>
<li>Can you state under oath whether your models saw LinkedIn-derived data?</li>
<li>Can you notify every affected customer if forced to?</li>
<li>Can your runway survive discovery?</li>
</ol>
<p>If those questions make your stomach tighten, that is your answer.</p>
<p>This article is not legal advice. Talk to your own counsel for your own situation. But from one operator to another, I can tell you this much with more conviction than I had in 2019: <strong>do not build your company on LinkedIn data</strong>.</p>
<p>If you need a practical next step, audit your stack this week. Vendors, extensions, CRM fields, model inputs, old buckets, Git history, all of it. Start with the checklist below.</p>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<div class="lead-magnet-cta" style="border:1px solid #e0e0e0;border-radius:8px;padding:20px;margin:24px 0;background:#f8f9fb;">
<strong>📥 Free download: LinkedIn Data Risk Checklist for Founders and Buyers</strong><br>
<span style="color:#555;">Use it to audit browser extensions, vendor provenance, database fields, training data, backups, and customer exposure before somebody else does it for you.</span><br>
<a href="https://f000.backblazeb2.com/file/agent-pub-filestore/linkedin-data-risk-checklist-3e3b074c.pdf?ref=nubela.co" style="display:inline-block;margin-top:10px;padding:8px 14px;background:#1d70b8;color:#fff;border-radius:6px;text-decoration:none;">Download now →</a>
</div>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<p>If you're building a data product from scratch, start with sources that do not route through LinkedIn at all. That is the only posture I trust now. It is the posture I'm building with NinjaPear, and it is the one I would recommend to any founder I actually like.</p>
<hr />
<h3 id="references">References</h3>
<ol>
<li>Nubela, <em>Is LinkedIn Scraping Legal?</em> https://nubela.co/blog/is-linkedin-scraping-legal/</li>
<li><em>hiQ Labs, Inc. v. LinkedIn Corp.</em>, 31 F.4th 1180 (9th Cir. 2022).</li>
<li><em>LinkedIn Corporation v. Nubela Pte. Ltd., Proxycurl LLC, Steven Goh, and Bach Le</em>, Case No. 3:25-cv-00828, Complaint (N.D. Cal. Jan. 24, 2025). Matter subsequently settled.</li>
<li>LinkedIn User Agreement, effective Nov. 20, 2024. https://www.linkedin.com/legal/user-agreement</li>
<li>LeadGenius, <em>LinkedIn’s Crackdown on Data Scrapers: Why Apollo.io and Seamless.ai Were Targeted, and Who’s Next?</em> https://www.leadgenius.com/resources/linkedins-crackdown-on-data-scrapers-why-apollo-io-and-seamless-ai-were-targeted--and-whos-next</li>
<li>LiGo, <em>LinkedIn Bans Apollo &amp; Seamless: Major Data Scraping Crackdown</em> https://ligosocial.com/blog/linkedins-major-crackdown-on-data-scraping-apollo-and-seamless-company-pages-gone</li>
<li>18 U.S.C. § 1030. https://www.law.cornell.edu/uscode/text/18/1030</li>
</ol>
<!--kg-card-end: html-->
 ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ Ultimate Guide to Lookalike Prospecting (Code Snippets + GitHub Project) ]]></title>
        <description><![CDATA[ Agentic Prospecting Playground
Static examples, real NinjaPear-shaped payloads. Enter a company site or work email, switch loops, and inspect the request, response, normalized model, and next action.

Competitor → Customers
CRM Account → Competitors
CRM Contact → Similar People
Company → Updates



Company website



CRM contact work email





Sample curl request





Copy curl


Sample ]]></description>
        <link>https://nubela.co/blog/look-alike-prospecting/</link>
        <guid isPermaLink="false">69e0c8e044d9df00016fef7b</guid>
        <category><![CDATA[ look alike prospecting ]]></category>
        <dc:creator><![CDATA[ Alex Meyer ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2026/04/alex.png"/>
        <pubDate>Thu, 16 Apr 2026 19:32:48 +0800</pubDate>
        <media:content url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2026/04/cover_10.webp" medium="image"/>
        <content:encoded><![CDATA[ 
<!--kg-card-begin: html-->
<div style="border:1px solid #e5e7eb;border-radius:12px;padding:18px;margin:20px 0;background:#0f172a;color:#e5eefc;max-height:760px;overflow:auto;">
  <div style="font-size:20px;font-weight:700;margin-bottom:12px;">Agentic Prospecting Playground</div>
  <div style="font-size:13px;color:#cbd5e1;margin-bottom:14px;">Static examples, real NinjaPear-shaped payloads. Enter a company site or work email, switch loops, and inspect the request, response, normalized model, and next action.</div>
  <div style="display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px;">
    <button onclick="switchLoop('customers')" id="tab-customers" style="padding:8px 12px;border-radius:8px;border:1px solid #334155;background:#7c3aed;color:#fff;cursor:pointer;">Competitor → Customers</button>
    <button onclick="switchLoop('competitors')" id="tab-competitors" style="padding:8px 12px;border-radius:8px;border:1px solid #334155;background:#1e293b;color:#fff;cursor:pointer;">CRM Account → Competitors</button>
    <button onclick="switchLoop('people')" id="tab-people" style="padding:8px 12px;border-radius:8px;border:1px solid #334155;background:#1e293b;color:#fff;cursor:pointer;">CRM Contact → Similar People</button>
    <button onclick="switchLoop('updates')" id="tab-updates" style="padding:8px 12px;border-radius:8px;border:1px solid #334155;background:#1e293b;color:#fff;cursor:pointer;">Company → Updates</button>
  </div>
  <div style="display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:14px;">
    <div>
      <label style="display:block;font-size:13px;color:#cbd5e1;margin-bottom:6px;">Company website</label>
      <input id="companyInput" value="https://stripe.com" style="width:100%;padding:10px;border-radius:8px;border:1px solid #334155;background:#111827;color:#fff;" />
    </div>
    <div>
      <label style="display:block;font-size:13px;color:#cbd5e1;margin-bottom:6px;">CRM contact work email</label>
      <input id="emailInput" value="[email protected]" style="width:100%;padding:10px;border-radius:8px;border:1px solid #334155;background:#111827;color:#fff;" />
    </div>
  </div>
  <div style="display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:14px;margin-top:16px;">
    <div style="background:#111827;border:1px solid #334155;border-radius:10px;padding:14px;">
      <div style="font-weight:700;margin-bottom:8px;">Sample curl request</div>
      <pre id="curlBox" style="white-space:pre-wrap;overflow:auto;background:#020617;padding:12px;border-radius:8px;color:#93c5fd;max-height:220px;"></pre>
      <button onclick="copyFrom('curlBox')" style="margin-top:8px;padding:8px 10px;border:none;border-radius:6px;background:#2563eb;color:#fff;cursor:pointer;">Copy curl</button>
    </div>
    <div style="background:#111827;border:1px solid #334155;border-radius:10px;padding:14px;">
      <div style="font-weight:700;margin-bottom:8px;">Sample Python snippet</div>
      <pre id="pythonBox" style="white-space:pre-wrap;overflow:auto;background:#020617;padding:12px;border-radius:8px;color:#86efac;max-height:220px;"></pre>
      <button onclick="copyFrom('pythonBox')" style="margin-top:8px;padding:8px 10px;border:none;border-radius:6px;background:#2563eb;color:#fff;cursor:pointer;">Copy Python</button>
    </div>
    <div style="background:#111827;border:1px solid #334155;border-radius:10px;padding:14px;">
      <div style="font-weight:700;margin-bottom:8px;">Sample JSON response</div>
      <pre id="jsonBox" style="white-space:pre-wrap;overflow:auto;background:#020617;padding:12px;border-radius:8px;color:#fca5a5;max-height:320px;"></pre>
    </div>
    <div style="background:#111827;border:1px solid #334155;border-radius:10px;padding:14px;">
      <div style="font-weight:700;margin-bottom:8px;">Normalized Pydantic model</div>
      <pre id="modelBox" style="white-space:pre-wrap;overflow:auto;background:#020617;padding:12px;border-radius:8px;color:#fcd34d;max-height:220px;"></pre>
      <div style="font-weight:700;margin:12px 0 6px;">Next agent action</div>
      <div id="actionBox" style="color:#e2e8f0;"></div>
      <div style="font-weight:700;margin:12px 0 6px;">Sample outreach angle</div>
      <div id="angleBox" style="color:#cbd5e1;"></div>
    </div>
  </div>
</div>

<script>
const LOOP_DATA = {
  customers: {
    curl: `curl -G \\
  -H "Authorization: Bearer YOUR_API_KEY" \\
  --data-urlencode "website=https://www.stripe.com" \\
  "https://nubela.co/api/v1/customer/listing"`,
    python: `from src.clients.ninjapear import NinjaPearClient\nfrom src.models import ProspectAccount\n\nclient = NinjaPearClient()\nresponse = client.get_customer_listing("https://stripe.com")\naccounts = [\n    ProspectAccount.from_customer_listing(item, source="customer_listing")\n    for item in response["customers"]\n]`,
    json: {
      customers: [{name:"Apple",description:"Apple Inc. designs, manufactures, and markets smartphones, personal computers, tablets, wearables, and accessories worldwide.",tagline:"Think different.",website:"https://www.apple.com",company_logo_url:"https://nubela.co/api/v1/company/logo?website=https%3A%2F%2Fwww.apple.com",id:"abc123",industry:45202030,specialties:["Technology","Consumer Electronics"],x_profile:"https://x.com/Apple"}],
      investors: [{name:"Sequoia Capital",website:"https://www.sequoiacap.com",id:"def456",industry:40203010}],
      partner_platforms: [{name:"Amazon Web Services",website:"https://aws.amazon.com",id:"ghi789",industry:45101010}],
      next_page:"https://nubela.co/api/v1/customer/listing?website=https://www.stripe.com&cursor=abc123"
    },
    model: {name:"Apple",website:"https://www.apple.com",industry:"45202030",source:"customer_listing",source_evidence:["Returned by customer_listing","Company id: abc123"],fit_score:0.65,relationship_score:0.85,timing_score:0.25,total_score:0.6225},
    action: "Suppress current customers, churn, partners, and open opps before scoring the new accounts.",
    angle: "You already sell in the same ecosystem as Stripe. That is a better starting point than another dead firmographic clone."
  },
  competitors: {
    curl: `curl -G \\
  -H "Authorization: Bearer YOUR_API_KEY" \\
  --data-urlencode "website=https://www.stripe.com" \\
  "https://nubela.co/api/v1/competitor/listing"`,
    python: `from src.clients.ninjapear import NinjaPearClient\nfrom src.scoring import score_account\n\nclient = NinjaPearClient()\n\nfor website in seed_account_websites:\n    competitors = client.get_competitor_listing(website)\n    for comp in competitors["competitors"]:\n        scored = score_account(comp, source="competitor_listing")\n        if scored.total_score >= 0.72:\n            save_candidate(scored)`,
    json: {competitors:[{name:"Adyen",website:"https://www.adyen.com",description:"Financial technology platform for enterprise businesses.",competition_type:"product_category_overlap",reason:"Both companies offer payment infrastructure and enterprise checkout products.",industry:40204010},{name:"PayPal",website:"https://www.paypal.com",description:"Digital payments platform for consumers and merchants.",competition_type:"organic_seo_overlap",reason:"Both companies rank for overlapping payments-related organic search terms.",industry:40204010}],next_page:null},
    model: {name:"Adyen",website:"https://www.adyen.com",source:"competitor_listing",source_evidence:["competition_type=product_category_overlap","reason=Both companies offer payment infrastructure and enterprise checkout products."],fit_score:0.7,relationship_score:0.72,timing_score:0.2,total_score:0.582},
    action: "Merge competitor sets across closed-won seeds, dedupe by root domain, then keep evidence attached to every saved account.",
    angle: "You compete for the same budget and product category as accounts we already closed. That expansion path is usually cleaner than spraying the TAM."
  },
  people: {
    curl: `curl -G \\
  -H "Authorization: Bearer YOUR_API_KEY" \\
  --data-urlencode "work_email=[email protected]" \\
  "https://nubela.co/api/v1/employee/similar"`,
    python: `from src.clients.ninjapear import NinjaPearClient\nfrom src.models import ProspectPerson\n\nclient = NinjaPearClient()\n\nfor work_email in customer_contact_emails:\n    similar_people = client.get_similar_people(work_email=work_email)\n    for person in similar_people["results"]:\n        prospect = ProspectPerson.from_similar_person(person)\n        if not is_suppressed_person(prospect):\n            save_person(prospect)`,
    json: {results:[{full_name:"Will Cannon",first_name:"Will",last_name:"Cannon",bio:"Founder building B2B lead generation software.",work_email:"[email protected]",role:"Founder & CEO",company_name:"UpLead",company_website:"https://uplead.com",city:"Walnut",country:"US",x_handle:"willcannon",input_role:"Founder & CEO"},{full_name:"Henry Schuck",first_name:"Henry",last_name:"Schuck",bio:"CEO building go-to-market software.",work_email:"[email protected]",role:"CEO & Chairman",company_name:"ZoomInfo",company_website:"https://zoominfo.com",city:"Vancouver",country:"US",x_handle:null,input_role:"Founder & CEO"}]},
    model: {full_name:"Will Cannon",work_email:"[email protected]",company_website:"https://uplead.com",role:"Founder & CEO",source:"similar_people",source_evidence:["Matched as similar person to Founder & CEO"],account_score:0.76,person_score:0.8},
    action: "Map the person back to the scored account universe. If the account is weak, do not ship the contact just because the title looks expensive.",
    angle: "Hey! Your competitor from Company X just joined NinjaPear. It happens that NinjaPear has a feature to extract customers of your company. Would you like to join NinjaPear to also gain an edge against your competitors?"
  },
  updates: {
    curl: `curl -G \\
  -H "Authorization: Bearer YOUR_API_KEY" \\
  --data-urlencode "website=https://example.com" \\
  "https://nubela.co/api/v1/company/updates"`,
    python: `from src.clients.ninjapear import NinjaPearClient\nfrom src.outreach import draft_outreach\n\nclient = NinjaPearClient()\n\nupdates = client.get_company_updates("https://example.com")\nfor event in updates["results"]:\n    if event["category"] in {"website update", "blog", "x"}:\n        draft = draft_outreach(account, event)\n        save_draft(draft)`,
    json: {results:[{title:"Pricing page updated, new Enterprise tier added",link:"https://example.com/pricing",category:"website update",pub_date:"Thu, 27 Feb 2026 07:00:00 GMT",summary:"Enterprise packaging was added to the pricing page."},{title:"Announcing global payments expansion",link:"https://example.com/blog/global-payments",category:"blog",pub_date:"Thu, 27 Feb 2026 10:00:00 GMT",summary:"The company announced broader market coverage for payments."}]},
    model: {subject:"Saw this at ExampleCo",body:"Saw the update: Pricing page updated, new Enterprise tier added. Usually that means the team is changing packaging, priorities, or buyer motion.",evidence:["Returned in customer listing for Stripe","Trigger: Pricing page updated, new Enterprise tier added"],confidence:0.78,requires_review:true},
    action: "Rank accounts that already look good. Trigger data is prioritization, not magic prospect creation.",
    angle: "Saw the new Enterprise tier on your pricing page. Usually that means packaging, buyer motion, or sales ownership is shifting. Worth comparing notes?"
  }
};
function renderLoop(key){
  const d = LOOP_DATA[key];
  document.getElementById('curlBox').textContent = d.curl;
  document.getElementById('pythonBox').textContent = d.python;
  document.getElementById('jsonBox').textContent = JSON.stringify(d.json, null, 2);
  document.getElementById('modelBox').textContent = JSON.stringify(d.model, null, 2);
  document.getElementById('actionBox').textContent = d.action;
  document.getElementById('angleBox').textContent = d.angle;
  ['customers','competitors','people','updates'].forEach(name => {
    document.getElementById('tab-' + name).style.background = name === key ? '#7c3aed' : '#1e293b';
  });
}
function switchLoop(key){ renderLoop(key); }
function copyFrom(id){ navigator.clipboard.writeText(document.getElementById(id).textContent); }
renderLoop('customers');
</script>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<p>A customer sought out recommendations for his problem: <strong>“I have been experimenting with NinjaPear using my AI agents to find investors and leads for my company.”</strong> In this article, I’m going to show you how to build a full <strong>agentic lead generation system</strong> with <strong>PydanticAI</strong>, <strong>NinjaPear</strong>, and a small set of supporting tools, including the exact 4 loops, the code structure, and the GitHub project you can ship.</p>
<blockquote>
<p>“still shows people at companies they left months ago, titles are outdated, emails bouncing even after running verification. spending more time cleaning lists than actually doing outreach.”</p>
</blockquote>
<blockquote class="reddit-embed-bq" style="height:316px" data-embed-height="316"><a href="https://www.reddit.com/r/Sales_Professionals/comments/1sdjgbp/cant_use_apollo_anymore_whats_a_better/?ref=nubela.co">Can't use Apollo anymore, whats a better alternative for prospecting?</a><br> by <a href="https://www.reddit.com/user/executivegtm-47/?ref=nubela.co">u/executivegtm-47</a> in <a href="https://www.reddit.com/r/Sales_Professionals/?ref=nubela.co">Sales_Professionals</a></blockquote>
<script async="" src="https://embed.reddit.com/widgets.js" charset="UTF-8"></script>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<div class="github-cta" style="border:1px solid #e0e0e0;border-radius:8px;padding:20px;margin:24px 0;background:#f6f8fa;">
<strong>💻 Full code on GitHub: look-alike-prospecting</strong><br>
<span style="color:#555;">A runnable starter repo with the 4 loops, Pydantic models, sample NinjaPear-shaped payloads, CSV seeds, suppressions, and tests.</span><br>
<code style="display:inline-block;margin-top:10px;padding:6px 10px;background:#eaecef;border-radius:4px;font-family:monospace;font-size:13px;">git clone https://github.com/NinjaPear-Shares/look-alike-prospecting.git</code><br>
<a href="https://github.com/NinjaPear-Shares/look-alike-prospecting?ref=nubela.co" style="display:inline-block;margin-top:10px;padding:8px 14px;background:#24292f;color:#fff;border-radius:6px;text-decoration:none;">View on GitHub →</a>
</div>

<div class="lead-magnet-cta" style="border:1px solid #e0e0e0;border-radius:8px;padding:20px;margin:24px 0;background:#f8f9fb;">
<strong>📥 Free download: Agentic Lookalike Prospecting Starter Kit</strong><br>
<span style="color:#555;">A real XLSX workbook with seed templates, suppression sheets, scoring defaults, experiment tracking, and the outreach prompt rules from this guide.</span><br>
<a href="https://f000.backblazeb2.com/file/agent-pub-filestore/agentic-lookalike-prospecting-starter-kit-fa7c03a3.xlsx?ref=nubela.co" style="display:inline-block;margin-top:10px;padding:8px 14px;background:#1d70b8;color:#fff;border-radius:6px;text-decoration:none;">Download now →</a>
</div>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<h2 id="what-this-guide-does">What this guide does</h2>
<p>This is a developer guide for building <strong>lookalike prospecting</strong> into an agentic SDR system.</p>
<p>It covers four loops:</p>
<ul>
<li><strong>Competitor → Customers</strong>: turn one known company into additive prospect accounts.</li>
<li><strong>CRM Account → Competitors</strong>: widen your account universe from closed-won seeds.</li>
<li><strong>CRM Contact → Similar People</strong>: turn one good contact into many role-adjacent people at relevant companies.</li>
<li><strong>Company → Updates</strong>: rank the best prospects by visible timing signals.</li>
</ul>
<p>That’s what I’m going to walk through, code first, with sample responses, normalization logic, and the operating rules that keep the whole thing from turning into expensive bullshit.</p>
<h2 id="lookalike-prospecting-without-the-bullshit">Lookalike prospecting, without the bullshit</h2>
<p>Lookalike prospecting is just generating new accounts or people that resemble proven wins across <strong>fit, context, and timing</strong>. Not “same employee count” and not “same tech stack, probably.” Most so-called lookalike systems are just firmographic cloning with an AI sticker slapped on top.</p>
<p>They fail for boring reasons. Dirty seeds. Weak signals. No suppression layer. Opaque scoring nobody can defend when a rep asks why some random account got pushed to the top. When I was running FluxoMetric, I burned ~4K/mo on tools that gave me worse targeting logic than a spreadsheet with three weighted columns.</p>
<p>Clean input looks like this: start with <strong>closed-won</strong> first, split by use case, then exclude <strong>customers, churn, open opps, partners, agencies, and test junk</strong> before you enrich anything. A 20-account clean seed beats a 2,000-account dirty seed. Every time.</p>
<p>And the signal hierarchy is not equal. Firmographics are table stakes. Technographics add context. Relationship data is stronger. Trigger data handles timing. In practice, relationship data beats generic similarity most of the time, and trigger data should rank prospects, not create them from thin air.</p>
<blockquote>
<p>“It still shows people listed at companies they left months ago, titles that are outdated and emails bouncing even after running verification”</p>
</blockquote>
<blockquote class="reddit-embed-bq" style="height:316px" data-embed-height="316"><a href="https://www.reddit.com/r/coldemail/comments/1rw3j8a/best_apollo_alternative_for_prospecting_in_2026/?ref=nubela.co">Best Apollo alternative for prospecting in 2026?</a><br> by <a href="https://www.reddit.com/user/BessieFlamboyant/?ref=nubela.co">u/BessieFlamboyant</a> in <a href="https://www.reddit.com/r/coldemail/?ref=nubela.co">coldemail</a></blockquote>
<script async="" src="https://embed.reddit.com/widgets.js" charset="UTF-8"></script>

<h2 id="the-4-agent-loops">The 4 agent loops</h2>
<p>My preferred <strong>lookalike prospecting</strong> system has 4 loops, because each one solves a different problem.</p>
<ol>
<li><strong>Competitor to customers</strong> gives you fast account expansion.</li>
<li><strong>CRM accounts to competitors</strong> gives you the cleanest 0→1 market widening.</li>
<li><strong>CRM contacts to similar people</strong> gives you the real 1→N motion.</li>
<li><strong>Triggers to outreach</strong> gives you timing.</li>
</ol>
<p>Do not jam all four into one giant workflow on day one. That’s how you end up with a fragile automation blob nobody trusts.</p>
<h2 id="loop-1-competitor-to-customers">Loop 1: Competitor to customers</h2>
<p><strong>Problem:</strong> You know a competitor or adjacent company and want a prospect list fast.</p>
<p><strong>Solution:</strong> Use the <a href="https://nubela.co/customers?ref=nubela.co">Customer Listing API</a> to find companies already buying from that vendor or sitting in its ecosystem. This is the fastest path from one website to a prospect universe that doesn’t feel made up.</p>
<pre><code class="language-python">from src.clients.ninjapear import NinjaPearClient
from src.models import ProspectAccount

client = NinjaPearClient()
response = client.get_customer_listing(&quot;https://stripe.com&quot;)
accounts = [
    ProspectAccount.from_customer_listing(item, source=&quot;customer_listing&quot;)
    for item in response[&quot;customers&quot;]
]
</code></pre>
<p>Sample response, using the same shape as NinjaPear docs:</p>
<pre><code class="language-json">{
  &quot;customers&quot;: [
    {
      &quot;name&quot;: &quot;Apple&quot;,
      &quot;description&quot;: &quot;Apple Inc. designs, manufactures, and markets smartphones, personal computers, tablets, wearables, and accessories worldwide.&quot;,
      &quot;tagline&quot;: &quot;Think different.&quot;,
      &quot;website&quot;: &quot;https://www.apple.com&quot;,
      &quot;company_logo_url&quot;: &quot;https://nubela.co/api/v1/company/logo?website=https%3A%2F%2Fwww.apple.com&quot;,
      &quot;id&quot;: &quot;abc123&quot;,
      &quot;industry&quot;: 45202030,
      &quot;specialties&quot;: [&quot;Technology&quot;, &quot;Consumer Electronics&quot;],
      &quot;x_profile&quot;: &quot;https://x.com/Apple&quot;
    }
  ],
  &quot;investors&quot;: [
    {
      &quot;name&quot;: &quot;Sequoia Capital&quot;,
      &quot;website&quot;: &quot;https://www.sequoiacap.com&quot;,
      &quot;id&quot;: &quot;def456&quot;,
      &quot;industry&quot;: 40203010
    }
  ],
  &quot;partner_platforms&quot;: [
    {
      &quot;name&quot;: &quot;Amazon Web Services&quot;,
      &quot;website&quot;: &quot;https://aws.amazon.com&quot;,
      &quot;id&quot;: &quot;ghi789&quot;,
      &quot;industry&quot;: 45101010
    }
  ],
  &quot;next_page&quot;: &quot;https://nubela.co/api/v1/customer/listing?website=https://www.stripe.com&amp;cursor=abc123&quot;
}
</code></pre>
<p>The flow is simple:</p>
<ul>
<li>input website</li>
<li>customer list</li>
<li>normalize into <code>ProspectAccount</code></li>
<li>suppress existing CRM accounts</li>
<li>score</li>
</ul>
<p>Expected normalized output:</p>
<pre><code class="language-json">{
  &quot;name&quot;: &quot;Apple&quot;,
  &quot;website&quot;: &quot;https://www.apple.com&quot;,
  &quot;industry&quot;: &quot;45202030&quot;,
  &quot;source&quot;: &quot;customer_listing&quot;,
  &quot;source_evidence&quot;: [
    &quot;Returned by customer_listing&quot;,
    &quot;Company id: abc123&quot;
  ],
  &quot;fit_score&quot;: 0.65,
  &quot;relationship_score&quot;: 0.85,
  &quot;timing_score&quot;: 0.25,
  &quot;total_score&quot;: 0.6225
}
</code></pre>
<p>Outreach angle: <strong>You already sell in the same ecosystem as Stripe. We’re not guessing fit from generic firmographic filters.</strong></p>
<p>A few doc details matter here. The endpoint costs <strong>1 credit per request + 2 credits per company returned</strong>. <code>quality_filter=true</code> is on by default, which filters out junk TLDs and unreachable websites. That one flag alone saves a stupid amount of cleanup.</p>
<h2 id="loop-2-crm-accounts-to-competitors">Loop 2: CRM accounts to competitors</h2>
<p><strong>Problem:</strong> You have closed-won accounts in CRM and want to widen the account universe around them.</p>
<p><strong>Solution:</strong> Use the Competitor Listing Endpoint on each CRM account website, merge results, dedupe, suppress, score.</p>
<p>This is the cleanest 0→1 account expansion loop. Why? Because it starts from accounts you already know you can win.</p>
<pre><code class="language-python">from src.clients.ninjapear import NinjaPearClient
from src.scoring import score_account

client = NinjaPearClient()

for website in seed_account_websites:
    competitors = client.get_competitor_listing(website)
    for comp in competitors[&quot;competitors&quot;]:
        scored = score_account(comp, source=&quot;competitor_listing&quot;)
        if scored.total_score &gt;= 0.72:
            save_candidate(scored)
</code></pre>
<p>Sample response:</p>
<pre><code class="language-json">{
  &quot;competitors&quot;: [
    {
      &quot;name&quot;: &quot;Adyen&quot;,
      &quot;website&quot;: &quot;https://www.adyen.com&quot;,
      &quot;description&quot;: &quot;Financial technology platform for enterprise businesses.&quot;,
      &quot;competition_type&quot;: &quot;product_category_overlap&quot;,
      &quot;reason&quot;: &quot;Both companies offer payment infrastructure and enterprise checkout products.&quot;,
      &quot;industry&quot;: 40204010
    },
    {
      &quot;name&quot;: &quot;PayPal&quot;,
      &quot;website&quot;: &quot;https://www.paypal.com&quot;,
      &quot;description&quot;: &quot;Digital payments platform for consumers and merchants.&quot;,
      &quot;competition_type&quot;: &quot;organic_seo_overlap&quot;,
      &quot;reason&quot;: &quot;Both companies rank for overlapping payments-related organic search terms.&quot;,
      &quot;industry&quot;: 40204010
    }
  ],
  &quot;next_page&quot;: null
}
</code></pre>
<p>Expected scored output with evidence retained:</p>
<table>
<thead>
<tr>
<th>Account</th>
<th>Evidence</th>
<th style="text-align: right;">Fit</th>
<th style="text-align: right;">Relationship</th>
<th style="text-align: right;">Timing</th>
<th style="text-align: right;">Total</th>
</tr>
</thead>
<tbody>
<tr>
<td>Adyen</td>
<td><code>product_category_overlap</code></td>
<td style="text-align: right;">0.70</td>
<td style="text-align: right;">0.72</td>
<td style="text-align: right;">0.20</td>
<td style="text-align: right;">0.5820</td>
</tr>
<tr>
<td>Checkout.com</td>
<td><code>product_category_overlap</code></td>
<td style="text-align: right;">0.70</td>
<td style="text-align: right;">0.72</td>
<td style="text-align: right;">0.20</td>
<td style="text-align: right;">0.5820</td>
</tr>
<tr>
<td>PayPal</td>
<td><code>organic_seo_overlap</code></td>
<td style="text-align: right;">0.70</td>
<td style="text-align: right;">0.58</td>
<td style="text-align: right;">0.20</td>
<td style="text-align: right;">0.5330</td>
</tr>
</tbody>
</table>
<p>That split matters. Product category overlap usually beats organic SEO overlap because it points to actual budget competition, not just shared keywords.</p>
<blockquote>
<p>“The stale data problem you're describing isn't really an Apollo problem, it's a database problem... by the time you're reaching out the information is already months old.”</p>
</blockquote>
<blockquote class="reddit-embed-bq" style="height:316px" data-embed-height="316"><a href="https://www.reddit.com/r/Sales_Professionals/comments/1sdjgbp/cant_use_apollo_anymore_whats_a_better/?ref=nubela.co">Can't use Apollo anymore, whats a better alternative for prospecting?</a><br> by <a href="https://www.reddit.com/user/executivegtm-47/?ref=nubela.co">u/executivegtm-47</a> in <a href="https://www.reddit.com/r/Sales_Professionals/?ref=nubela.co">Sales_Professionals</a></blockquote>
<script async="" src="https://embed.reddit.com/widgets.js" charset="UTF-8"></script>

<p>That comment is exactly why this loop works. It does not pretend an old giant contact database is strategy. It starts from companies you’ve already proven are close to your real market.</p>
<h2 id="loop-3-crm-contacts-to-similar-people">Loop 3: CRM contacts to similar people</h2>
<p><strong>Problem:</strong> You already have customer contacts in CRM and want additive 1→N growth.</p>
<p><strong>Solution:</strong> Use the Similar People Endpoint from work emails to find similar roles at other relevant companies.</p>
<p>This is the strongest loop in the whole stack if your CRM has good work emails. Similar People is the real 1→N motion.</p>
<pre><code class="language-python">from src.clients.ninjapear import NinjaPearClient
from src.models import ProspectPerson

client = NinjaPearClient()

for work_email in customer_contact_emails:
    similar_people = client.get_similar_people(work_email=work_email)
    for person in similar_people[&quot;results&quot;]:
        prospect = ProspectPerson.from_similar_person(person)
        if not is_suppressed_person(prospect):
            save_person(prospect)
</code></pre>
<p>Sample response:</p>
<pre><code class="language-json">{
  &quot;results&quot;: [
    {
      &quot;full_name&quot;: &quot;Will Cannon&quot;,
      &quot;first_name&quot;: &quot;Will&quot;,
      &quot;last_name&quot;: &quot;Cannon&quot;,
      &quot;bio&quot;: &quot;Founder building B2B lead generation software.&quot;,
      &quot;work_email&quot;: &quot;[email protected]&quot;,
      &quot;role&quot;: &quot;Founder &amp; CEO&quot;,
      &quot;company_name&quot;: &quot;UpLead&quot;,
      &quot;company_website&quot;: &quot;https://uplead.com&quot;,
      &quot;city&quot;: &quot;Walnut&quot;,
      &quot;country&quot;: &quot;US&quot;,
      &quot;x_handle&quot;: &quot;willcannon&quot;,
      &quot;input_role&quot;: &quot;Founder &amp; CEO&quot;
    },
    {
      &quot;full_name&quot;: &quot;Henry Schuck&quot;,
      &quot;work_email&quot;: &quot;[email protected]&quot;,
      &quot;role&quot;: &quot;CEO &amp; Chairman&quot;,
      &quot;company_name&quot;: &quot;ZoomInfo&quot;,
      &quot;company_website&quot;: &quot;https://zoominfo.com&quot;,
      &quot;city&quot;: &quot;Vancouver&quot;,
      &quot;country&quot;: &quot;US&quot;,
      &quot;input_role&quot;: &quot;Founder &amp; CEO&quot;
    }
  ]
}
</code></pre>
<p>Expected normalized output:</p>
<pre><code class="language-json">{
  &quot;full_name&quot;: &quot;Will Cannon&quot;,
  &quot;work_email&quot;: &quot;[email protected]&quot;,
  &quot;company_website&quot;: &quot;https://uplead.com&quot;,
  &quot;role&quot;: &quot;Founder &amp; CEO&quot;,
  &quot;source&quot;: &quot;similar_people&quot;,
  &quot;source_evidence&quot;: [
    &quot;Matched as similar person to Founder &amp; CEO&quot;
  ],
  &quot;account_score&quot;: 0.76,
  &quot;person_score&quot;: 0.80
}
</code></pre>
<p>And yes, here’s the context-specific outreach example from the plan:</p>
<blockquote>
<p>“Hey! Your competitor from Company X just joined NinjaPear. It happens that NinjaPear has a feature to extract customers of your company. Would you like to join NinjaPear to also gain an edge against your competitors?”</p>
</blockquote>
<p>I would never ship that as default copy. I’d use it only when the account is already strong and the underlying evidence is real. If the agent cannot show evidence, the rep should not send the email.</p>
<p>NinjaPear’s published Similar People benchmarks are actually useful here. The launch post showed:</p>
<ul>
<li><strong>Tim Cook / Apple</strong>: 18 attempted, 18 found, <strong>100% yield</strong></li>
<li><strong>Elon Musk / Tesla</strong>: 11 attempted, 11 found, <strong>100% yield</strong></li>
<li><strong>Patrick Collison / Stripe</strong>: 19 attempted, 16 found, <strong>84% yield</strong></li>
<li><strong>Bryan Irace / Stripe engineering manager</strong>: 19 attempted, 12 found, <strong>63% yield</strong></li>
<li><strong>Robert Heaton / Stripe MTS</strong>: 65 attempted, 36 found, <strong>55% yield</strong></li>
</ul>
<p>That drop lower in the org chart is normal. Public executives are easier. Mid-level humans are messier.</p>
<h2 id="loop-4-triggers-to-outreach">Loop 4: Triggers to outreach</h2>
<p><strong>Problem:</strong> Your lookalikes are plausible, but you still do not know who to contact now.</p>
<p><strong>Solution:</strong> Use Company Updates or Monitor signals to prioritize accounts showing real change.</p>
<p>Trigger data should rank prospects, not create them.</p>
<pre><code class="language-python">from src.clients.ninjapear import NinjaPearClient
from src.outreach import draft_outreach

client = NinjaPearClient()

updates = client.get_company_updates(&quot;https://example.com&quot;)
for event in updates[&quot;results&quot;]:
    if event[&quot;category&quot;] in {&quot;website update&quot;, &quot;blog&quot;, &quot;x&quot;}:
        draft = draft_outreach(account, event)
        save_draft(draft)
</code></pre>
<p>Sample response:</p>
<pre><code class="language-json">{
  &quot;results&quot;: [
    {
      &quot;title&quot;: &quot;Pricing page updated, new Enterprise tier added&quot;,
      &quot;link&quot;: &quot;https://example.com/pricing&quot;,
      &quot;category&quot;: &quot;website update&quot;,
      &quot;pub_date&quot;: &quot;Thu, 27 Feb 2026 07:00:00 GMT&quot;,
      &quot;summary&quot;: &quot;Enterprise packaging was added to the pricing page.&quot;
    },
    {
      &quot;title&quot;: &quot;Announcing global payments expansion&quot;,
      &quot;link&quot;: &quot;https://example.com/blog/global-payments&quot;,
      &quot;category&quot;: &quot;blog&quot;,
      &quot;pub_date&quot;: &quot;Thu, 27 Feb 2026 10:00:00 GMT&quot;,
      &quot;summary&quot;: &quot;The company announced broader market coverage for payments.&quot;
    }
  ]
}
</code></pre>
<p>Expected outreach draft:</p>
<pre><code class="language-json">{
  &quot;subject&quot;: &quot;Saw this at ExampleCo&quot;,
  &quot;body&quot;: &quot;Saw the update: Pricing page updated, new Enterprise tier added. Usually that means the team is changing packaging, priorities, or buyer motion.&quot;,
  &quot;evidence&quot;: [
    &quot;Returned in customer listing for Stripe&quot;,
    &quot;Trigger: Pricing page updated, new Enterprise tier added&quot;
  ],
  &quot;confidence&quot;: 0.78,
  &quot;requires_review&quot;: true
}
</code></pre>
<p>This is the prioritization layer. Not the discovery layer.</p>
<p>The pricing examples in the Company Monitor launch post are refreshingly concrete:</p>
<ul>
<li><strong>20 weekly targets</strong>: ~346 credits/month</li>
<li><strong>10 daily competitor targets</strong>: ~1,203 credits/month</li>
<li><strong>5 daily prospect accounts, blog + X only</strong>: ~453 credits/month</li>
</ul>
<p>That’s enough to actually budget the loop, which is more than I can say for most “intent” products.</p>
<h2 id="repo-structure">Repo structure</h2>
<p>If you’re publishing a code tutorial, the repo packaging matters more than people think.</p>
<p><strong>Push from the real project root, not from a parent wrapper folder.</strong> This sounds stupidly obvious, but people screw it up constantly.</p>
<pre><code class="language-text">README.md
.env.example
pyproject.toml
data/
  closed_won_accounts.csv
  crm_contacts.csv
  suppression_accounts.csv
  suppression_people.csv
examples/
  sample_customer_listing.json
  sample_competitor_listing.json
  sample_similar_people.json
  sample_updates.json
src/
  config.py
  models.py
  scoring.py
  suppressions.py
  outreach.py
  clients/
    ninjapear.py
  agents/
    coordinator.py
    research_agent.py
    scoring_agent.py
    copy_agent.py
  pipelines/
    loop_competitor_to_customers.py
    loop_crm_to_competitors.py
    loop_contacts_to_similar_people.py
    loop_triggers_to_outreach.py
tests/
  test_scoring.py
  test_suppressions.py
</code></pre>
<p>I created the public repo for this article here:</p>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<div class="github-cta" style="border:1px solid #e0e0e0;border-radius:8px;padding:20px;margin:24px 0;background:#f6f8fa;">
<strong>💻 Full code on GitHub: look-alike-prospecting</strong><br>
<span style="color:#555;">Project root includes `README.md`, `pyproject.toml`, `src/`, `data/`, and `tests/`, exactly how it should.</span><br>
<code style="display:inline-block;margin-top:10px;padding:6px 10px;background:#eaecef;border-radius:4px;font-family:monospace;font-size:13px;">git clone https://github.com/NinjaPear-Shares/look-alike-prospecting.git</code><br>
<a href="https://github.com/NinjaPear-Shares/look-alike-prospecting?ref=nubela.co" style="display:inline-block;margin-top:10px;padding:8px 14px;background:#24292f;color:#fff;border-radius:6px;text-decoration:none;">View on GitHub →</a>
</div>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<blockquote>
<p>“At your volume with stable workflows you're just paying a premium for a pretty UI at this point... we started moving orchestration to n8n two months ago and haven't looked back.”</p>
</blockquote>
<blockquote class="reddit-embed-bq" style="height:316px" data-embed-height="316"><a href="https://www.reddit.com/r/gtmengineering/comments/1six5pp/is_clay_still_worth_it_after_the_new_pricing/?ref=nubela.co">Is Clay still worth it after the new pricing changes?</a><br> by <a href="https://www.reddit.com/user/noobCoder00101/?ref=nubela.co">u/noobCoder00101</a> in <a href="https://www.reddit.com/r/gtmengineering/?ref=nubela.co">gtmengineering</a></blockquote>
<script async="" src="https://embed.reddit.com/widgets.js" charset="UTF-8"></script>

<p>That’s the workflow overhead problem in one sentence. Clay can be useful. But once your logic stabilizes, paying orchestration tax forever gets old fast.</p>
<h2 id="core-pydantic-models">Core Pydantic models</h2>
<p>This should stay practical. Pydantic is useful here because it forces your system to carry evidence, not just vibes.</p>
<h3 id="seedaccount">SeedAccount</h3>
<p>Fields: <code>name</code>, <code>website</code>, <code>segment</code>, <code>source</code>, <code>is_closed_won</code>, <code>arr_band</code></p>
<h3 id="seedcontact">SeedContact</h3>
<p>Fields: <code>full_name</code>, <code>work_email</code>, <code>company_website</code>, <code>role</code>, <code>seniority</code></p>
<h3 id="prospectaccount">ProspectAccount</h3>
<p>Fields: <code>name</code>, <code>website</code>, <code>industry</code>, <code>source</code>, <code>source_evidence</code>, <code>fit_score</code>, <code>relationship_score</code>, <code>timing_score</code></p>
<h3 id="prospectperson">ProspectPerson</h3>
<p>Fields: <code>full_name</code>, <code>work_email</code>, <code>company_website</code>, <code>role</code>, <code>source</code>, <code>source_evidence</code>, <code>account_score</code>, <code>person_score</code></p>
<h3 id="outreachdraft">OutreachDraft</h3>
<p>Fields: <code>subject</code>, <code>body</code>, <code>evidence</code>, <code>confidence</code>, <code>requires_review</code></p>
<pre><code class="language-python">from pydantic import BaseModel, HttpUrl
from typing import List, Optional

class ProspectAccount(BaseModel):
    name: str
    website: HttpUrl
    industry: Optional[str] = None
    source: str
    source_evidence: List[str] = []
    fit_score: float = 0.0
    relationship_score: float = 0.0
    timing_score: float = 0.0
</code></pre>
<p>The schema is not the interesting part. The important part is that every prospect drags its evidence trail with it all the way to the rep-facing output.</p>
<h2 id="ninjapear-client-wrapper">NinjaPear client wrapper</h2>
<p>Use a thin wrapper. Don’t build a fake framework when a small client class will do.</p>
<p>Also, if you’re using an AI coding agent, point it to <strong><code>https://nubela.co/llms-full.txt</code></strong>. It already contains the endpoint references, rate limits, errors, examples, and enough procedural detail to stop your agent from doing dumb things.</p>
<pre><code class="language-python">import os
import httpx

class NinjaPearClient:
    def __init__(self, api_key: str | None = None):
        self.api_key = api_key or os.environ[&quot;NINJAPEAR_API_KEY&quot;]
        self.base_url = &quot;https://nubela.co&quot;
        self.headers = {&quot;Authorization&quot;: f&quot;Bearer {self.api_key}&quot;}

    def get_customer_listing(self, website: str):
        r = httpx.get(
            f&quot;{self.base_url}/api/v1/customer/listing&quot;,
            params={&quot;website&quot;: website},
            headers=self.headers,
            timeout=100.0,
        )
        r.raise_for_status()
        return r.json()
</code></pre>
<p>Then add the obvious follow-ups for competitor listing, similar people, and company updates. Keep it boring.</p>
<p>A few implementation details from the docs are non-negotiable:</p>
<ul>
<li>normal rate limit is <strong>300 requests/minute</strong></li>
<li>the rate-limit window is <strong>5 minutes</strong>, so burst is <strong>1,500 requests per 5 minutes</strong></li>
<li>long-running endpoints can take <strong>30 to 60 seconds</strong></li>
<li>recommended timeout is <strong>100 seconds</strong></li>
<li>handle <strong>429</strong> with exponential backoff</li>
</ul>
<p>That’s real API behavior, not theory.</p>
<h2 id="scoring-and-suppressions">Scoring and suppressions</h2>
<p>This section is where teams overcomplicate things and disappear up their own asses.</p>
<p>Keep the score simple enough that a rep can understand it.</p>
<pre><code class="language-python">def score_account(account) -&gt; float:
    return round(
        (account.fit_score * 0.40)
        + (account.relationship_score * 0.35)
        + (account.timing_score * 0.25),
        4,
    )
</code></pre>
<p>And keep suppressions brutally simple too.</p>
<pre><code class="language-python">def is_suppressed_account(account, suppression_websites: set[str]) -&gt; bool:
    return str(account.website) in suppression_websites
</code></pre>
<p>Suppress these <strong>before</strong> enrichment:</p>
<ul>
<li>existing customers</li>
<li>churned accounts</li>
<li>open opps</li>
<li>partners</li>
<li>agencies</li>
<li>internal test domains</li>
<li>bad domains</li>
</ul>
<p>If you enrich first and suppress later, you just paid to polish garbage.</p>
<p>I also do not trust black-box intent. Most intent products cannot explain why an account is “hot” in a way a rep can actually use. That’s not intelligence. That’s horoscope software for RevOps.</p>
<h2 id="outreach-generation">Outreach generation</h2>
<p>The copy agent should only use evidence the system can show.</p>
<pre><code class="language-python">SYSTEM_PROMPT = &quot;&quot;&quot;
Write short outbound emails using only the supplied evidence.
Do not invent facts.
If evidence is weak, say so and mark requires_review=true.
&quot;&quot;&quot;
</code></pre>
<pre><code class="language-python">def build_evidence_block(account, event=None):
    evidence = list(account.source_evidence)
    if event:
        evidence.append(f&quot;Trigger: {event['title']}&quot;)
    return evidence
</code></pre>
<p>That rule sounds strict because it should be. I’ve seen too many teams let a model freestyle outreach from thin air, then wonder why reps stop trusting the system.</p>
<h2 id="how-to-run-the-project">How to run the project</h2>
<p>Here’s the practical checklist.</p>
<pre><code class="language-bash">uv venv
source .venv/bin/activate
uv pip install -e .
cp .env.example .env
export NINJAPEAR_API_KEY=your_key_here
python -m src.pipelines.loop_competitor_to_customers
python -m src.pipelines.loop_crm_to_competitors
python -m src.pipelines.loop_contacts_to_similar_people
python -m src.pipelines.loop_triggers_to_outreach
</code></pre>
<p>And yes, inspect the full endpoint docs in <strong><code>https://nubela.co/llms-full.txt</code></strong> when wiring parameters, pagination, retries, and endpoint-specific schemas. A blog post should teach you the architecture. It should not pretend to replace the whole API reference.</p>
<h2 id="what-to-measure">What to measure</h2>
<p>Track performance by loop, not just in aggregate.</p>
<ul>
<li>loop source</li>
<li>suppression rate</li>
<li>enrichment rate</li>
<li>reply rate</li>
<li>meeting rate</li>
<li>opportunity rate</li>
</ul>
<p>If your Similar People loop produces fewer rows but 2x the meeting rate of your competitor loop, then congratulations, you found your real motion. Stop worshipping list size.</p>
<h2 id="mistakes-to-avoid">Mistakes to avoid</h2>
<p>Keep this section punchy because the mistakes are obvious.</p>
<ul>
<li>giant blended seed lists</li>
<li>enriching too early</li>
<li>no suppression layer</li>
<li>blind trust in black-box intent</li>
<li>full auto before review</li>
<li>outreach that cites evidence the system cannot prove</li>
<li>pushing a GitHub repo with the real project buried in a nested folder like some kind of maniac</li>
</ul>
<p>A lot of lookalike prospecting systems fail because the operator wants automation before clarity. That order is backwards.</p>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<div class="lead-magnet-cta" style="border:1px solid #e0e0e0;border-radius:8px;padding:20px;margin:24px 0;background:#f8f9fb;">
<strong>📥 Free download: Agentic Lookalike Prospecting Starter Kit</strong><br>
<span style="color:#555;">Grab the workbook: seeds, suppressions, scoring defaults, experiment tracking, and outreach prompt rules, all in one place.</span><br>
<a href="https://f000.backblazeb2.com/file/agent-pub-filestore/agentic-lookalike-prospecting-starter-kit-fa7c03a3.xlsx?ref=nubela.co" style="display:inline-block;margin-top:10px;padding:8px 14px;background:#1d70b8;color:#fff;border-radius:6px;text-decoration:none;">Download now →</a>
</div>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<p>If you want the right next step, it’s not “go buy more data.” Clone the repo, run the four loops against your own closed-won seeds, and inspect the evidence trail for every prospect the system produces. That’s how you build <strong>lookalike prospecting</strong> that a real sales team will actually trust.</p>
<!--kg-card-end: html-->
 ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ Ultimate Guide to Agentic Lead Generation in 2026 + Code Samples + GitHub Project ]]></title>
        <description><![CDATA[ What This Agent Can Do

Sample competitor:

stripe.com
shopify.com
figma.com



Customers
Competitors
People
Timing








Show Python call
Copy sample JSON











Most lead generation content is useless if you actually have to build the damn system yourself. A customer sought out recommendations for his problem: “I have been ]]></description>
        <link>https://nubela.co/blog/agentic-lead-generation/</link>
        <guid isPermaLink="false">69e0c07d44d9df00016fef75</guid>
        <category><![CDATA[ lead generation ]]></category>
        <dc:creator><![CDATA[ Alex Meyer ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2026/04/alex.png"/>
        <pubDate>Thu, 16 Apr 2026 18:57:01 +0800</pubDate>
        <media:content url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2026/04/cover_9.webp" medium="image"/>
        <content:encoded><![CDATA[ 
<!--kg-card-begin: html-->
<div style="border:1px solid #e5e7eb;border-radius:10px;padding:18px;margin:20px 0;background:#f8fafc;max-height:760px;overflow:auto;">
  <div style="font-size:20px;font-weight:700;margin-bottom:12px;">What This Agent Can Do</div>
  <div style="display:flex;gap:12px;flex-wrap:wrap;margin-bottom:12px;align-items:center;">
    <label for="domainSelect"><strong>Sample competitor:</strong></label>
    <select id="domainSelect" style="padding:8px 10px;border:1px solid #cbd5e1;border-radius:6px;">
      <option value="stripe.com">stripe.com</option>
      <option value="shopify.com">shopify.com</option>
      <option value="figma.com">figma.com</option>
    </select>
  </div>
  <div style="display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px;">
    <button class="np-tab" data-tab="customers" style="padding:8px 12px;border:1px solid #cbd5e1;border-radius:6px;background:#111827;color:#fff;cursor:pointer;">Customers</button>
    <button class="np-tab" data-tab="competitors" style="padding:8px 12px;border:1px solid #cbd5e1;border-radius:6px;background:#fff;cursor:pointer;">Competitors</button>
    <button class="np-tab" data-tab="people" style="padding:8px 12px;border:1px solid #cbd5e1;border-radius:6px;background:#fff;cursor:pointer;">People</button>
    <button class="np-tab" data-tab="timing" style="padding:8px 12px;border:1px solid #cbd5e1;border-radius:6px;background:#fff;cursor:pointer;">Timing</button>
  </div>
  <pre id="resultBox" style="white-space:pre-wrap;background:#0f172a;color:#e2e8f0;padding:16px;border-radius:8px;overflow:auto;font-size:13px;line-height:1.45;max-height:360px;"></pre>
  <div id="whyItMatters" style="margin-top:12px;color:#334155;"></div>
  <div style="display:flex;gap:10px;flex-wrap:wrap;margin-top:14px;">
    <button id="showPython" style="padding:8px 12px;border:none;border-radius:6px;background:#2563eb;color:white;cursor:pointer;">Show Python call</button>
    <button id="copyJson" style="padding:8px 12px;border:1px solid #cbd5e1;border-radius:6px;background:white;cursor:pointer;">Copy sample JSON</button>
  </div>
  <pre id="pythonCall" style="display:none;white-space:pre-wrap;background:#111827;color:#d1d5db;padding:16px;border-radius:8px;overflow:auto;font-size:13px;line-height:1.45;margin-top:12px;max-height:220px;"></pre>
</div>
<script>
const npData = {
  "stripe.com": {
    customers: {
      json: {
        customers: [
          {
            name: "Apple",
            description: "Apple Inc. designs, manufactures, and markets smartphones, personal computers, tablets, wearables, and accessories worldwide.",
            tagline: "Think different.",
            website: "https://www.apple.com",
            company_logo_url: "https://nubela.co/api/v1/company/logo?website=https%3A%2F%2Fwww.apple.com",
            id: "abc123",
            industry: 45202030,
            specialties: ["Technology", "Consumer Electronics"],
            x_profile: "https://x.com/Apple"
          },
          {
            name: "Shopify",
            description: "Commerce platform powering online stores and retail point-of-sale systems.",
            tagline: null,
            website: "https://shopify.com",
            company_logo_url: "https://nubela.co/api/v1/company/logo?website=https%3A%2F%2Fshopify.com",
            id: "ghi456",
            industry: 25502020,
            specialties: ["E-commerce", "Payments"],
            x_profile: "https://x.com/shopify"
          }
        ],
        investors: [
          {
            name: "Sequoia Capital",
            description: "Sequoia Capital is a venture capital firm focused on technology companies.",
            tagline: null,
            website: "https://www.sequoiacap.com",
            company_logo_url: "https://nubela.co/api/v1/company/logo?website=https%3A%2F%2Fwww.sequoiacap.com",
            id: "def456",
            industry: 40203010,
            specialties: ["Venture Capital", "Growth Equity"],
            x_profile: "https://x.com/sequoia"
          }
        ],
        partner_platforms: [
          {
            name: "Amazon Web Services",
            description: "Amazon Web Services provides cloud computing platforms and APIs.",
            tagline: null,
            website: "https://aws.amazon.com",
            company_logo_url: "https://nubela.co/api/v1/company/logo?website=https%3A%2F%2Faws.amazon.com",
            id: "ghi789",
            industry: 45101010,
            specialties: ["Cloud Computing", "Infrastructure"],
            x_profile: "https://x.com/awscloud"
          }
        ],
        next_page: "https://nubela.co/api/v1/customer/listing?website=https://www.stripe.com&cursor=abc123"
      },
      py: "api = ninjapear.CustomerAPIApi(api_client)\nresponse = api.get_customer_listing(website='https://www.stripe.com', quality_filter=True)",
      why: "This is the best starting point for lead generation because it shows buyer evidence. A competitor's customer is not theory. It is proof the account already spends money in your category."
    },
    competitors: {
      json: {
        competitors: [
          {
            company_name: "Adyen",
            website: "https://www.adyen.com",
            product_category_overlap: ["payment processing", "checkout", "fraud tools"],
            organic_seo_overlap: ["payment gateway", "merchant of record"]
          },
          {
            company_name: "Checkout.com",
            website: "https://www.checkout.com",
            product_category_overlap: ["payments infrastructure"],
            organic_seo_overlap: ["online payments"]
          },
          {
            company_name: "Square",
            website: "https://squareup.com",
            product_category_overlap: ["payments", "commerce tooling"],
            organic_seo_overlap: ["point of sale", "business payments"]
          }
        ],
        next_page: null
      },
      py: "api = ninjapear.CompetitorAPIApi(api_client)\nresponse = api.get_competitor_listing(website='https://www.stripe.com')",
      why: "Competitor expansion is how your lead generation system stops acting like a CSV puller and starts acting like a market map."
    },
    people: {
      json: {
        results: [
          {
            full_name: "Jane Doe",
            role: "Head of Revenue Operations",
            work_email: "[email protected]",
            x_handle: "janedoe",
            x_profile_url: "https://x.com/janedoe",
            employer_website: "https://shopify.com"
          },
          {
            full_name: "Alex Kim",
            role: "VP Sales Operations",
            work_email: null,
            x_handle: null,
            x_profile_url: null,
            employer_website: "https://www.apple.com"
          }
        ]
      },
      py: "api = ninjapear.EmployeeAPIApi(api_client)\nresponse = api.get_similar_people(employer_website='https://shopify.com', role='Head of Revenue Operations')",
      why: "People discovery only matters after account qualification. Otherwise you built a faster way to annoy the wrong humans."
    },
    timing: {
      json: {
        updates: [
          {
            title: "New Checkout Experience for Global Payments",
            category: "blog",
            summary: "Stripe announced a new checkout experience focused on international merchants.",
            link: "https://stripe.com/blog/new-checkout",
            published_at: "2026-02-27T10:00:00Z"
          },
          {
            title: "Pricing page updated, new Enterprise tier added",
            category: "website update",
            summary: "A new enterprise pricing tier was detected on the public pricing page.",
            link: "https://stripe.com/pricing",
            published_at: "2026-02-27T07:00:00Z"
          },
          {
            title: "We just launched Stripe Billing v3",
            category: "x",
            summary: "Product launch announcement on X.",
            link: "https://x.com/stripe/status/1839200000000000000",
            published_at: "2026-02-26T14:30:00Z"
          }
        ],
        rss_feed_url: "https://nubela.co/api/v1/monitor/feed/demo-stripe.xml"
      },
      py: "api = ninjapear.CompanyAPIApi(api_client)\nupdates = api.get_company_updates(website='https://www.stripe.com')\nfeed = api.create_monitor_feed({'targets': ['https://www.stripe.com'], 'frequency': 'daily'})",
      why: "Timing is the part most lead generation systems fake. Updates tell your agent when to act, not just who exists."
    }
  },
  "shopify.com": {
    customers: {
      json: {
        customers: [
          {
            name: "Toyota",
            description: "Global automotive manufacturer.",
            tagline: null,
            website: "https://toyota.com",
            company_logo_url: "https://nubela.co/api/v1/company/logo?website=https%3A%2F%2Ftoyota.com",
            id: "toy123",
            industry: 25102010,
            specialties: ["Automotive"],
            x_profile: "https://x.com/Toyota"
          },
          {
            name: "Canon",
            description: "Imaging and electronics company.",
            tagline: null,
            website: "https://canon.com",
            company_logo_url: "https://nubela.co/api/v1/company/logo?website=https%3A%2F%2Fcanon.com",
            id: "can456",
            industry: 45201020,
            specialties: ["Electronics"],
            x_profile: "https://x.com/CanonUSA"
          }
        ],
        investors: [],
        partner_platforms: [
          {
            name: "Meta",
            description: "Social technology company.",
            tagline: null,
            website: "https://meta.com",
            company_logo_url: "https://nubela.co/api/v1/company/logo?website=https%3A%2F%2Fmeta.com",
            id: "met789",
            industry: 50203010,
            specialties: ["Advertising", "Social Platforms"],
            x_profile: "https://x.com/Meta"
          }
        ],
        next_page: null
      },
      py: "api.get_customer_listing(website='https://shopify.com', quality_filter=True)",
      why: "A competitor customer list tells you which companies have already decided this problem matters enough to buy software for it."
    },
    competitors: {
      json: {
        competitors: [
          {
            company_name: "BigCommerce",
            website: "https://www.bigcommerce.com",
            product_category_overlap: ["e-commerce platform", "merchant tooling"],
            organic_seo_overlap: ["online store builder"]
          },
          {
            company_name: "WooCommerce",
            website: "https://woocommerce.com",
            product_category_overlap: ["merchant platform"],
            organic_seo_overlap: ["ecommerce plugin"]
          }
        ],
        next_page: null
      },
      py: "api.get_competitor_listing(website='https://shopify.com')",
      why: "One layer of competitor expansion usually gives you better lead generation coverage than buying another tired database seat."
    },
    people: {
      json: {
        results: [
          {
            full_name: "Priya Singh",
            role: "Revenue Operations Lead",
            work_email: "[email protected]",
            x_handle: null,
            x_profile_url: null,
            employer_website: "https://canon.com"
          },
          {
            full_name: "Tom Reyes",
            role: "Director of Commerce",
            work_email: null,
            x_handle: null,
            x_profile_url: null,
            employer_website: "https://toyota.com"
          }
        ]
      },
      py: "api.get_similar_people(employer_website='https://canon.com', role='Revenue Operations Lead')",
      why: "A human target only matters if the account passed the fit test first. That order saves you money and stupidity."
    },
    timing: {
      json: {
        updates: [
          {
            title: "Pricing page updated",
            category: "website update",
            summary: "Plan comparison page changed with revised enterprise messaging.",
            link: "https://shopify.com/pricing",
            published_at: "2026-02-27T07:00:00Z"
          },
          {
            title: "New AI storefront tooling announced",
            category: "blog",
            summary: "Shopify published a product launch post for AI merchandising tools.",
            link: "https://shopify.com/blog",
            published_at: "2026-02-26T10:00:00Z"
          }
        ],
        rss_feed_url: "https://nubela.co/api/v1/monitor/feed/demo-shopify.xml"
      },
      py: "api.get_company_updates(website='https://shopify.com')",
      why: "Updates turn a static lead generation list into a living queue with context."
    }
  },
  "figma.com": {
    customers: {
      json: {
        customers: [
          {
            name: "Notion",
            description: "All-in-one workspace for notes, docs, and project management.",
            tagline: null,
            website: "https://notion.so",
            company_logo_url: "https://nubela.co/api/v1/company/logo?website=https%3A%2F%2Fnotion.so",
            id: "not123",
            industry: 45103010,
            specialties: ["Collaboration Software"],
            x_profile: "https://x.com/NotionHQ"
          }
        ],
        investors: [],
        partner_platforms: [
          {
            name: "Google Workspace",
            description: "Cloud productivity suite.",
            tagline: null,
            website: "https://workspace.google.com",
            company_logo_url: "https://nubela.co/api/v1/company/logo?website=https%3A%2F%2Fworkspace.google.com",
            id: "goo123",
            industry: 45103020,
            specialties: ["Productivity"],
            x_profile: "https://x.com/googleworkspace"
          }
        ],
        next_page: null
      },
      py: "api.get_customer_listing(website='https://figma.com')",
      why: "Great lead generation starts with proof a company is already buying in the category."
    },
    competitors: {
      json: {
        competitors: [
          {
            company_name: "Sketch",
            website: "https://www.sketch.com",
            product_category_overlap: ["design tooling"],
            organic_seo_overlap: ["interface design"]
          }
        ],
        next_page: null
      },
      py: "api.get_competitor_listing(website='https://figma.com')",
      why: "Competitor graphs widen the account set without turning your pipeline into random junk."
    },
    people: {
      json: {
        results: [
          {
            full_name: "Nina Park",
            role: "Head of Design Ops",
            work_email: null,
            x_handle: null,
            x_profile_url: null,
            employer_website: "https://notion.so"
          }
        ]
      },
      py: "api.get_similar_people(employer_website='https://notion.so', role='Head of Design Ops')",
      why: "People discovery works when it follows account logic, not when it replaces it."
    },
    timing: {
      json: {
        updates: [
          {
            title: "Announcing Figma Slides",
            category: "x",
            summary: "Launch announcement on X.",
            link: "https://x.com/figma/status/1839200000000000001",
            published_at: "2026-02-26T14:30:00Z"
          }
        ],
        rss_feed_url: "https://nubela.co/api/v1/monitor/feed/demo-figma.xml"
      },
      py: "api.get_company_updates(website='https://figma.com')",
      why: "Lead generation gets a lot better when you know who changed and what changed."
    }
  }
};
let currentTab = 'customers';
function renderNP() {
  const domain = document.getElementById('domainSelect').value;
  const block = npData[domain][currentTab];
  document.getElementById('resultBox').textContent = JSON.stringify(block.json, null, 2);
  document.getElementById('whyItMatters').innerHTML = '<strong>Why this matters for lead generation:</strong> ' + block.why + ' <em>(sample output using documented NinjaPear-style fields)</em>';
  document.getElementById('pythonCall').textContent = block.py;
}
renderNP();
document.querySelectorAll('.np-tab').forEach(btn => {
  btn.addEventListener('click', () => {
    currentTab = btn.dataset.tab;
    document.querySelectorAll('.np-tab').forEach(b => { b.style.background='#fff'; b.style.color='#111827'; });
    btn.style.background='#111827'; btn.style.color='#fff';
    renderNP();
  });
});
document.getElementById('domainSelect').addEventListener('change', renderNP);
document.getElementById('showPython').addEventListener('click', () => {
  const el = document.getElementById('pythonCall');
  el.style.display = el.style.display === 'none' ? 'block' : 'none';
});
document.getElementById('copyJson').addEventListener('click', async () => {
  await navigator.clipboard.writeText(document.getElementById('resultBox').textContent);
  const btn = document.getElementById('copyJson');
  const old = btn.textContent;
  btn.textContent = 'Copied';
  setTimeout(() => btn.textContent = old, 1200);
});
</script>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<p>Most <strong>lead generation</strong> content is useless if you actually have to build the damn system yourself. A customer sought out recommendations for his problem: “I have been experimenting with NinjaPear using my AI agents to find investors and leads for my company.” In this article, I’m going to show you how to build a full <strong>agentic lead generation</strong> system with <strong>PydanticAI</strong>, <strong>NinjaPear</strong>, and a small set of supporting tools, including the exact 4 loops, the code structure, and the GitHub project you can ship.</p>
<blockquote class="twitter-tweet"><p lang="en" dir="ltr">AI SDRs are the most overhyped thing in SaaS right now.<br><br>Not because AI is bad.<br>Because the input is bad.<br><br>An AI writing personalized emails to 10,000 random contacts is still spray and pray.<br><br>You just automated the waste.</p>&mdash; Junaid Choudhary (@JustJunaidHere) <a href="https://x.com/JustJunaidHere/status/2044037961403248787?ref=nubela.co">Tue Apr 14 13:00:01 +0000 2026</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<div class="github-cta" style="border:1px solid #e0e0e0;border-radius:8px;padding:20px;margin:24px 0;background:#f6f8fa;">
<strong>💻 Full code on GitHub: agentic-lead-generation</strong><br>
<span style="color:#555;">A runnable Python starter project with NinjaPear wrappers, Pydantic models, a 4-loop pipeline, mocked outreach helpers, and an agent entrypoint.</span><br>
<code style="display:inline-block;margin-top:10px;padding:6px 10px;background:#eaecef;border-radius:4px;font-family:monospace;font-size:13px;">git clone https://github.com/NinjaPear-Shares/agentic-lead-generation.git</code><br>
<a href="https://github.com/NinjaPear-Shares/agentic-lead-generation?ref=nubela.co" style="display:inline-block;margin-top:10px;padding:8px 14px;background:#24292f;color:#fff;border-radius:6px;text-decoration:none;">View on GitHub →</a>
</div>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<h2 id="build-the-system-first">Build the system first</h2>
<p>When I was running FluxoMetric, this is the mistake I made for way too long: I thought better modeling would fix bad market inputs. It does not. It just gives you prettier wrong answers.</p>
<p>If I were building lead generation for a startup today, and my two obvious competitors were <strong>Stripe</strong> and <strong>Shopify</strong>, I would start with this system shape:</p>
<ul>
<li><strong>Loop 1, customer loop:</strong> pull likely customers of Stripe and Shopify, because a competitor's customer is better evidence than a random firmographic export</li>
<li><strong>Loop 2, competitor loop:</strong> expand into adjacent companies, because most teams do not have a lead shortage, they have a market map shortage</li>
<li><strong>Loop 3, people loop:</strong> find role-alike buyers only after account qualification, because people-first prospecting is how you build a faster bullshit cannon</li>
<li><strong>Loop 4, timing loop:</strong> enrich and monitor those accounts for changes, because without timing you do not have agentic lead generation, you have a nicer spreadsheet</li>
</ul>
<p>That is what this guide is going to do: take those four loops, wire them into one practical workflow, and show you the exact code and response shapes I would use if I were a founder trying to steal market share from better-funded competitors.</p>
<p>This is the whole workflow in one glance:</p>
<p><code>seed domains -&gt; customer loop -&gt; competitor loop -&gt; people loop -&gt; timing loop -&gt; queue</code></p>
<p>And here is the boring <code>main()</code> that matters more than 90% of AI SDR demos on X:</p>
<pre><code class="language-python">def main():
    seeds = [&quot;https://stripe.com&quot;, &quot;https://shopify.com&quot;]
    accounts = pull_competitor_customers(seeds)
    accounts = expand_competitors(accounts)
    people = find_similar_people(accounts)
    enriched = enrich_and_monitor(accounts, people)
    queue = build_outreach_queue(enriched)
    return queue
</code></pre>
<p>Short. Good. Most systems should be this obvious.</p>
<h2 id="the-stack">The stack</h2>
<p>Keep the stack brutally practical:</p>
<ul>
<li><a href="https://nubela.co/?ref=nubela.co">NinjaPear</a> for company, customer, competitor, people, funding, updates, and monitor data</li>
<li>PydanticAI for orchestration, typed tools, and validated outputs</li>
<li>OpenRouter as the model gateway</li>
<li>Mock helpers for email verification and email sending, because those are not the point of this guide</li>
</ul>
<p>Install what you need:</p>
<pre><code class="language-bash">pip install ninjapear pydantic-ai httpx pydantic python-dotenv
</code></pre>
<p>Minimal settings model:</p>
<pre><code class="language-python">from pydantic import BaseModel
import os

class Settings(BaseModel):
    ninjapear_api_key: str
    openrouter_api_key: str

settings = Settings(
    ninjapear_api_key=os.environ[&quot;NINJAPEAR_API_KEY&quot;],
    openrouter_api_key=os.environ[&quot;OPENROUTER_API_KEY&quot;],
)
</code></pre>
<p>And yes, you can run PydanticAI through OpenRouter cleanly:</p>
<pre><code class="language-python">from pydantic_ai import Agent
from pydantic_ai.models.openrouter import OpenRouterModel
from pydantic_ai.providers.openrouter import OpenRouterProvider

model = OpenRouterModel(
    &quot;anthropic/claude-sonnet-4-5&quot;,
    provider=OpenRouterProvider(api_key=settings.openrouter_api_key),
)
agent = Agent(model)
</code></pre>
<p>My opinion is simple: the model matters less than the data and the wiring. Most agentic lead generation demos fail because they are dressed-up toys sitting on bad data.</p>
<p>NinjaPear’s docs make the operational constraints pretty clear too:</p>
<ul>
<li>up to <strong>300 requests/minute</strong></li>
<li>a <strong>1,500 request</strong> burst window over 5 minutes</li>
<li>trial accounts limited to <strong>2 requests/minute</strong></li>
<li>many endpoints take <strong>30 to 60 seconds</strong></li>
<li>recommended timeout: <strong>100 seconds</strong></li>
</ul>
<p>That is real infrastructure guidance. Not marketing garnish.</p>
<h2 id="loop-1-pull-competitor-customers">Loop 1: Pull competitor customers</h2>
<p>If I were a founder selling into companies that already buy from Stripe or Shopify, this is where I would start.</p>
<p>A competitor’s customer is usually a better lead than a giant stale firmographic export. Not because it is magical. Because it is evidence of actual category demand.</p>
<h3 id="seed-your-domains">Seed your domains</h3>
<p>Start with companies your buyer would already compare you against.</p>
<p>For this guide, I am using:</p>
<pre><code class="language-python">seeds = [
    &quot;https://stripe.com&quot;,
    &quot;https://shopify.com&quot;,
]
</code></pre>
<p>Do not start with 500 domains. Start with 2 to 10 and make sure the plumbing works.</p>
<h3 id="call-customer-listing">Call Customer Listing</h3>
<p>Use the <a href="https://nubela.co/customers?ref=nubela.co">Customer Listing API</a>.</p>
<p>Doc-backed details that matter:</p>
<ul>
<li>Endpoint: <code>GET /api/v1/customer/listing</code></li>
<li>Cost: <strong>1 credit/request + 2 credits/company returned</strong></li>
<li>Empty results can still cost you</li>
<li><code>quality_filter=true</code> should stay on unless you enjoy junk</li>
<li>Pagination uses <code>next_page</code> and <code>cursor</code></li>
<li><code>page_size</code> supports <strong>1 to 200</strong>, default <strong>200</strong></li>
</ul>
<p>Official SDK setup:</p>
<pre><code class="language-python">import ninjapear

configuration = ninjapear.Configuration(
    host=&quot;https://nubela.co&quot;,
    access_token=&quot;YOUR_API_KEY&quot;,
)

with ninjapear.ApiClient(configuration) as api_client:
    api = ninjapear.CustomerAPIApi(api_client)
    response = api.get_customer_listing(
        website=&quot;https://www.stripe.com&quot;,
        quality_filter=True,
    )
</code></pre>
<p>Wrapper I would actually keep in a project:</p>
<pre><code class="language-python">import ninjapear
from urllib.parse import urlparse
from pydantic import BaseModel

class ProspectAccount(BaseModel):
    source_company: str
    relationship_type: str
    name: str
    website: str | None
    description: str | None = None
    specialties: list[str] = []
    x_profile: str | None = None


def normalize_domain(url: str) -&gt; str:
    return urlparse(url).netloc.replace(&quot;www.&quot;, &quot;&quot;)


def get_customer_listing(api_client, website: str):
    api = ninjapear.CustomerAPIApi(api_client)
    return api.get_customer_listing(website=website)
</code></pre>
<p>Pagination helper:</p>
<pre><code class="language-python">from urllib.parse import urlparse, parse_qs


def paginate_customer_listing(api_client, website: str, page_size: int = 200):
    cursor = None
    while True:
        response = get_customer_listing(
            api_client,
            website=website,
            cursor=cursor,
            page_size=page_size,
            quality_filter=True,
        )
        yield response
        next_page = response.get(&quot;next_page&quot;) if isinstance(response, dict) else getattr(response, &quot;next_page&quot;, None)
        if not next_page:
            break
        cursor_values = parse_qs(urlparse(next_page).query).get(&quot;cursor&quot;, [])
        cursor = cursor_values[0] if cursor_values else None
        if not cursor:
            break
</code></pre>
<h3 id="parse-only-what-matters">Parse only what matters</h3>
<p>For lead generation, I care about the relationship buckets differently.</p>
<table>
<thead>
<tr>
<th>Relationship type</th>
<th>How to use it</th>
</tr>
</thead>
<tbody>
<tr>
<td>Customer</td>
<td>Primary prospect pool</td>
</tr>
<tr>
<td>Investor</td>
<td>Good for market mapping, less useful as direct buyer signal</td>
</tr>
<tr>
<td>Partner platform</td>
<td>Useful for integrations and ecosystem plays</td>
</tr>
</tbody>
</table>
<p>And I flatten the response like this:</p>
<pre><code class="language-python">def flatten_customer_response(source_company: str, payload) -&gt; list[ProspectAccount]:
    rows = []
    data = payload.to_dict() if hasattr(payload, &quot;to_dict&quot;) else payload
    for key, relationship_type in {
        &quot;customers&quot;: &quot;customer&quot;,
        &quot;investors&quot;: &quot;investor&quot;,
        &quot;partner_platforms&quot;: &quot;partner_platform&quot;,
    }.items():
        for item in data.get(key, []) or []:
            rows.append(
                ProspectAccount(
                    source_company=source_company,
                    relationship_type=relationship_type,
                    name=item.get(&quot;name&quot;, &quot;Unknown&quot;),
                    website=item.get(&quot;website&quot;),
                    description=item.get(&quot;description&quot;),
                    specialties=item.get(&quot;specialties&quot;) or [],
                    x_profile=item.get(&quot;x_profile&quot;),
                )
            )
    return rows
</code></pre>
<p>Here is a sample response shape using documented NinjaPear fields:</p>
<pre><code class="language-json">{
  &quot;customers&quot;: [
    {
      &quot;name&quot;: &quot;Apple&quot;,
      &quot;description&quot;: &quot;Apple Inc. designs, manufactures, and markets smartphones, personal computers, tablets, wearables, and accessories worldwide.&quot;,
      &quot;tagline&quot;: &quot;Think different.&quot;,
      &quot;website&quot;: &quot;https://www.apple.com&quot;,
      &quot;company_logo_url&quot;: &quot;https://nubela.co/api/v1/company/logo?website=https%3A%2F%2Fwww.apple.com&quot;,
      &quot;id&quot;: &quot;abc123&quot;,
      &quot;industry&quot;: 45202030,
      &quot;specialties&quot;: [&quot;Technology&quot;, &quot;Consumer Electronics&quot;],
      &quot;x_profile&quot;: &quot;https://x.com/Apple&quot;
    }
  ],
  &quot;investors&quot;: [
    {
      &quot;name&quot;: &quot;Sequoia Capital&quot;,
      &quot;description&quot;: &quot;Sequoia Capital is a venture capital firm focused on technology companies.&quot;,
      &quot;tagline&quot;: null,
      &quot;website&quot;: &quot;https://www.sequoiacap.com&quot;,
      &quot;company_logo_url&quot;: &quot;https://nubela.co/api/v1/company/logo?website=https%3A%2F%2Fwww.sequoiacap.com&quot;,
      &quot;id&quot;: &quot;def456&quot;,
      &quot;industry&quot;: 40203010,
      &quot;specialties&quot;: [&quot;Venture Capital&quot;, &quot;Growth Equity&quot;],
      &quot;x_profile&quot;: &quot;https://x.com/sequoia&quot;
    }
  ],
  &quot;partner_platforms&quot;: [
    {
      &quot;name&quot;: &quot;Amazon Web Services&quot;,
      &quot;description&quot;: &quot;Amazon Web Services provides cloud computing platforms and APIs.&quot;,
      &quot;tagline&quot;: null,
      &quot;website&quot;: &quot;https://aws.amazon.com&quot;,
      &quot;company_logo_url&quot;: &quot;https://nubela.co/api/v1/company/logo?website=https%3A%2F%2Faws.amazon.com&quot;,
      &quot;id&quot;: &quot;ghi789&quot;,
      &quot;industry&quot;: 45101010,
      &quot;specialties&quot;: [&quot;Cloud Computing&quot;, &quot;Infrastructure&quot;],
      &quot;x_profile&quot;: &quot;https://x.com/awscloud&quot;
    }
  ],
  &quot;next_page&quot;: &quot;https://nubela.co/api/v1/customer/listing?website=https://www.stripe.com&amp;cursor=abc123&quot;
}
</code></pre>
<p>What I do <strong>not</strong> do is dump investors and partner platforms straight into the outreach queue. That is how people end up bragging about lead volume while quietly burning sender reputation.</p>
<blockquote class="reddit-embed-bq" style="height:316px" data-embed-height="316">
<a href="https://www.reddit.com/r/coldemail/comments/1qwm1rf/stop_using_apollo_for_leads_the_database_is/?ref=nubela.co">Stop Using Apollo for Leads the Database Is Already Burned</a><br> by
<a href="https://www.reddit.com/user/Singh_Acquisitions/?ref=nubela.co">u/Singh_Acquisitions</a> in
<a href="https://www.reddit.com/r/coldemail/?ref=nubela.co">coldemail</a>
</blockquote>
<script async="" src="https://embed.reddit.com/widgets.js" charset="UTF-8"></script>

<blockquote>
<p>“When thousands of marketers, agencies, and freelancers are all buying from the same database, those contacts get absolutely hammered with pitches long before you ever hit send.”</p>
</blockquote>
<p>Yep. That is exactly why customer-graph-first lead generation beats database-first lead generation.</p>
<h3 id="dedupe-the-account-list">Dedupe the account list</h3>
<p>Dedupe by normalized domain.</p>
<p>Not company name. Not the CRM label your rep typed in a hurry. Domain.</p>
<pre><code class="language-python">from collections import OrderedDict


def dedupe_accounts(accounts: list[ProspectAccount]) -&gt; list[ProspectAccount]:
    deduped = OrderedDict()
    for account in accounts:
        key = normalize_domain(account.website) if account.website else account.name.lower()
        if key not in deduped:
            deduped[key] = account
    return list(deduped.values())
</code></pre>
<p>Most teams do not have a lead generation shortage. They have a data hygiene shortage.</p>
<h2 id="loop-2-expand-competitors">Loop 2: Expand competitors</h2>
<p>If Stripe and Shopify are your starting map, this loop is how you find the adjacent terrain.</p>
<p>This is where the system stops being a list puller and starts becoming a market mapper.</p>
<h3 id="find-adjacent-competitors">Find adjacent competitors</h3>
<p>Use the Competitor Listing endpoint to pull adjacent and overlapping companies.</p>
<p>The docs show this clearly enough to act on:</p>
<ul>
<li>Endpoint: <code>GET /api/v1/competitor/listing</code></li>
<li>Cost: <strong>2 credits per competitor returned</strong></li>
<li>Minimum request cost applies even when the result is weak</li>
</ul>
<p>A thin wrapper is enough:</p>
<pre><code class="language-python">def get_competitors(api_client, website: str, cursor: str | None = None, page_size: int = 50):
    api = ninjapear.CompetitorAPIApi(api_client)
    return api.get_competitor_listing(website=website, cursor=cursor, page_size=page_size)
</code></pre>
<p>Sample response shape:</p>
<pre><code class="language-json">{
  &quot;competitors&quot;: [
    {
      &quot;company_name&quot;: &quot;Adyen&quot;,
      &quot;website&quot;: &quot;https://www.adyen.com&quot;,
      &quot;product_category_overlap&quot;: [&quot;payment processing&quot;, &quot;checkout&quot;, &quot;fraud tools&quot;],
      &quot;organic_seo_overlap&quot;: [&quot;payment gateway&quot;, &quot;merchant of record&quot;]
    },
    {
      &quot;company_name&quot;: &quot;Checkout.com&quot;,
      &quot;website&quot;: &quot;https://www.checkout.com&quot;,
      &quot;product_category_overlap&quot;: [&quot;payments infrastructure&quot;],
      &quot;organic_seo_overlap&quot;: [&quot;online payments&quot;]
    }
  ],
  &quot;next_page&quot;: null
}
</code></pre>
<p>That is already enough to do useful work. You do not need a giant ontology sermon here. You need plausible adjacent companies and the reasons they overlap.</p>
<h3 id="expand-one-layer-at-a-time">Expand one layer at a time</h3>
<p>Do not recurse like a lunatic.</p>
<p>One layer is usually enough to improve lead generation coverage without turning the queue into broad-market mush.</p>
<pre><code class="language-python">def expand_competitors(api_client, seed_domains, max_depth=1):
    visited = set()
    frontier = list(seed_domains)
    discovered = []
    depth = 0

    while frontier and depth &lt; max_depth:
        next_frontier = []
        for website in frontier:
            if website in visited:
                continue
            visited.add(website)
            payload = get_competitors(api_client, website=website)
            data = payload.to_dict() if hasattr(payload, &quot;to_dict&quot;) else payload
            for item in data.get(&quot;competitors&quot;, []) or []:
                comp_website = item.get(&quot;website&quot;)
                if comp_website and comp_website not in visited:
                    discovered.append(comp_website)
                    next_frontier.append(comp_website)
        frontier = next_frontier
        depth += 1

    return discovered
</code></pre>
<h3 id="track-provenance">Track provenance</h3>
<p>Every discovered account should carry provenance:</p>
<ul>
<li>which seed exposed it</li>
<li>which competitor chain exposed it</li>
<li>what relationship type got it into the graph</li>
</ul>
<p>That becomes useful later for scoring and messaging. If an account appears as a Stripe customer and again through an adjacent payment competitor, that is not duplication. That is signal.</p>
<h3 id="stop-the-loop-early">Stop the loop early</h3>
<p>Use three brakes:</p>
<ul>
<li><code>max_depth</code></li>
<li>domain dedupe</li>
<li>account caps</li>
</ul>
<p>If you do not cap this, you end up exploring the entire category and pretending that is pipeline generation.</p>
<p>A concurrency-safe version is fine later. Get the logic right first.</p>
<pre><code class="language-python"># pseudocode
async for website in frontier:
    if website not in visited and len(discovered) &lt; account_cap:
        fetch competitor listing
        append new domains
</code></pre>
<p>I found a quote on X that says this pain more honestly than most GTM decks do:</p>
<blockquote class="twitter-tweet"><p lang="en" dir="ltr">This is why agency bros don’t impress me <br><br>Super easy to blast the TAM and get some results <br><br>Super hard to work a set of 100 qualified accounts for the year and penetrate 10-20% of them <br><br>The latter is what I’m paid to do</p>&mdash; Khalifa (@saleskhalifa) <a href="https://x.com/saleskhalifa/status/2042635002576252956?ref=nubela.co">Fri Apr 10 16:05:09 +0000 2026</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

<p>That is the whole point. Better lead generation is usually about better market mapping, not just more names.</p>
<h2 id="loop-3-find-similar-people">Loop 3: Find similar people</h2>
<p>This loop is where a lot of people get stupid.</p>
<p>If you run people discovery before account scoring, you just built a faster bullshit cannon.</p>
<h3 id="start-with-the-account">Start with the account</h3>
<p>Only run people discovery on accounts that already passed some fit threshold.</p>
<p>For example:</p>
<ul>
<li>competitor customer</li>
<li>sensible headcount band</li>
<li>recent public updates</li>
<li>category relevance from the source chain</li>
</ul>
<p>Do that first. Then go looking for humans.</p>
<h3 id="pull-role-alike-people">Pull role-alike people</h3>
<p>The Similar People endpoint is built for role-alike discovery.</p>
<p>That means you can start with a target role and pull similar profiles at relevant companies.</p>
<pre><code class="language-python">class ProspectPerson(BaseModel):
    account_domain: str
    full_name: str | None = None
    role: str | None = None
    work_email: str | None = None
    x_handle: str | None = None
    score: float = 0.0
</code></pre>
<pre><code class="language-python">def find_similar_people(api_client, employer_website: str, role: str):
    api = ninjapear.EmployeeAPIApi(api_client)
    return api.get_similar_people(employer_website=employer_website, role=role)
</code></pre>
<p>If I were a founder building this for a payments-adjacent product, I would start with one clean role like <code>Head of Revenue Operations</code> or <code>VP Sales Operations</code>.</p>
<p>Not vague mush like “operations lead.”</p>
<p>Sample response shape:</p>
<pre><code class="language-json">{
  &quot;results&quot;: [
    {
      &quot;full_name&quot;: &quot;Jane Doe&quot;,
      &quot;role&quot;: &quot;Head of Revenue Operations&quot;,
      &quot;work_email&quot;: &quot;[email protected]&quot;,
      &quot;x_handle&quot;: &quot;janedoe&quot;,
      &quot;x_profile_url&quot;: &quot;https://x.com/janedoe&quot;,
      &quot;employer_website&quot;: &quot;https://shopify.com&quot;
    },
    {
      &quot;full_name&quot;: &quot;Alex Kim&quot;,
      &quot;role&quot;: &quot;VP Sales Operations&quot;,
      &quot;work_email&quot;: null,
      &quot;x_handle&quot;: null,
      &quot;x_profile_url&quot;: null,
      &quot;employer_website&quot;: &quot;https://www.apple.com&quot;
    }
  ]
}
</code></pre>
<h3 id="enrich-the-person-record">Enrich the person record</h3>
<p>Then use the Person Profile endpoint to enrich from:</p>
<ul>
<li>work email</li>
<li>name + company</li>
<li>role + company</li>
</ul>
<p>NinjaPear’s own Person Profile write-up gave useful match-rate guidance:</p>
<table>
<thead>
<tr>
<th>Input method</th>
<th style="text-align: right;">Profiles found</th>
<th style="text-align: right;">Accuracy</th>
</tr>
</thead>
<tbody>
<tr>
<td>Work email</td>
<td style="text-align: right;">10/10</td>
<td style="text-align: right;">100%</td>
</tr>
<tr>
<td>First name + last name + company</td>
<td style="text-align: right;">9/10</td>
<td style="text-align: right;">90%</td>
</tr>
<tr>
<td>Role + company</td>
<td style="text-align: right;">7/10</td>
<td style="text-align: right;">70%</td>
</tr>
</tbody>
</table>
<p>That is exactly what I would expect. Role + company is useful, but weaker than deterministic inputs.</p>
<pre><code class="language-python">def get_person_profile(api_client, work_email=None, employer_website=None, role=None, first_name=None, last_name=None):
    api = ninjapear.EmployeeAPIApi(api_client)
    return api.get_employee_profile(
        work_email=work_email,
        employer_website=employer_website,
        role=role,
        first_name=first_name,
        last_name=last_name,
    )
</code></pre>
<p>Sample response shape from the documented Person Profile style:</p>
<pre><code class="language-json">{
  &quot;id&quot;: &quot;a3xK9mP2&quot;,
  &quot;full_name&quot;: &quot;Patrick Collison&quot;,
  &quot;first_name&quot;: &quot;Patrick&quot;,
  &quot;last_name&quot;: &quot;Collison&quot;,
  &quot;bio&quot;: &quot;Co-founder and CEO of Stripe&quot;,
  &quot;profile_pic_url&quot;: &quot;https://pbs.twimg.com/...&quot;,
  &quot;country&quot;: &quot;IE&quot;,
  &quot;city&quot;: &quot;IELIM&quot;,
  &quot;x_handle&quot;: &quot;patrickc&quot;,
  &quot;x_profile_url&quot;: &quot;https://x.com/patrickc&quot;,
  &quot;personal_website&quot;: &quot;https://patrickcollison.com&quot;,
  &quot;work_experience&quot;: [
    {
      &quot;role&quot;: &quot;Co-founder &amp; CEO&quot;,
      &quot;company_name&quot;: &quot;Stripe&quot;,
      &quot;company_website&quot;: &quot;stripe.com&quot;,
      &quot;start_date&quot;: &quot;2010-01&quot;,
      &quot;end_date&quot;: null
    }
  ],
  &quot;education&quot;: [
    {
      &quot;major&quot;: &quot;B.S. Mathematics&quot;,
      &quot;school&quot;: &quot;MIT&quot;,
      &quot;start_date&quot;: &quot;2006-09&quot;,
      &quot;end_date&quot;: &quot;2009-06&quot;
    }
  ]
}
</code></pre>
<h3 id="build-the-contact-queue">Build the contact queue</h3>
<p>Turn the best accounts into a contact queue, not an export dump.</p>
<pre><code class="language-python">def build_contact_queue(api_client, accounts, target_role=&quot;Head of Revenue Operations&quot;):
    people = []
    for account in accounts:
        if not account.website:
            continue
        payload = find_similar_people(api_client, employer_website=account.website, role=target_role)
        data = payload.to_dict() if hasattr(payload, &quot;to_dict&quot;) else payload
        for item in data.get(&quot;results&quot;, []) or data.get(&quot;people&quot;, []) or []:
            people.append(
                ProspectPerson(
                    account_domain=normalize_domain(account.website),
                    full_name=item.get(&quot;full_name&quot;),
                    role=item.get(&quot;role&quot;),
                    work_email=item.get(&quot;work_email&quot;),
                    x_handle=item.get(&quot;x_handle&quot;),
                )
            )
    return people
</code></pre>
<p>And because fake personalization is a plague now:</p>
<blockquote class="reddit-embed-bq" style="height:316px" data-embed-height="316">
<a href="https://www.reddit.com/r/coldemail/comments/1qnmlw2/how_do_you_personalize_at_scale_without_it/?ref=nubela.co">How do you personalize at scale without it becoming fake or too &quot;AI&quot;</a><br> by
<a href="https://www.reddit.com/user/LifeSuccessful9302/?ref=nubela.co">u/LifeSuccessful9302</a> in
<a href="https://www.reddit.com/r/coldemail/?ref=nubela.co">coldemail</a>
</blockquote>
<script async="" src="https://embed.reddit.com/widgets.js" charset="UTF-8"></script>

<blockquote>
<p>“The secret is to stop using AI for 'openers' and start using it for 'relevance logic'...”</p>
</blockquote>
<p>Exactly. Use AI for routing and relevance. Not for one more creepy sentence about a podcast appearance.</p>
<h2 id="loop-4-enrich-and-monitor">Loop 4: Enrich and monitor</h2>
<p>If your workflow has no timing layer, it is not agentic lead generation. It is a nicer spreadsheet.</p>
<p>This is the part I care about most, because this is where the system stops being static.</p>
<h3 id="enrich-the-account">Enrich the account</h3>
<p>Use these NinjaPear endpoints:</p>
<ul>
<li><a href="https://nubela.co/?ref=nubela.co">Company Details</a> for context</li>
<li>Employee Count for fit and segmentation</li>
<li>Company Funding for capital signal</li>
<li>Company Updates for recent public changes</li>
</ul>
<p>Here is the endpoint map I would actually hand to an engineer:</p>
<table>
<thead>
<tr>
<th>Endpoint</th>
<th>Purpose</th>
<th>Loop</th>
</tr>
</thead>
<tbody>
<tr>
<td>Customer Listing</td>
<td>Pull customers, investors, partners</td>
<td>Loop 1</td>
</tr>
<tr>
<td>Competitor Listing</td>
<td>Expand market graph</td>
<td>Loop 2</td>
</tr>
<tr>
<td>Similar People</td>
<td>Find role-alike contacts</td>
<td>Loop 3</td>
</tr>
<tr>
<td>Person Profile</td>
<td>Enrich target person</td>
<td>Loop 3</td>
</tr>
<tr>
<td>Company Details</td>
<td>Add firmographic and narrative context</td>
<td>Loop 4</td>
</tr>
<tr>
<td>Employee Count</td>
<td>Fit and segment by size</td>
<td>Loop 4</td>
</tr>
<tr>
<td>Company Funding</td>
<td>Detect capital signal</td>
<td>Loop 4</td>
</tr>
<tr>
<td>Company Updates</td>
<td>Detect changes worth acting on</td>
<td>Loop 4</td>
</tr>
<tr>
<td>Monitor API</td>
<td>Turn updates into an ongoing feed</td>
<td>Loop 4</td>
</tr>
</tbody>
</table>
<p>Wrappers:</p>
<pre><code class="language-python">def get_company_details(api_client, website: str):
    api = ninjapear.CompanyAPIApi(api_client)
    return api.get_company_details(website=website)


def get_employee_count(api_client, website: str):
    api = ninjapear.CompanyAPIApi(api_client)
    return api.get_employee_count(website=website)


def get_company_updates(api_client, website: str):
    api = ninjapear.CompanyAPIApi(api_client)
    return api.get_company_updates(website=website)
</code></pre>
<p>Sample <code>Company Details</code>-style shape:</p>
<pre><code class="language-json">{
  &quot;name&quot;: &quot;Stripe&quot;,
  &quot;website&quot;: &quot;https://stripe.com&quot;,
  &quot;description&quot;: &quot;Financial infrastructure platform for businesses.&quot;,
  &quot;industry&quot;: 40205020,
  &quot;specialties&quot;: [&quot;payments&quot;, &quot;billing&quot;, &quot;fraud prevention&quot;],
  &quot;x_profile&quot;: &quot;https://x.com/stripe&quot;
}
</code></pre>
<p>Sample <code>Employee Count</code>-style shape:</p>
<pre><code class="language-json">{
  &quot;website&quot;: &quot;https://stripe.com&quot;,
  &quot;employee_count&quot;: 8000
}
</code></pre>
<p>Sample <code>Company Funding</code>-style shape:</p>
<pre><code class="language-json">{
  &quot;company_name&quot;: &quot;Stripe&quot;,
  &quot;funding_rounds&quot;: [
    {
      &quot;round_type&quot;: &quot;Series H&quot;,
      &quot;announced_date&quot;: &quot;2023-03-15&quot;,
      &quot;money_raised&quot;: 6500000000,
      &quot;lead_investors&quot;: [&quot;Andreessen Horowitz&quot;]
    }
  ]
}
</code></pre>
<h3 id="add-company-changes">Add company changes</h3>
<p>This is where lead generation becomes timely instead of decorative.</p>
<p>NinjaPear’s Updates docs are refreshingly direct. The product tracks:</p>
<ul>
<li>blog posts</li>
<li>X posts</li>
<li>meaningful website changes</li>
</ul>
<p>And the output can be consumed as RSS. Good. That means you can pipe it into Slack, a CRM worker, or a queue without inventing another ugly polling layer.</p>
<p>Sample <code>Company Updates</code> response shape:</p>
<pre><code class="language-json">{
  &quot;updates&quot;: [
    {
      &quot;title&quot;: &quot;New Checkout Experience for Global Payments&quot;,
      &quot;category&quot;: &quot;blog&quot;,
      &quot;summary&quot;: &quot;Stripe announced a new checkout experience focused on international merchants.&quot;,
      &quot;link&quot;: &quot;https://stripe.com/blog/new-checkout&quot;,
      &quot;published_at&quot;: &quot;2026-02-27T10:00:00Z&quot;
    },
    {
      &quot;title&quot;: &quot;Pricing page updated, new Enterprise tier added&quot;,
      &quot;category&quot;: &quot;website update&quot;,
      &quot;summary&quot;: &quot;A new enterprise pricing tier was detected on the public pricing page.&quot;,
      &quot;link&quot;: &quot;https://stripe.com/pricing&quot;,
      &quot;published_at&quot;: &quot;2026-02-27T07:00:00Z&quot;
    },
    {
      &quot;title&quot;: &quot;We just launched Stripe Billing v3&quot;,
      &quot;category&quot;: &quot;x&quot;,
      &quot;summary&quot;: &quot;Product launch announcement on X.&quot;,
      &quot;link&quot;: &quot;https://x.com/stripe/status/1839200000000000000&quot;,
      &quot;published_at&quot;: &quot;2026-02-26T14:30:00Z&quot;
    }
  ]
}
</code></pre>
<p>The pricing examples in NinjaPear’s Company Monitor launch post are also useful sanity checks:</p>
<table>
<thead>
<tr>
<th>Scenario</th>
<th style="text-align: right;">Targets</th>
<th>Frequency</th>
<th style="text-align: right;">Credits/month</th>
</tr>
</thead>
<tbody>
<tr>
<td>VC tracking portfolio</td>
<td style="text-align: right;">20</td>
<td>Weekly</td>
<td style="text-align: right;">~346</td>
</tr>
<tr>
<td>Startup monitoring competitors</td>
<td style="text-align: right;">10</td>
<td>Daily</td>
<td style="text-align: right;">~1,203</td>
</tr>
<tr>
<td>Sales team watching prospect accounts</td>
<td style="text-align: right;">5</td>
<td>Daily</td>
<td style="text-align: right;">~453</td>
</tr>
</tbody>
</table>
<p>Those are low enough that a founder or a small GTM engineering team can test timing-based lead generation without making it a budgeting drama.</p>
<h3 id="set-up-monitoring">Set up monitoring</h3>
<p>The docs describe the Monitor API as returning an RSS feed of company changes.</p>
<p>If the exact SDK call shape moves around later, keep the wrapper isolated so you only change one file.</p>
<pre><code class="language-python">def create_monitor_feed(api_client, websites: list[str], frequency: str = &quot;daily&quot;):
    api = ninjapear.CompanyAPIApi(api_client)
    return api.create_monitor_feed({&quot;targets&quot;: websites, &quot;frequency&quot;: frequency})
</code></pre>
<p>Sample monitor response shape:</p>
<pre><code class="language-json">{
  &quot;rss_feed_url&quot;: &quot;https://nubela.co/api/v1/monitor/feed/demo-stripe.xml&quot;,
  &quot;targets&quot;: [
    &quot;https://stripe.com&quot;,
    &quot;https://shopify.com&quot;
  ],
  &quot;frequency&quot;: &quot;daily&quot;
}
</code></pre>
<h3 id="build-a-score">Build a score</h3>
<p>The scoring stub from the plan is good enough to start:</p>
<pre><code class="language-python">def score_account(is_competitor_customer: bool, employee_count: int | None, recent_updates: int, role_match: bool) -&gt; float:
    score = 0.0
    if is_competitor_customer:
        score += 40
    if employee_count and 50 &lt;= employee_count &lt;= 2000:
        score += 20
    score += min(recent_updates * 10, 20)
    if role_match:
        score += 20
    return score
</code></pre>
<p>And here is the output signal table I would use:</p>
<table>
<thead>
<tr>
<th>Output signal</th>
<th style="text-align: right;">Scoring impact</th>
<th>Why it matters</th>
</tr>
</thead>
<tbody>
<tr>
<td>Competitor customer</td>
<td style="text-align: right;">+40</td>
<td>Strongest evidence of category demand</td>
</tr>
<tr>
<td>Employee count in target band</td>
<td style="text-align: right;">+20</td>
<td>Filters out bad-fit tiny and giant accounts</td>
</tr>
<tr>
<td>Recent updates</td>
<td style="text-align: right;">up to +20</td>
<td>Improves timing and relevance</td>
</tr>
<tr>
<td>Role match found</td>
<td style="text-align: right;">+20</td>
<td>Confirms a likely route to action</td>
</tr>
</tbody>
</table>
<p>If you want a person score too:</p>
<pre><code class="language-python">def score_person(person: ProspectPerson, account: ProspectAccount) -&gt; float:
    score = 0.0
    if person.role and any(k in person.role.lower() for k in ['revenue', 'sales', 'marketing', 'growth', 'operations']):
        score += 40
    if person.work_email:
        score += 20
    if person.x_handle:
        score += 10
    score += min(account.score / 3, 30)
    return round(score, 2)
</code></pre>
<p>More outreach is not better outreach. Timed outreach is better outreach.</p>
<blockquote class="reddit-embed-bq" style="height:316px" data-embed-height="316">
<a href="https://www.reddit.com/r/b2b_sales/comments/1shcjfm/most_email_outreach_agencies_are_just_spam/?ref=nubela.co">Most email outreach agencies are just spam factories in disguise.</a><br> by
<a href="https://www.reddit.com/user/Difficult-Arrival665/?ref=nubela.co">u/Difficult-Arrival665</a> in
<a href="https://www.reddit.com/r/b2b_sales/?ref=nubela.co">b2b_sales</a>
</blockquote>
<script async="" src="https://embed.reddit.com/widgets.js" charset="UTF-8"></script>

<blockquote>
<p>“The real issue is agencies optimize for volume because that's what they can sell, not what's actually gonna work for your specific ICP.”</p>
</blockquote>
<p>Exactly. Timing and fit beat volume theater.</p>
<h2 id="wire-the-pydanticai-agent">Wire the PydanticAI agent</h2>
<p>Do not turn this into a full PydanticAI tutorial. You only need enough structure for typed orchestration.</p>
<p>I keep orchestration in one place. Not one script for customers, another notebook for people, and a mystery automation in some no-code tool nobody wants to own.</p>
<p>Typed output model:</p>
<pre><code class="language-python">from pydantic import BaseModel

class LeadGenResult(BaseModel):
    accounts: list[ProspectAccount]
    people: list[ProspectPerson]
    summary: str
</code></pre>
<p>Agent initialization:</p>
<pre><code class="language-python">from pydantic_ai import Agent
from pydantic_ai.models.openrouter import OpenRouterModel
from pydantic_ai.providers.openrouter import OpenRouterProvider

model = OpenRouterModel(
    settings.openrouter_model,
    provider=OpenRouterProvider(api_key=settings.openrouter_api_key),
)

agent = Agent(
    model,
    output_type=LeadGenResult,
    system_prompt=&quot;Build an agentic lead generation queue using NinjaPear data and return typed results only.&quot;,
)
</code></pre>
<p>Tool-wrapped function:</p>
<pre><code class="language-python">from pydantic_ai import RunContext

@agent.tool
async def build_queue(ctx: RunContext[AgentDeps], seeds: list[str], target_role: str = &quot;Head of Revenue Operations&quot;) -&gt; dict:
    with make_client(ctx.deps.settings.ninjapear_api_key) as api_client:
        result = run_pipeline(api_client, seeds=seeds, target_role=target_role)
    return result.model_dump()
</code></pre>
<p>That is enough.</p>
<p>What matters is not the agent ceremony. What matters is that your lead generation system returns typed structures, not a blob of optimistic prose.</p>
<h2 id="add-ninjapear-tools">Add NinjaPear tools</h2>
<p>This is the practical bridge between docs and working code.</p>
<p>I put the wrappers in <code>app/tools/ninjapear.py</code>.</p>
<p>Required wrappers in the project:</p>
<ul>
<li><code>get_customer_listing</code></li>
<li><code>get_competitors</code></li>
<li><code>get_company_details</code></li>
<li><code>get_employee_count</code></li>
<li><code>get_company_updates</code></li>
<li><code>get_company_funding</code></li>
<li><code>get_person_profile</code></li>
<li><code>find_similar_people</code></li>
<li><code>create_monitor_feed</code></li>
</ul>
<p>The rule I used in the repo is simple:</p>
<ul>
<li>NinjaPear code is real</li>
<li>non-NinjaPear helpers are mocked on purpose</li>
</ul>
<p>Model table:</p>
<table>
<thead>
<tr>
<th>Model</th>
<th>Fields</th>
<th>Why it exists</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>ProspectAccount</code></td>
<td>source, relationship, website, description, specialties, score</td>
<td>Ranked account object for the queue</td>
</tr>
<tr>
<td><code>ProspectPerson</code></td>
<td>domain, name, role, email, X handle, score</td>
<td>Human routing layer after account qualification</td>
</tr>
<tr>
<td><code>CompanyUpdate</code></td>
<td>title, category, summary, link, date</td>
<td>Timing signal for recency-based prioritization</td>
</tr>
<tr>
<td><code>LeadGenResult</code></td>
<td>accounts, people, summary</td>
<td>Typed output for the agent and CLI</td>
</tr>
</tbody>
</table>
<p>And yes, I mock these helpers:</p>
<pre><code class="language-python">def verify_email(email: str) -&gt; dict:
    return {
        &quot;email&quot;: email,
        &quot;is_valid&quot;: email.endswith(&quot;@example.com&quot;) is False,
        &quot;provider&quot;: &quot;mock&quot;,
    }


def send_email(to: str, subject: str, body: str) -&gt; dict:
    return {
        &quot;to&quot;: to,
        &quot;subject&quot;: subject,
        &quot;status&quot;: &quot;mocked-not-sent&quot;,
    }
</code></pre>
<p>Be honest in your build. Mock what you do not actually provide yet. Fake integration theater is how teams confuse themselves.</p>
<h2 id="build-the-full-github-project">Build the full GitHub project</h2>
<p>I built the starter repo for this article here:</p>
<p><strong>GitHub:</strong> https://github.com/NinjaPear-Shares/agentic-lead-generation</p>
<p>Two implementation details the admin specifically asked for are now handled properly:</p>
<ul>
<li>the repo root itself has a <code>README.md</code>, not a nested project folder pretending to be the root</li>
<li>the <code>README.md</code> links back to this article at <code>https://nubela.co/blog/agentic-lead-generation</code></li>
</ul>
<p>Repo tree:</p>
<pre><code class="language-text">agentic-lead-generation/
├── README.md
├── .env.example
├── requirements.txt
├── app/
│   ├── config.py
│   ├── models.py
│   ├── main.py
│   ├── scoring.py
│   ├── tools/
│   │   ├── ninjapear.py
│   │   └── mock_email.py
│   └── workflows/
│       └── pipeline.py
└── examples/
    └── run_demo.py
</code></pre>
<p>A few short excerpts.</p>
<p><code>config.py</code></p>
<pre><code class="language-python">class Settings(BaseModel):
    ninjapear_api_key: str = Field(..., alias='NINJAPEAR_API_KEY')
    openrouter_api_key: str = Field(..., alias='OPENROUTER_API_KEY')
    openrouter_model: str = Field(default='anthropic/claude-sonnet-4-5', alias='OPENROUTER_MODEL')
</code></pre>
<p><code>models.py</code></p>
<pre><code class="language-python">class ProspectAccount(BaseModel):
    source_company: str
    relationship_type: Literal['customer', 'investor', 'partner_platform', 'competitor']
    website: str | None = None
    normalized_domain: str | None = None
    name: str
    score: float = 0.0
</code></pre>
<p><code>tools/ninjapear.py</code></p>
<pre><code class="language-python">def make_client(api_key: str):
    configuration = ninjapear.Configuration(host='https://nubela.co', access_token=api_key)
    return ninjapear.ApiClient(configuration)
</code></pre>
<p><code>scoring.py</code></p>
<pre><code class="language-python">def score_account(is_competitor_customer: bool, employee_count: int | None, recent_updates: int, role_match: bool) -&gt; float:
    score = 0.0
    if is_competitor_customer:
        score += 40
</code></pre>
<p><code>workflows/pipeline.py</code></p>
<pre><code class="language-python">def run_pipeline(api_client, seeds: list[str], target_role: str = 'Head of Revenue Operations') -&gt; LeadGenResult:
    accounts = pull_competitor_customers(api_client, seeds)
    competitors = expand_competitors(api_client, seeds, max_depth=1)
</code></pre>
<p><code>main.py</code></p>
<pre><code class="language-python">result = agent.run_sync(
    'Build the lead generation queue for Stripe and Shopify competitors.',
    deps=AgentDeps(settings=settings)
)
</code></pre>
<p><code>examples/run_demo.py</code></p>
<pre><code class="language-python">result = run_pipeline(
    api_client,
    seeds=['https://stripe.com', 'https://shopify.com'],
    target_role='Head of Revenue Operations',
)
</code></pre>
<p>That repo is the lead magnet. Not a spreadsheet. Not a PDF full of fluff. Actual code.</p>
<h2 id="run-an-end-to-end-example">Run an end-to-end example</h2>
<p>Now let’s run the whole lead generation flow from the perspective of a founder using <strong>Stripe</strong> and <strong>Shopify</strong> as the competitive wedge.</p>
<p>Input:</p>
<pre><code class="language-python">seeds = [&quot;https://stripe.com&quot;, &quot;https://shopify.com&quot;]
target_role = &quot;Head of Revenue Operations&quot;
</code></pre>
<p>Runnable demo shape:</p>
<pre><code class="language-python">from app.config import Settings
from app.tools.ninjapear import make_client
from app.workflows.pipeline import run_pipeline


def main():
    settings = Settings.from_env()
    with make_client(settings.ninjapear_api_key) as api_client:
        result = run_pipeline(
            api_client,
            seeds=['https://stripe.com', 'https://shopify.com'],
            target_role='Head of Revenue Operations',
        )
    print(result.model_dump_json(indent=2))
</code></pre>
<p>What happens, in order:</p>
<ol>
<li>Pull customer lists for Stripe and Shopify.</li>
<li>Expand competitor graph by one layer.</li>
<li>Re-run customer pull on selected adjacent competitors.</li>
<li>Keep top accounts.</li>
<li>Find similar people at those accounts.</li>
<li>Enrich with headcount and updates.</li>
<li>Score and rank.</li>
</ol>
<p>Representative intermediate account output after Loop 1:</p>
<pre><code class="language-json">[
  {
    &quot;source_company&quot;: &quot;https://stripe.com&quot;,
    &quot;relationship_type&quot;: &quot;customer&quot;,
    &quot;name&quot;: &quot;Apple&quot;,
    &quot;website&quot;: &quot;https://www.apple.com&quot;,
    &quot;normalized_domain&quot;: &quot;apple.com&quot;,
    &quot;description&quot;: &quot;Apple Inc. designs, manufactures, and markets smartphones, personal computers, tablets, wearables, and accessories worldwide.&quot;,
    &quot;score&quot;: 0
  },
  {
    &quot;source_company&quot;: &quot;https://shopify.com&quot;,
    &quot;relationship_type&quot;: &quot;customer&quot;,
    &quot;name&quot;: &quot;Toyota&quot;,
    &quot;website&quot;: &quot;https://toyota.com&quot;,
    &quot;normalized_domain&quot;: &quot;toyota.com&quot;,
    &quot;description&quot;: &quot;Global automotive manufacturer.&quot;,
    &quot;score&quot;: 0
  }
]
</code></pre>
<p>Representative intermediate people output after Loop 3:</p>
<pre><code class="language-json">[
  {
    &quot;account_domain&quot;: &quot;shopify.com&quot;,
    &quot;full_name&quot;: &quot;Jane Doe&quot;,
    &quot;role&quot;: &quot;Head of Revenue Operations&quot;,
    &quot;work_email&quot;: &quot;[email protected]&quot;,
    &quot;x_handle&quot;: &quot;janedoe&quot;,
    &quot;score&quot;: 0
  }
]
</code></pre>
<p>Representative final JSON shape:</p>
<pre><code class="language-json">{
  &quot;accounts&quot;: [
    {
      &quot;website&quot;: &quot;https://example.com&quot;,
      &quot;source_company&quot;: &quot;https://stripe.com&quot;,
      &quot;relationship_type&quot;: &quot;customer&quot;,
      &quot;score&quot;: 78
    }
  ],
  &quot;people&quot;: [
    {
      &quot;full_name&quot;: &quot;Jane Doe&quot;,
      &quot;role&quot;: &quot;Head of Revenue Operations&quot;,
      &quot;account_domain&quot;: &quot;example.com&quot;
    }
  ],
  &quot;summary&quot;: &quot;Found 14 high-fit accounts and 9 likely buyer profiles from 2 seed competitors.&quot;
}
</code></pre>
<p>If you want to generate an outreach task after that, fine. Just keep the email send mocked until the queue quality is real.</p>
<p>Because this is also true:</p>
<blockquote class="twitter-tweet"><p lang="en" dir="ltr">Why did AI SDRs fail?<br><br>Because their data was wrong<br><br>they were optimizing for leads<br><br>not for revenue generated<br><br>...<br><br>Data Pipeline + Data Warehouse + Agent Infrastructure</p>&mdash; Cody Schneider (@codyschneider) <a href="https://x.com/codyschneider/status/2044475848707764732?ref=nubela.co">Wed Apr 15 18:00:01 +0000 2026</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

<p>I agree with the important part. The bottleneck is usually not the model. It is the data layer and the workflow.</p>
<h2 id="use-the-ninjapear-skill">Use the NinjaPear Skill</h2>
<p>If you already use an AI coding agent, install the NinjaPear Skill first.</p>
<p>Seriously. It will save you dumb mistakes on auth, pagination, endpoint selection, and error handling.</p>
<p>NinjaPear’s docs say the Skill teaches coding agents:</p>
<ul>
<li>auth setup</li>
<li>endpoint selection with cost awareness</li>
<li>Python and JavaScript SDK usage</li>
<li>pagination handling</li>
<li>rate limit handling</li>
<li>error handling for <code>401</code>, <code>403</code>, <code>404</code>, <code>429</code>, <code>500</code>, <code>503</code></li>
<li>timeout configuration</li>
</ul>
<p>Install commands:</p>
<pre><code class="language-bash">npx skills add NinjaPear/ninjapear-skill -a claude-code
npx skills add NinjaPear/ninjapear-skill -a codex
npx skills add NinjaPear/ninjapear-skill -a opencode
</code></pre>
<p>That belongs in this guide because the entire point is shipping agentic lead generation that actually works.</p>
<p>Not prompt theater. Not “look what my SDR agent wrote.” Real integration code.</p>
<p>If you want the blunt version, here it is.</p>
<p>Most lead generation content is still explaining funnels to people who need systems.</p>
<p>What actually matters is whether your stack can answer four things, in order:</p>
<ol>
<li><strong>Who is already buying in the category?</strong></li>
<li><strong>Which adjacent accounts should I care about next?</strong></li>
<li><strong>Which humans are worth routing to?</strong></li>
<li><strong>Why is now the right moment?</strong></li>
</ol>
<p>If your system cannot answer all four, your “agentic lead generation” stack is mostly branding.</p>
<p>So here is the honest next step: clone the repo, plug in your API keys, and run it against two competitors you already know. Start with Stripe and Shopify if you want the exact wedge from this article. You will learn more from one afternoon of real implementation than from ten generic lead generation posts pretending CSVs are strategy.</p>
<p>And if you are building with Claude Code, Codex, or Opencode, install the NinjaPear Skill before you touch the code. It will save you a bunch of stupid mistakes.</p>
<!--kg-card-end: html-->
 ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ TruePeopleSearch Review 2026: My Verdict as CEO + FREE data removal tracker download ]]></title>
        <description><![CDATA[ Should You Use TruePeopleSearch, Remove Yourself From It, or Use Something Else?
Pick the job-to-be-done. The answer changes fast.

Find an old friend
Identify a spam caller
Check if my data is exposed
Research a company executive




Recommended action
Use TruePeopleSearch


Privacy risk



Low


Best-fit tools
TruePeopleSearch, FastPeopleSearch


Next step ]]></description>
        <link>https://nubela.co/blog/truepeoplesearch-review/</link>
        <guid isPermaLink="false">69e03ff544d9df00016fef6c</guid>
        <category><![CDATA[ true people search ]]></category>
        <dc:creator><![CDATA[ Alex Meyer ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2026/04/alex.png"/>
        <pubDate>Thu, 16 Apr 2026 09:48:40 +0800</pubDate>
        <media:content url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2026/04/cover_1.webp" medium="image"/>
        <content:encoded><![CDATA[ 
<!--kg-card-begin: html-->
<div style="border:1px solid #e5e7eb;border-radius:16px;padding:18px;margin:18px 0 24px 0;background:linear-gradient(180deg,#fff,#f8fafc);font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;">
  <div style="font-size:18px;font-weight:700;margin-bottom:8px;">Should You Use TruePeopleSearch, Remove Yourself From It, or Use Something Else?</div>
  <div style="color:#475569;font-size:14px;margin-bottom:14px;">Pick the job-to-be-done. The answer changes fast.</div>
  <div style="display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px;">
    <button onclick="tpsPick('friend')" style="border:1px solid #cbd5e1;background:#fff;padding:10px 12px;border-radius:999px;cursor:pointer;">Find an old friend</button>
    <button onclick="tpsPick('spam')" style="border:1px solid #cbd5e1;background:#fff;padding:10px 12px;border-radius:999px;cursor:pointer;">Identify a spam caller</button>
    <button onclick="tpsPick('exposed')" style="border:1px solid #cbd5e1;background:#fff;padding:10px 12px;border-radius:999px;cursor:pointer;">Check if my data is exposed</button>
    <button onclick="tpsPick('exec')" style="border:1px solid #cbd5e1;background:#fff;padding:10px 12px;border-radius:999px;cursor:pointer;">Research a company executive</button>
  </div>
  <div id="tps-widget" style="border:1px solid #e2e8f0;border-radius:12px;padding:16px;background:#fff;">
    <div style="display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px;">
      <div>
        <div style="font-size:12px;color:#64748b;text-transform:uppercase;letter-spacing:.08em;">Recommended action</div>
        <div id="tps-action" style="font-size:20px;font-weight:700;margin-top:4px;">Use TruePeopleSearch</div>
      </div>
      <div>
        <div style="font-size:12px;color:#64748b;text-transform:uppercase;letter-spacing:.08em;">Privacy risk</div>
        <div style="margin-top:8px;background:#e2e8f0;border-radius:999px;height:12px;overflow:hidden;">
          <div id="tps-riskbar" style="height:12px;width:38%;background:#22c55e;"></div>
        </div>
        <div id="tps-risk" style="font-size:14px;margin-top:6px;font-weight:600;">Low</div>
      </div>
      <div>
        <div style="font-size:12px;color:#64748b;text-transform:uppercase;letter-spacing:.08em;">Best-fit tools</div>
        <div id="tps-tools" style="font-size:14px;margin-top:6px;line-height:1.5;">TruePeopleSearch, FastPeopleSearch</div>
      </div>
      <div>
        <div style="font-size:12px;color:#64748b;text-transform:uppercase;letter-spacing:.08em;">Next step</div>
        <a id="tps-link" href="#my-blunt-take-after-testing-truepeoplesearch-and-its-alternatives" style="display:inline-block;margin-top:8px;background:#111827;color:#fff;text-decoration:none;padding:10px 12px;border-radius:10px;">Jump to section</a>
      </div>
    </div>
    <div style="margin-top:16px;overflow:auto;">
      <table style="width:100%;border-collapse:collapse;font-size:14px;">
        <tr style="background:#f8fafc;">
          <th style="text-align:left;padding:10px;border-bottom:1px solid #e5e7eb;">Factor</th>
          <th style="text-align:left;padding:10px;border-bottom:1px solid #e5e7eb;">Score</th>
        </tr>
        <tr><td style="padding:10px;border-bottom:1px solid #f1f5f9;">Free access</td><td id="s1" style="padding:10px;border-bottom:1px solid #f1f5f9;">High</td></tr>
        <tr><td style="padding:10px;border-bottom:1px solid #f1f5f9;">Data depth</td><td id="s2" style="padding:10px;border-bottom:1px solid #f1f5f9;">Medium</td></tr>
        <tr><td style="padding:10px;border-bottom:1px solid #f1f5f9;">Ad clutter</td><td id="s3" style="padding:10px;border-bottom:1px solid #f1f5f9;">Medium</td></tr>
        <tr><td style="padding:10px;border-bottom:1px solid #f1f5f9;">Privacy posture</td><td id="s4" style="padding:10px;border-bottom:1px solid #f1f5f9;">Weak</td></tr>
        <tr><td style="padding:10px;">Fit-for-purpose</td><td id="s5" style="padding:10px;">Good for casual lookups</td></tr>
      </table>
    </div>
  </div>
</div>

<script>
const TPS_DATA = {
  friend: {
    action: 'Use TruePeopleSearch', risk: 'Medium', width: '56%', color: '#f59e0b',
    tools: 'TruePeopleSearch, FastPeopleSearch, Whitepages',
    link: '#what-truepeoplesearch-actually-gives-you-for-free',
    linkText: 'See free features',
    scores: ['High', 'Medium', 'Medium', 'Weak', 'Solid for one-off lookups']
  },
  spam: {
    action: 'Use TruePeopleSearch', risk: 'Low', width: '34%', color: '#22c55e',
    tools: 'TruePeopleSearch, Whitepages',
    link: '#who-should-use-truepeoplesearch-and-who-absolutely-should-not',
    linkText: 'See best-fit use cases',
    scores: ['High', 'Medium', 'Medium', 'Weak', 'Great for quick reverse phone checks']
  },
  exposed: {
    action: 'Start opt-out now', risk: 'High', width: '86%', color: '#ef4444',
    tools: 'TruePeopleSearch, FastPeopleSearch, Spokeo',
    link: '#how-the-truepeoplesearch-opt-out-actually-works-in-2026',
    linkText: 'Go to removal steps',
    scores: ['N/A', 'N/A', 'N/A', 'Weak', 'Remove, re-check, repeat']
  },
  exec: {
    action: 'Use NinjaPear instead', risk: 'Low', width: '28%', color: '#22c55e',
    tools: 'NinjaPear, company websites, X, public sources',
    link: '#when-ninjapear-is-the-better-alternative-for-professionalcompany-research',
    linkText: 'See the B2B alternative',
    scores: ['Trial available', 'High', 'Low', 'Stronger', 'Built for professional/company intel']
  }
};
function tpsPick(k){
  const d = TPS_DATA[k];
  document.getElementById('tps-action').textContent = d.action;
  document.getElementById('tps-risk').textContent = d.risk;
  const bar = document.getElementById('tps-riskbar');
  bar.style.width = d.width; bar.style.background = d.color;
  document.getElementById('tps-tools').textContent = d.tools;
  const link = document.getElementById('tps-link');
  link.href = d.link; link.textContent = d.linkText;
  ['s1','s2','s3','s4','s5'].forEach((id,i)=>document.getElementById(id).textContent=d.scores[i]);
}
</script>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<p>The first time <strong>true people search</strong> helps you identify a mystery caller, it feels clever. The first time you search your own name and see your address history sitting there for strangers, it feels like a small privacy horror show.</p>
<blockquote class="reddit-embed-bq" style="height:316px" data-embed-height="316"><a href="https://www.reddit.com/r/privacy/comments/1at4xeh/how_do_you_get_your_data_off_true_people_search/?ref=nubela.co">How do you get your data off true people search?</a><br> by <a href="https://www.reddit.com/user/rockhardpebble0/?ref=nubela.co">u/rockhardpebble0</a> in <a href="https://www.reddit.com/r/privacy/?ref=nubela.co">r/privacy</a></blockquote>
<script async="" src="https://embed.reddit.com/widgets.js" charset="UTF-8"></script>

<p>I’ve spent too many years inside ugly data products to pretend otherwise. TruePeopleSearch is useful. It is also invasive in a way that stops being abstract the second you run your own name.</p>
<p>My blunt take: it’s genuinely good for quick reverse phone lookups, checking an address trail, and finding a person when you only have partial info. But the privacy tradeoff is not some accidental side effect. It’s baked into the category.</p>
<h2 id="tldr">TL;DR</h2>
<p>If you want the fast answer before the long answer, here it is.</p>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<div class="lead-magnet-cta" style="border:1px solid #e0e0e0;border-radius:8px;padding:20px;margin:24px 0;background:#f8f9fb;">
<strong>📥 Free download: Data Broker Opt-Out Tracker + 90-Day Recheck Checklist</strong><br>
<span style="color:#555;">A practical tracker for removal requests, confirmation emails, expected removal dates, and 90-day rechecks across the broker sites that matter.</span><br>
<a href="https://f000.backblazeb2.com/file/agent-pub-filestore/_bundle-ba713bf6.zip?ref=nubela.co" style="display:inline-block;margin-top:10px;padding:8px 14px;background:#1d70b8;color:#fff;border-radius:6px;text-decoration:none;">Download now →</a>
</div>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<table>
<thead>
<tr>
<th>Factor</th>
<th>TruePeopleSearch</th>
<th>FastPeopleSearch</th>
<th>Whitepages</th>
<th>Spokeo</th>
<th>Winner</th>
</tr>
</thead>
<tbody>
<tr>
<td>Free lookup depth</td>
<td>Strong</td>
<td>Strong</td>
<td>Limited</td>
<td>Limited</td>
<td>TruePeopleSearch / FastPeopleSearch</td>
</tr>
<tr>
<td>Search speed</td>
<td>Fast</td>
<td>Fast</td>
<td>Fast</td>
<td>Medium</td>
<td>TruePeopleSearch / FastPeopleSearch</td>
</tr>
<tr>
<td>UX clarity</td>
<td>Weak</td>
<td>Weak</td>
<td>Better</td>
<td>Better</td>
<td>Whitepages</td>
</tr>
<tr>
<td>Pricing</td>
<td>Free</td>
<td>Free</td>
<td>Mixed paid layers</td>
<td>Paid reports</td>
<td>TruePeopleSearch / FastPeopleSearch</td>
</tr>
<tr>
<td>Privacy posture</td>
<td>Poor</td>
<td>Poor</td>
<td>Better documented</td>
<td>Middling</td>
<td>Whitepages</td>
</tr>
<tr>
<td>Reverse phone lookup</td>
<td>Strong</td>
<td>Strong</td>
<td>Decent</td>
<td>Decent</td>
<td>TruePeopleSearch / FastPeopleSearch</td>
</tr>
<tr>
<td>High-stakes verification</td>
<td>No</td>
<td>No</td>
<td>Better, still imperfect</td>
<td>Better, still imperfect</td>
<td>None</td>
</tr>
<tr>
<td>Professional/company research</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>NinjaPear</td>
</tr>
<tr>
<td>Overall score</td>
<td><strong>3.1/5</strong></td>
<td><strong>3.0/5</strong></td>
<td><strong>3.4/5</strong></td>
<td><strong>3.2/5</strong></td>
<td><strong>Whitepages</strong> for polish / <strong>TruePeopleSearch</strong> for free utility</td>
</tr>
</tbody>
</table>
<h2 id="my-blunt-take-after-testing-truepeoplesearch-and-its-alternatives">My blunt take after testing TruePeopleSearch and its alternatives</h2>
<p>Here’s the answer without the usual content-mill throat clearing.</p>
<p>TruePeopleSearch is useful. If you need to do a quick reverse phone lookup, check whether a person still ties to an old address, or find someone when all you have is a partial name plus state, it often gets you useful info faster than prettier paid sites.</p>
<p>That’s the good half.</p>
<p>The bad half is what happens when you search yourself. Current and past addresses. Phone numbers. Relatives. Associates. Sometimes property-related context. Suddenly the product stops feeling clever and starts feeling invasive.</p>
<p>That tension is the whole story. The product is helpful precisely because it aggregates personal details many people do not expect to be this searchable in one place.</p>
<h3 id="the-one-line-verdict">The one-line verdict</h3>
<ul>
<li><strong>Use it</strong> for fast, casual, one-off lookups.</li>
<li><strong>Do not trust it</strong> for high-stakes verification.</li>
<li><strong>Do not use it</strong> for employment, tenant, or compliance-sensitive screening.</li>
<li><strong>If your profile is on it, remove it now.</strong></li>
</ul>
<h2 id="what-truepeoplesearch-actually-gives-you-for-free">What TruePeopleSearch actually gives you for free</h2>
<p>Most articles about <strong>true people search</strong> either moralize or hand-wave. Neither helps. So here’s the practical answer.</p>
<p>According to the official Google Play listing for the TruePeopleSearch app, the service offers:</p>
<ul>
<li>name search</li>
<li>reverse phone lookup</li>
<li>reverse address lookup</li>
<li>current and past addresses</li>
<li>phone numbers</li>
<li>relatives / associates / friends</li>
<li>email addresses</li>
<li>possible property information</li>
<li>possible business listings</li>
</ul>
<p>The same listing says it has updated records on “nearly every single adult living in the US” and that users can get “full address histories, phone numbers, email addresses, relatives, friends, associates, property information &amp; more.”</p>
<p>That’s why it gets used. It solves very specific low-friction problems:</p>
<ul>
<li>“Who owns this number?”</li>
<li>“Is this old address still tied to them?”</li>
<li>“Do I have the right John Smith in Arizona?”</li>
</ul>
<p>For those jobs, it can work damn well.</p>
<h3 id="what-100-free-really-means">What “100% free” really means</h3>
<p>This is the cleanest explanation of the business model, and it comes from the app listing itself:</p>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<div style="border:1px solid #cfd9de;padding:16px;margin:16px 0;border-radius:12px;font-family:-apple-system,sans-serif;max-width:550px;background:#fff;">
  <div style="display:flex;align-items:center;margin-bottom:8px;">
    <div>
      <strong style="font-size:15px;">Google Play listing</strong>
      <span style="color:#536471;font-size:14px;"> @truepeoplesearch-app</span>
    </div>
  </div>
  <div style="font-size:15px;line-height:1.5;margin-bottom:8px;">Our content is 100% free, however this app contains ads that will send you to paid services if you click on them. Ads are labeled with 'ad', 'sponsored links' etc.</div>
  <div style="color:#536471;font-size:13px;">Public product description</div>
  <a href="https://play.google.com/store/apps/details?id=com.freedataservices.truepeoplesearch&hl=en_US&ref=nubela.co" style="color:#536471;font-size:12px;">source</a>
</div>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<p>That matters.</p>
<p>Because “100% free” is technically true and strategically incomplete. You may not pay with a card, but the experience is still monetized. The friction shows up in ads, sponsored links, and partner funnels if you click the wrong thing.</p>
<p>That doesn’t make it fake. It does mean the product is not working purely in your interest.</p>
<h2 id="feature-by-feature-scorecard-truepeoplesearch-vs-fastpeoplesearch-vs-whitepages-vs-spokeo">Feature-by-feature scorecard: TruePeopleSearch vs FastPeopleSearch vs Whitepages vs Spokeo</h2>
<p>I care less about whose homepage looks cleaner and more about who gets me useful information with the fewest stupid clicks.</p>
<table>
<thead>
<tr>
<th>Tool</th>
<th>Data Richness</th>
<th>Freshness</th>
<th>Search Speed</th>
<th>Pricing</th>
<th>UX Clarity</th>
<th>Privacy Posture</th>
<th>Mobile Experience</th>
<th>Trustworthiness</th>
<th>Overall</th>
</tr>
</thead>
<tbody>
<tr>
<td>TruePeopleSearch</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐☆☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐★★★★</td>
<td>⭐⭐☆☆☆</td>
<td>⭐☆☆☆☆</td>
<td>⭐⭐⭐☆☆</td>
<td>⭐⭐☆☆☆</td>
<td><strong>3.1/5</strong></td>
</tr>
<tr>
<td>FastPeopleSearch</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐☆☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐★★★★</td>
<td>⭐⭐☆☆☆</td>
<td>⭐☆☆☆☆</td>
<td>⭐⭐⭐☆☆</td>
<td>⭐⭐☆☆☆</td>
<td><strong>3.0/5</strong></td>
</tr>
<tr>
<td>Whitepages</td>
<td>⭐⭐⭐☆☆</td>
<td>⭐⭐⭐☆☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐☆☆☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐☆☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐☆</td>
<td><strong>3.4/5</strong></td>
</tr>
<tr>
<td>Spokeo</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐☆☆</td>
<td>⭐⭐☆☆☆</td>
<td>⭐⭐⭐☆☆</td>
<td>⭐⭐☆☆☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐☆☆</td>
<td><strong>3.2/5</strong></td>
</tr>
</tbody>
</table>
<h3 id="my-ratings-rubric">My ratings rubric</h3>
<p>I’m not handing out stars based on vibes.</p>
<ul>
<li><strong>Freshness</strong> = how often moved addresses / changed numbers seem reflected</li>
<li><strong>Richness</strong> = how much useful info appears before a paywall</li>
<li><strong>UX clarity</strong> = how hard it is to avoid ads / sponsored junk and get to the real action</li>
<li><strong>Privacy posture</strong> = how understandable the opt-out is, whether removals appear to stick, whether re-checking is necessary</li>
<li><strong>Trustworthiness</strong> = whether the product feels like it is helping you or steering you</li>
</ul>
<p>That last one matters more than most reviews admit.</p>
<p>A people-search engine is already asking for a lot of trust. If the interface feels like a carnival game, I downgrade it hard.</p>
<h2 id="the-privacy-tradeoff-is-the-real-product">The privacy tradeoff is the real product</h2>
<p>This is the emotional center of the whole <strong>true people search</strong> conversation.</p>
<p>The utility exists because the site aggregates personal details people do not expect to be this searchable in one place. Current and past addresses. Phone numbers. Relatives. Associates. Possible property data. That’s the value.</p>
<p>It’s also the reason normal people get creeped out the moment they search themselves.</p>
<p>Incogni’s TruePeopleSearch removal guide says removals usually work within <strong>24-72 hours</strong>, but also notes that your information <strong>may reappear</strong> as the site refreshes public records. That caveat is not some minor footnote. It changes how you should think about removal entirely.</p>
<p>Removal is not a one-and-done event. It is maintenance.</p>
<h3 id="what-users-are-actually-upset-about">What users are actually upset about</h3>
<p>People are not mainly upset because the site looks cheap. They’re upset because their home address is online and searchable by strangers.</p>
<blockquote>
<p>“they have my information with location and addresses. I have no idea how this site is even legal...”</p>
</blockquote>
<blockquote class="reddit-embed-bq" style="height:316px" data-embed-height="316"><a href="https://www.reddit.com/r/privacy/comments/1at4xeh/how_do_you_get_your_data_off_true_people_search/?ref=nubela.co">How do you get your data off true people search?</a><br> by <a href="https://www.reddit.com/user/rockhardpebble0/?ref=nubela.co">u/rockhardpebble0</a> in <a href="https://www.reddit.com/r/privacy/?ref=nubela.co">r/privacy</a>
</blockquote>
<script async="" src="https://embed.reddit.com/widgets.js" charset="UTF-8"></script>

<blockquote>
<p>“I have tried 7 times so far with the removal request but no luck.”</p>
</blockquote>
<blockquote class="reddit-embed-bq" style="height:316px" data-embed-height="316"><a href="https://www.reddit.com/r/privacy/comments/1at4xeh/how_do_you_get_your_data_off_true_people_search/?ref=nubela.co">How do you get your data off true people search?</a><br> by <a href="https://www.reddit.com/user/rockhardpebble0/?ref=nubela.co">u/rockhardpebble0</a> in <a href="https://www.reddit.com/r/privacy/?ref=nubela.co">r/privacy</a>
</blockquote>
<script async="" src="https://embed.reddit.com/widgets.js" charset="UTF-8"></script>

<p>And this broader X post hit because the fear is obvious to anyone who has ever searched themselves on one of these sites:</p>
<blockquote class="twitter-tweet"><p lang="en" dir="ltr">Your full name, home city, phone number, and relatives are on at least 47 websites right now.

Free to view. Free to download. Free to use against you.

🧵 Here are the exact steps to DELETE YOUR DIGITAL FOOTPRINT</p>&mdash; Kanika (@KanikaBK) <a href="https://x.com/KanikaBK/status/2043744028991336935?ref=nubela.co">Mon Apr 13 17:32:02 +0000 2026</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

<p>That’s enough to explain the economics cleanly.</p>
<p>You are not paying cash for the lookup.</p>
<p>Instead, your attention is monetized, and the usefulness of the product is tied directly to the existence and visibility of personal data.</p>
<h2 id="how-the-truepeoplesearch-opt-out-actually-works-in-2026">How the TruePeopleSearch opt-out actually works in 2026</h2>
<p>The basic removal flow is not complicated. The friction is in the details.</p>
<p>Core flow:</p>
<ol>
<li>Visit <code>https://www.truepeoplesearch.com/removal</code></li>
<li>Enter your email, complete CAPTCHA, and start removal</li>
<li>Search by full name, city, and state</li>
<li>Open the correct listing</li>
<li>Scroll down to <strong>Remove This Record</strong></li>
<li>Confirm via email</li>
<li>Re-check after the stated removal window</li>
</ol>
<p>I also hit a Cloudflare block when trying to access the removal page directly during testing, which is worth calling out because it adds yet another layer of friction for people just trying to remove themselves.</p>
<p><img alt="TruePeopleSearch removal page blocked during testing" src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2026/04/e090d3d346ce.webp" /></p>
<p>Incogni’s walkthrough says the process usually takes <strong>5-10 minutes</strong> and that removal often works within <strong>24-72 hours</strong> once you click the verification email. Their guide also notes that if you do not see the confirmation email, you should check spam or junk immediately.</p>
<h3 id="friction-points-before-you-start">Friction points before you start</h3>
<p>This is the stuff that actually wastes your time.</p>
<ul>
<li><strong>Common names can produce multiple candidate records.</strong> Incogni explicitly warns about common-name matches.</li>
<li><strong>Confirmation emails may land in spam.</strong> They call this out directly.</li>
<li><strong>Some users may get a session-expired message.</strong> Incogni notes this can happen mid-process.</li>
<li><strong>Multiple records must be removed separately.</strong> Same email, separate removals.</li>
<li><strong>Listings may reappear later.</strong> Incogni recommends checking again because the site may re-index fresh public records.</li>
<li><strong>You may be blocked before you even start.</strong> That happened in my test environment via Cloudflare.</li>
</ul>
<p>That last one is the big one.</p>
<p>The opt-out button is not the finish line. It is the start of a recurring hygiene task.</p>
<h3 id="a-better-operating-procedure-for-removal">A better operating procedure for removal</h3>
<p>Don’t just click through it and hope. Use a process.</p>
<ol>
<li><strong>Use a dedicated email inbox for removals.</strong> Not your primary inbox.</li>
<li><strong>Search current and past cities/states.</strong> Old records love old location combos.</li>
<li><strong>Document every matching listing in a spreadsheet.</strong> Site, URL, submission date, expected removal date, re-check date.</li>
<li><strong>Confirm the email immediately.</strong> Don’t let the link rot.</li>
<li><strong>Re-check after 72 hours.</strong> Then again after 30 days.</li>
<li><strong>Set a recurring 90-day reminder.</strong> Because refresh cycles are real.</li>
<li><strong>Repeat the process on adjacent brokers.</strong> TruePeopleSearch is rarely the only place your data lives.</li>
</ol>
<p>Here’s a simple tracker format:</p>
<table>
<thead>
<tr>
<th>Site name</th>
<th>Listing URL</th>
<th>Date submitted</th>
<th>Confirmation email received</th>
<th>Status</th>
<th>Expected removal date</th>
<th>Recheck date</th>
<th>Notes</th>
</tr>
</thead>
<tbody>
<tr>
<td>TruePeopleSearch</td>
<td>pasted URL</td>
<td>2026-04-01</td>
<td>Yes</td>
<td>Pending</td>
<td>2026-04-04</td>
<td>2026-05-01</td>
<td>2 records found</td>
</tr>
<tr>
<td>FastPeopleSearch</td>
<td>pasted URL</td>
<td>2026-04-01</td>
<td>Yes</td>
<td>Pending</td>
<td>2026-04-04</td>
<td>2026-05-01</td>
<td>old address still live</td>
</tr>
<tr>
<td>Whitepages</td>
<td>pasted URL</td>
<td>2026-04-01</td>
<td>No</td>
<td>In progress</td>
<td></td>
<td>2026-04-08</td>
<td>check spam</td>
</tr>
</tbody>
</table>
<p>Another X post captured the exact reaction category users have when these tools disappear or change, people immediately reveal they were using them as lightweight background-check engines, which is exactly why I keep saying this category is risky when the stakes are high.</p>
<blockquote class="twitter-tweet"><p lang="en" dir="ltr">Now how the hell am I gonna run background checks on here</p>&mdash; shane hollander’s lawyer btw (@hollanovslawyer) <a href="https://x.com/hollanovslawyer/status/2042337130219807064?ref=nubela.co">Thu Apr 09 20:21:31 +0000 2026</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

<h2 id="alternatives-by-job-to-be-done-not-by-affiliate-payout">Alternatives by job-to-be-done, not by affiliate payout</h2>
<p>Most comparison posts on this topic are sludge. Ten tools. Zero judgment. Suspiciously identical “pros and cons.”</p>
<p>No thanks.</p>
<h3 id="fastpeoplesearch-vs-truepeoplesearch">FastPeopleSearch vs TruePeopleSearch</h3>
<p>In practice, these two are close cousins.</p>
<p>Both are strong for:</p>
<ul>
<li>quick name lookups</li>
<li>fast reverse phone checks</li>
<li>seeing more than you’d expect without paying</li>
</ul>
<p>Both are weak on:</p>
<ul>
<li>trust-building UX</li>
<li>privacy posture</li>
<li>making the opt-out feel like a first-class experience</li>
</ul>
<p>FastPeopleSearch’s opt-out page says: “Please carefully follow the directions below to opt-out of the sale of your information,” and asks for your name and email so it can send a link to complete the process.</p>
<p>My practical take:</p>
<ul>
<li>If <strong>TruePeopleSearch</strong> surfaces the record faster, use it.</li>
<li>If it doesn’t, <strong>FastPeopleSearch</strong> is the next tab I open.</li>
<li>I do not meaningfully trust either one more than the other.</li>
</ul>
<p>They feel like the same category with slightly different paint.</p>
<h3 id="whitepages-vs-truepeoplesearch">Whitepages vs TruePeopleSearch</h3>
<p>This one is easier.</p>
<p>TruePeopleSearch often surfaces more for free. Whitepages tends to feel more polished and less likely to send you into a messy ad maze.</p>
<p>That polish matters. Not because pretty interfaces are morally superior, but because clarity reduces accidental clicks and bullshit.</p>
<table>
<thead>
<tr>
<th>Factor</th>
<th>TruePeopleSearch</th>
<th>Whitepages</th>
<th>Winner</th>
</tr>
</thead>
<tbody>
<tr>
<td>Free result depth</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐☆☆☆</td>
<td>TruePeopleSearch</td>
</tr>
<tr>
<td>UX clarity</td>
<td>⭐⭐☆☆☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>Whitepages</td>
</tr>
<tr>
<td>Pricing transparency</td>
<td>⭐⭐⭐☆☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>Whitepages</td>
</tr>
<tr>
<td>Privacy posture</td>
<td>⭐☆☆☆☆</td>
<td>⭐⭐⭐☆☆</td>
<td>Whitepages</td>
</tr>
<tr>
<td>Casual one-off utility</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐☆☆</td>
<td>TruePeopleSearch</td>
</tr>
<tr>
<td>Overall</td>
<td><strong>3.1/5</strong></td>
<td><strong>3.4/5</strong></td>
<td>Whitepages</td>
</tr>
</tbody>
</table>
<p>If I want a quick free hit, I’ll start with TruePeopleSearch.</p>
<p>If I want fewer cheap-feeling interactions, Whitepages is calmer.</p>
<h3 id="spokeo-vs-truepeoplesearch">Spokeo vs TruePeopleSearch</h3>
<p>Spokeo is better if you are willing to pay for stitched records. Worse if your goal is simply “tell me who called me” without turning the lookup into a buying journey.</p>
<p>Spokeo’s homepage says it combines data from a “wide range of industry-leading data sources” into reports, and it leans hard on report-style outcomes. It also promises updates on purchased reports “for the lifetime of your Spokeo account” as the data refreshes.</p>
<p>That can be useful. It also comes with more upsell gravity.</p>
<table>
<thead>
<tr>
<th>Factor</th>
<th>TruePeopleSearch</th>
<th>Spokeo</th>
<th>Winner</th>
</tr>
</thead>
<tbody>
<tr>
<td>Free access</td>
<td>⭐★★★★</td>
<td>⭐⭐☆☆☆</td>
<td>TruePeopleSearch</td>
</tr>
<tr>
<td>Paid report depth</td>
<td>⭐⭐☆☆☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>Spokeo</td>
</tr>
<tr>
<td>Search speed</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐☆☆</td>
<td>TruePeopleSearch</td>
</tr>
<tr>
<td>UX pressure</td>
<td>⭐⭐☆☆☆</td>
<td>⭐⭐⭐☆☆</td>
<td>Spokeo</td>
</tr>
<tr>
<td>Best for reverse phone quick check</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐☆☆☆</td>
<td>TruePeopleSearch</td>
</tr>
<tr>
<td>Overall</td>
<td><strong>3.1/5</strong></td>
<td><strong>3.2/5</strong></td>
<td>Spokeo if paying / TruePeopleSearch if not</td>
</tr>
</tbody>
</table>
<p>So no, Spokeo is not simply “better.” That’s lazy.</p>
<p>It’s better for a different buyer.</p>
<h3 id="when-ninjapear-is-the-better-alternative-for-professionalcompany-research">When NinjaPear is the better alternative for professional/company research</h3>
<p>I want to be explicit here because pretending these tools solve the same problem would be bullshit.</p>
<p>If you are trying to look up a consumer, a relative, a home address, or a personal phone number, <strong>NinjaPear is not the replacement</strong>. Wrong tool.</p>
<p>But if your real use case is actually one of these:</p>
<ul>
<li>researching a company executive before a sales call</li>
<li>identifying a professional profile from a work email</li>
<li>enriching a company account with employee count, company details, customers, and recent updates</li>
<li>tracking company blog, X, and website changes for account intelligence</li>
</ul>
<p>Then NinjaPear is the better lane because it is built for <strong>professional and company intelligence from publicly sourced data</strong>, not consumer people search.</p>
<p>Here is where it fits, plainly:</p>
<table>
<thead>
<tr>
<th>Use Case</th>
<th>TruePeopleSearch</th>
<th>NinjaPear</th>
</tr>
</thead>
<tbody>
<tr>
<td>Find someone’s home address</td>
<td>Yes</td>
<td>No</td>
</tr>
<tr>
<td>Reverse personal phone lookup</td>
<td>Yes</td>
<td>No</td>
</tr>
<tr>
<td>Identify a company’s customers</td>
<td>No</td>
<td>Yes</td>
</tr>
<tr>
<td>Get a professional profile from work email</td>
<td>No</td>
<td>Yes</td>
</tr>
<tr>
<td>Monitor a company’s changes</td>
<td>No</td>
<td>Yes</td>
</tr>
<tr>
<td>CRM/account enrichment</td>
<td>No</td>
<td>Yes</td>
</tr>
</tbody>
</table>
<p>Source-backed examples from NinjaPear’s public materials:</p>
<ul>
<li><a href="https://nubela.co/?ref=nubela.co">NinjaPear</a> says its employee profiles are <strong>publicly sourced</strong> and include work history, education, and social presence.</li>
<li><a href="https://nubela.co/customers?ref=nubela.co">Customer Listing API</a> shows customers, partners, and investors of a business.</li>
<li>NinjaPear’s homepage says <strong>Company Details</strong>, <strong>Employee Count</strong>, and <strong>Company Updates</strong> cost <strong>2 credits per call</strong> each.</li>
<li>NinjaPear explicitly says it does <strong>not</strong> scrape the major professional social network for these endpoints and uses <strong>no social media scraping</strong> in its employee-profile positioning.</li>
</ul>
<p>That distinction matters.</p>
<p>Consumer people-search tools answer: “Who is this person in a personal-record sense?”</p>
<p>NinjaPear answers: “What is happening around this company, this executive, this account, this market?”</p>
<p>Different jobs. Different data. Different ethics. Different workflows.</p>
<h2 id="who-should-use-truepeoplesearch-and-who-absolutely-should-not">Who should use TruePeopleSearch, and who absolutely should not</h2>
<p>This part is not complicated.</p>
<h3 id="good-fit">Good fit</h3>
<ul>
<li>someone trying to identify a spam caller</li>
<li>someone doing a one-off free lookup</li>
<li>someone checking whether an old address or phone still ties to a person</li>
<li>someone trying to reconnect with an old friend using partial info</li>
</ul>
<p>For those use cases, <strong>true people search</strong> can be genuinely handy.</p>
<h3 id="bad-fit">Bad fit</h3>
<ul>
<li>hiring teams</li>
<li>landlord / tenant screening</li>
<li>compliance-sensitive research</li>
<li>journalists or investigators needing high-confidence verification</li>
<li>anyone confusing “free” with “low-risk” or “complete”</li>
</ul>
<p>Let me say the quiet part out loud.</p>
<p>If the decision matters, this category is too messy to be your source of truth.</p>
<p>The data can be incomplete. Old. Merged weirdly. Missing context. Or just presented in a way that creates false confidence. That combination is dangerous.</p>
<h2 id="the-bigger-lesson-free-people-search-engines-are-monetizing-a-tradeoff">The bigger lesson: free people-search engines are monetizing a tradeoff</h2>
<p>This is the narrative turn most reviews avoid.</p>
<p>You are not paying cash for the lookup. That part is true.</p>
<p>But the service is still monetized. TruePeopleSearch’s own app description says ads can send you to paid services. So the product has to do two things at once:</p>
<ol>
<li>be useful enough that you come back</li>
<li>expose and package enough personal data that the experience remains valuable and monetizable</li>
</ol>
<p>That tradeoff is the product.</p>
<p>Not conspiracy fan fiction. Just incentives.</p>
<p>And once you see it that way, the category makes a lot more sense.</p>
<p>The reason a free reverse lookup can feel so useful is the same reason searching yourself can feel gross.</p>
<p>There is also a real difference between consumer people-search products and responsible B2B intelligence infrastructure. The former is built around aggregating personal records for broad lookup. The latter, done right, is built around publicly sourced professional and company data tied to clear business workflows.</p>
<p>That distinction matters more than ever.</p>
<h2 id="faq">FAQ</h2>
<h3 id="is-truepeoplesearch-legit">Is TruePeopleSearch legit?</h3>
<p>Yes. It is a real people-search service with an official website and Android app. “Legit” does <strong>not</strong> mean low-risk or reliable enough for serious verification.</p>
<h3 id="is-truepeoplesearch-really-free">Is TruePeopleSearch really free?</h3>
<p>Yes. The company’s Google Play listing says its content is “100% free.” That same listing also says the app contains ads and sponsored links that can send users to paid services.</p>
<h3 id="is-truepeoplesearch-safe-to-use">Is TruePeopleSearch safe to use?</h3>
<p>Safe for casual browsing? Usually. Safe as a source of truth for serious decisions? No. I would not use it for employment, tenant, legal, or compliance-sensitive screening.</p>
<h3 id="how-do-i-remove-my-info-from-truepeoplesearch">How do I remove my info from TruePeopleSearch?</h3>
<p>Go to <code>truepeoplesearch.com/removal</code>, enter your email and CAPTCHA, search your name plus city/state, open the matching listing, click <strong>Remove This Record</strong>, and confirm by email.</p>
<h3 id="can-my-info-come-back-after-removal">Can my info come back after removal?</h3>
<p>Yes. Incogni’s 2025 guide explicitly says your info may reappear as public records refresh, which is why recurring re-checks matter.</p>
<h3 id="is-there-a-truepeoplesearch-app">Is there a TruePeopleSearch app?</h3>
<p>Yes. There is an Android app listed on Google Play under TruePeopleSearch.com.</p>
<h3 id="what-are-the-best-alternatives">What are the best alternatives?</h3>
<p>For casual consumer lookups: FastPeopleSearch, Whitepages, and Spokeo are the obvious alternatives. For professional or company intelligence: use something purpose-built, like NinjaPear.</p>
<h3 id="is-ninjapear-an-alternative-to-truepeoplesearch">Is NinjaPear an alternative to TruePeopleSearch?</h3>
<p>Not for consumer people search. Yes for professional/company intelligence use cases like executive research, account enrichment, customer mapping, and company monitoring.</p>
<h2 id="final-verdict">Final verdict</h2>
<p>Here’s the clean recommendation matrix.</p>
<ul>
<li><strong>Need a quick free lookup?</strong> Sure. TruePeopleSearch can help.</li>
<li><strong>Need accuracy you can rely on?</strong> No.</li>
<li><strong>Found your own record?</strong> Remove it now.</li>
<li><strong>Need B2B professional or company intelligence?</strong> Use a purpose-built platform like NinjaPear instead.</li>
</ul>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<div class="lead-magnet-cta" style="border:1px solid #e0e0e0;border-radius:8px;padding:20px;margin:24px 0;background:#f8f9fb;">
<strong>📥 Free download: Data Broker Opt-Out Tracker + 90-Day Recheck Checklist</strong><br>
<span style="color:#555;">Use it to track removals, confirmation emails, expected takedown windows, and the 30-day plus 90-day rechecks most people forget.</span><br>
<a href="https://f000.backblazeb2.com/file/agent-pub-filestore/_bundle-ba713bf6.zip?ref=nubela.co" style="display:inline-block;margin-top:10px;padding:8px 14px;background:#1d70b8;color:#fff;border-radius:6px;text-decoration:none;">Download now →</a>
</div>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<p>If you do one thing after reading this, don’t overthink it: search yourself on TruePeopleSearch today. If your record is there, start the opt-out process, document it, and set a 90-day reminder to check again. That’s the move.</p>
<h2 id="sources">Sources</h2>
<ul>
<li>TruePeopleSearch Google Play listing: https://play.google.com/store/apps/details?id=com.freedataservices.truepeoplesearch&amp;hl=en_US</li>
<li>TruePeopleSearch removal page: https://www.truepeoplesearch.com/removal</li>
<li>Incogni TruePeopleSearch opt-out guide: https://blog.incogni.com/true-people-search-removal/</li>
<li>Reddit privacy thread: https://www.reddit.com/r/privacy/comments/1at4xeh/how_do_you_get_your_data_off_true_people_search/</li>
<li>X post by Kanika: https://x.com/KanikaBK/status/2043744028991336935</li>
<li>X post by hollanovslawyer: https://x.com/hollanovslawyer/status/2042337130219807064</li>
<li>NinjaPear overview: https://nubela.co</li>
<li>NinjaPear Customer Listing API: https://nubela.co/customers</li>
<li>Free download: https://f000.backblazeb2.com/file/agent-pub-filestore/_bundle-ba713bf6.zip</li>
</ul>
<!--kg-card-end: html-->
 ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ Competitor Research Tools in 2026 for CEOs, by a CEO (+ Interactive Tool Recommender) ]]></title>
        <description><![CDATA[ Competitor Research Stack Builder for CEOs


Answer 5 fast questions. Get a blunt tool recommendation in under 30 seconds.




Primary need

Keyword overlap
PPC intel
Traffic intel
Ongoing monitoring
Company intelligence
Mixed needs



Team type

CEO
founder
marketing lead
product marketing
sales
agency



Budget

Free
&lt;$100
$100-$300
$300+ ]]></description>
        <link>https://nubela.co/blog/competitor-research-tools/</link>
        <guid isPermaLink="false">69df4e74997d030001e881c9</guid>
        <category><![CDATA[ competitor research tools ]]></category>
        <dc:creator><![CDATA[ Alex Meyer ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2026/04/alex.png"/>
        <pubDate>Wed, 15 Apr 2026 16:38:13 +0800</pubDate>
        <media:content url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2026/04/cover_8.webp" medium="image"/>
        <content:encoded><![CDATA[ 
<!--kg-card-begin: html-->
<div id="ci-stack-builder" style="border:1px solid #e5e7eb;border-radius:16px;padding:20px;margin:18px 0 28px 0;background:linear-gradient(180deg,#fff 0%,#faf7ff 100%);font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;box-shadow:0 8px 30px rgba(0,0,0,.06)">
  <div style="font-size:24px;font-weight:800;line-height:1.2;margin:0 0 8px 0;color:#111827">Competitor Research Stack Builder for CEOs</div>
  <p style="margin:0 0 16px 0;color:#4b5563">Answer 5 fast questions. Get a blunt tool recommendation in under 30 seconds.</p>
  <div style="display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;margin-bottom:16px">
    <label style="display:block">
      <div style="font-size:13px;font-weight:700;margin-bottom:6px;color:#374151">Primary need</div>
      <select id="need" style="width:100%;padding:10px;border:1px solid #d1d5db;border-radius:10px">
        <option value="keyword">Keyword overlap</option>
        <option value="ppc">PPC intel</option>
        <option value="traffic">Traffic intel</option>
        <option value="monitoring">Ongoing monitoring</option>
        <option value="company">Company intelligence</option>
        <option value="mixed">Mixed needs</option>
      </select>
    </label>
    <label style="display:block">
      <div style="font-size:13px;font-weight:700;margin-bottom:6px;color:#374151">Team type</div>
      <select id="team" style="width:100%;padding:10px;border:1px solid #d1d5db;border-radius:10px">
        <option>CEO</option>
        <option>founder</option>
        <option>marketing lead</option>
        <option>product marketing</option>
        <option>sales</option>
        <option>agency</option>
      </select>
    </label>
    <label style="display:block">
      <div style="font-size:13px;font-weight:700;margin-bottom:6px;color:#374151">Budget</div>
      <select id="budget" style="width:100%;padding:10px;border:1px solid #d1d5db;border-radius:10px">
        <option value="free">Free</option>
        <option value="lt100">&lt;$100</option>
        <option value="100to300">$100-$300</option>
        <option value="300plus">$300+</option>
      </select>
    </label>
    <label style="display:block">
      <div style="font-size:13px;font-weight:700;margin-bottom:6px;color:#374151">Need exports or API?</div>
      <select id="api" style="width:100%;padding:10px;border:1px solid #d1d5db;border-radius:10px">
        <option value="no">No</option>
        <option value="yes">Yes</option>
      </select>
    </label>
    <label style="display:block">
      <div style="font-size:13px;font-weight:700;margin-bottom:6px;color:#374151">Need alerts / monitoring?</div>
      <select id="alerts" style="width:100%;padding:10px;border:1px solid #d1d5db;border-radius:10px">
        <option value="no">No</option>
        <option value="yes">Yes</option>
      </select>
    </label>
  </div>

  <div id="result" style="border:1px solid #ddd6fe;background:#ffffff;border-radius:14px;padding:16px"></div>

  <script>
    const tools = [
      {name:'Ahrefs', price:129, cats:['keyword','mixed'], api:true, alerts:false, stars:4.6, strengths:['best backlink + gap work','clean UI for SEO operators','strong depth'], gotchas:['not cheap','wasted money if you only log in twice a month'], avoid:'founders who just want a directional look'},
      {name:'Semrush', price:139.95, cats:['keyword','traffic','mixed'], api:false, alerts:false, stars:4.4, strengths:['broad suite','good for one team handling SEO + adjacent work','traffic tools are decent'], gotchas:['sprawl','easy to overbuy'], avoid:'teams that only need one narrow job'},
      {name:'SpyFu', price:39, cats:['ppc','keyword'], api:false, alerts:false, stars:4.1, strengths:['cheap','good ad history angle','surprisingly useful for PPC intel'], gotchas:['dated feel','estimates are still estimates'], avoid:'teams expecting forensic truth from budget PPC data'},
      {name:'Similarweb', price:399, cats:['traffic','mixed'], api:true, alerts:false, stars:4.2, strengths:['best known traffic intel tool','market/channel view','executive-friendly visuals'], gotchas:['expensive','directional, not exact'], avoid:'most CEOs who just want prettier traffic charts'},
      {name:'Visualping', price:10, cats:['monitoring'], api:false, alerts:true, stars:4.0, strengths:['simple page-change detection','great for pricing/product pages','cheap'], gotchas:['can get noisy fast','page-level, not business-level'], avoid:'teams wanting context, not just diffs'},
      {name:'Owler', price:39, cats:['monitoring','company'], api:false, alerts:true, stars:3.5, strengths:['easy company alerts','lightweight entry point'], gotchas:['shallower than true CI tools','less useful for deep strategy'], avoid:'serious PMM teams needing battlecard-grade intel'},
      {name:'SparkToro', price:38, cats:['traffic','mixed'], api:false, alerts:false, stars:3.9, strengths:['audience source discovery','great when the real question is where your market pays attention'], gotchas:['not a traffic estimation platform','not direct competitor monitoring'], avoid:'buyers expecting Similarweb-style dashboards'},
      {name:'Wappalyzer', price:0, cats:['company','mixed'], api:false, alerts:false, stars:3.7, strengths:['great free technographics checks','fast browser extension workflow'], gotchas:['not a full competitor research tool','paid plans jump hard'], avoid:'teams needing strategic monitoring'},
      {name:'NinjaPear', price:0, cats:['company','monitoring','mixed'], api:true, alerts:true, stars:4.5, strengths:['company updates + customers + competitors','relationship mapping','API-first'], gotchas:['not an Ahrefs replacement for backlink work'], avoid:'teams whose only job is keyword gap analysis'}
    ];

    function star(s){
      const full = Math.floor(s), half = (s-full)>=0.5, empty = 5-full-(half?1:0);
      return '★'.repeat(full)+(half?'☆':'')+'☆'.repeat(empty);
    }

    function rank(){
      const need = document.getElementById('need').value;
      const budget = document.getElementById('budget').value;
      const api = document.getElementById('api').value;
      const alerts = document.getElementById('alerts').value;
      const team = document.getElementById('team').value;
      const scored = tools.map(t => {
        let score = t.stars * 10;
        if (t.cats.includes(need)) score += 20;
        if (need === 'mixed' && t.cats.includes('mixed')) score += 12;
        if (api === 'yes' && t.api) score += 8;
        if (alerts === 'yes' && t.alerts) score += 10;
        if (budget === 'free' && t.price === 0) score += 18;
        if (budget === 'lt100' && t.price > 0 && t.price < 100) score += 12;
        if (budget === '100to300' && t.price >= 100 && t.price <= 300) score += 10;
        if (budget === '300plus' && t.price >= 300) score += 10;
        if (budget === 'free' && t.price > 0) score -= 20;
        if (budget === 'lt100' && t.price >= 100) score -= 10;
        if (budget === '100to300' && t.price > 300) score -= 10;
        if ((team === 'CEO' || team === 'founder') && (t.name === 'Semrush' || t.name === 'Similarweb')) score -= 3;
        if (team === 'sales' && t.name === 'NinjaPear') score += 8;
        if (team === 'product marketing' && (t.name === 'NinjaPear' || t.name === 'Visualping')) score += 6;
        return {...t, score};
      }).sort((a,b)=>b.score-a.score);

      const top = scored.slice(0,3);
      const stack = (() => {
        if (need === 'mixed') {
          if (budget === 'free') return 'Wappalyzer + free checks + manual search operators';
          if (budget === 'lt100') return 'SpyFu + Visualping';
          if (budget === '100to300') return 'Ahrefs or Semrush + Visualping';
          return 'Similarweb + NinjaPear or Ahrefs + NinjaPear';
        }
        if (need === 'keyword') return budget === 'lt100' ? 'SpyFu' : 'Ahrefs or Semrush';
        if (need === 'ppc') return 'SpyFu';
        if (need === 'traffic') return budget === '300plus' ? 'Similarweb' : 'Semrush traffic tools + SparkToro';
        if (need === 'monitoring') return alerts === 'yes' ? 'Visualping + NinjaPear' : 'Visualping';
        if (need === 'company') return 'NinjaPear + Wappalyzer';
      })();

      const spend = (() => {
        if (stack.includes('Similarweb + NinjaPear')) return '~$399+, usage-based on NinjaPear';
        if (stack.includes('Ahrefs')) return '~$139-$149 + monitoring';
        if (stack.includes('Semrush')) return '~$140 + monitoring';
        if (stack === 'SpyFu') return '~$39/mo';
        if (stack.includes('SpyFu + Visualping')) return '~$49/mo';
        if (stack.includes('Visualping + NinjaPear')) return '~$10 + usage-based';
        if (stack.includes('NinjaPear + Wappalyzer')) return '$0 to usage-based, depending on API calls';
        return '$0 to low three figures';
      })();

      const blunt = (() => {
        if (need === 'keyword') return 'If you only need keyword overlap, do not buy a full CI platform. You are paying for theater.';
        if (need === 'ppc') return 'For PPC intel, brand prestige matters less than usable ad history. SpyFu punches above its price.';
        if (need === 'traffic') return 'Most CEOs do not need Similarweb. They need better decisions, not prettier traffic charts.';
        if (need === 'monitoring') return 'Monitoring tools become spam cannons when you watch everything. Track fewer pages, but track them well.';
        if (need === 'company') return 'SEO tools are half-blind for company intelligence. Rankings do not tell you who buys from whom.';
        return 'Competitor research is not one category. Buy one tool per job, not one giant suite for your ego.';
      })();

      const why = `Best-fit stack: ${stack}. This ranks highest because it matches your main job, budget, and whether you need APIs or alerts. Strength beats breadth here.`;
      const html = `
        <div style="display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;align-items:flex-start">
          <div>
            <div style="font-size:13px;color:#6b7280;font-weight:700;text-transform:uppercase;letter-spacing:.04em">Best-fit stack</div>
            <div style="font-size:26px;font-weight:800;color:#111827;margin-top:2px">${stack}</div>
            <div style="margin-top:6px;color:#4b5563">Estimated monthly spend: <strong>${spend}</strong></div>
          </div>
          <button id="copyStack" style="background:#111827;color:#fff;border:none;border-radius:10px;padding:10px 14px;cursor:pointer">Copy my stack</button>
        </div>
        <div style="margin-top:14px;padding:12px;border-left:4px solid #8b5cf6;background:#f5f3ff;border-radius:8px;color:#111827"><strong>Blunt recommendation:</strong> ${blunt}</div>
        <div style="display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px;margin-top:14px">
          ${top.map((t,i)=>`<div style="border:1px solid #e5e7eb;border-radius:12px;padding:12px;background:#fff">
            <div style="font-weight:800">${i+1}. ${t.name}</div>
            <div title="${t.strengths.join(', ')}" style="color:#f59e0b;font-size:18px">${star(t.stars)} <span style="color:#6b7280;font-size:13px">(${t.stars.toFixed(1)}/5)</span></div>
            <div style="font-size:13px;color:#4b5563;margin-top:6px">Starts around ${t.price === 0 ? '$0 / usage-based' : '$'+t.price+'/mo'}</div>
            <details style="margin-top:8px"><summary style="cursor:pointer;font-weight:700">Show why</summary>
              <div style="font-size:13px;color:#374151;margin-top:8px"><strong>Strengths:</strong> ${t.strengths.join('; ')}.<br><strong>Gotchas:</strong> ${t.gotchas.join('; ')}.<br><strong>Who should avoid it:</strong> ${t.avoid}.</div>
            </details>
          </div>`).join('')}
        </div>
        <details style="margin-top:14px"><summary style="cursor:pointer;font-weight:700">Why this stack</summary><div style="margin-top:8px;color:#4b5563">${why}</div></details>
      `;
      document.getElementById('result').innerHTML = html;
      document.getElementById('copyStack').onclick = async () => {
        const txt = `${stack}. Estimated spend: ${spend}. ${blunt}`;
        await navigator.clipboard.writeText(txt);
        document.getElementById('copyStack').innerText = 'Copied';
        setTimeout(()=>document.getElementById('copyStack').innerText='Copy my stack',1400);
      };
    }
    ['need','team','budget','api','alerts'].forEach(id => document.getElementById(id).addEventListener('change', rank));
    rank();
  </script>
</div>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<p>Most <strong>competitor research tools</strong> lists are useless because they mash five different jobs into one fake category. If you only need keyword overlap, buy an SEO tool. If you need ongoing monitoring, buy a monitor. If you need account-level competitor intelligence, buy something built for company data. The expensive mistake is buying a bloated suite because the demo looked smart.</p>
<blockquote>
<p>“You have to look at them all as directional or for entertainment only. All of them.”</p>
</blockquote>
<blockquote class="reddit-embed-bq" style="height:316px" data-embed-height="316"><a href="https://www.reddit.com/r/bigseo/comments/1lqpvoo/similarweb_how_does_it_work_when_it_comes_to_site/?ref=nubela.co">Similarweb, how does it work when it comes to site visitors?</a><br> by <a href="https://www.reddit.com/user/[deleted]/?ref=nubela.co">u/[deleted]</a> in <a href="https://www.reddit.com/r/bigseo/?ref=nubela.co">bigseo</a></blockquote>
<script async="" src="https://embed.reddit.com/widgets.js" charset="UTF-8"></script>

<p>When I was running FluxoMetric, I learned very quickly that “all-in-one” usually means “half-useful across six tabs.” I burned ~$4K/mo at one point on software that made me feel informed while I was still blind to the only thing that mattered: what changed, who moved, and whether the move actually affected my market.</p>
<h2 id="tldr">TL;DR</h2>
<p>If you just want the shortest possible answer on <strong>competitor research tools</strong>, here it is.</p>
<table>
<thead>
<tr>
<th>Factor</th>
<th>Ahrefs</th>
<th>Semrush</th>
<th>Similarweb</th>
<th>SpyFu</th>
<th>Visualping</th>
<th><a href="https://nubela.co/?ref=nubela.co">NinjaPear</a></th>
<th>Winner</th>
</tr>
</thead>
<tbody>
<tr>
<td>Keyword overlap</td>
<td>⭐⭐⭐⭐⭐</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐☆☆☆</td>
<td>⭐⭐⭐☆</td>
<td>⭐☆☆☆☆</td>
<td>⭐⭐☆☆☆</td>
<td>Ahrefs</td>
</tr>
<tr>
<td>PPC intel</td>
<td>⭐⭐☆☆☆</td>
<td>⭐⭐⭐☆</td>
<td>⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐⭐</td>
<td>⭐☆☆☆☆</td>
<td>⭐☆☆☆☆</td>
<td>SpyFu</td>
</tr>
<tr>
<td>Traffic intel</td>
<td>⭐⭐⭐☆</td>
<td>⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐⭐</td>
<td>⭐⭐☆☆☆</td>
<td>⭐☆☆☆☆</td>
<td>⭐⭐☆☆☆</td>
<td>Similarweb</td>
</tr>
<tr>
<td>Monitoring</td>
<td>⭐☆☆☆☆</td>
<td>⭐☆☆☆☆</td>
<td>⭐⭐☆☆☆</td>
<td>⭐☆☆☆☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>Tie: Visualping / NinjaPear</td>
</tr>
<tr>
<td>Company intelligence</td>
<td>⭐☆☆☆☆</td>
<td>⭐☆☆☆☆</td>
<td>⭐⭐☆☆☆</td>
<td>⭐☆☆☆☆</td>
<td>⭐☆☆☆☆</td>
<td>⭐⭐⭐⭐⭐</td>
<td>NinjaPear</td>
</tr>
<tr>
<td>Pricing sanity</td>
<td>⭐⭐☆☆☆</td>
<td>⭐⭐☆☆☆</td>
<td>⭐☆☆☆☆</td>
<td>⭐⭐⭐⭐⭐</td>
<td>⭐⭐⭐⭐⭐</td>
<td>⭐⭐⭐⭐☆</td>
<td>SpyFu</td>
</tr>
<tr>
<td>API / exports</td>
<td>⭐⭐☆☆☆</td>
<td>⭐⭐☆☆☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐☆</td>
<td>⭐⭐☆☆☆</td>
<td>⭐⭐⭐⭐⭐</td>
<td>NinjaPear</td>
</tr>
<tr>
<td>Executive usefulness</td>
<td>⭐⭐⭐☆</td>
<td>⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐☆</td>
<td>⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐⭐</td>
<td>NinjaPear</td>
</tr>
<tr>
<td><strong>Overall score</strong></td>
<td><strong>3.13/5</strong></td>
<td><strong>3.06/5</strong></td>
<td><strong>2.94/5</strong></td>
<td><strong>2.94/5</strong></td>
<td><strong>2.63/5</strong></td>
<td><strong>3.50/5</strong></td>
<td><strong>Depends on job</strong></td>
</tr>
</tbody>
</table>
<p>That last row is the point. There is no true “best competitor research tool” because this is not one software category. It is five.</p>
<h2 id="what-most-lists-get-wrong">What most lists get wrong</h2>
<p>Most lists call everything from Ahrefs to Crayon to Similarweb a competitor research tool. That is lazy taxonomy.</p>
<p>These tools do different jobs:</p>
<ol>
<li><strong>Keyword overlap</strong>: who ranks where, who owns what terms, where your content gaps are.</li>
<li><strong>PPC intel</strong>: who bids on what, what ad copy survives, which terms look contested.</li>
<li><strong>Traffic intel</strong>: directional market share, channels, geography, audience behavior.</li>
<li><strong>Ongoing monitoring</strong>: pricing page edits, new landing pages, blog launches, product moves.</li>
<li><strong>Company intelligence</strong>: customers, partners, investors, hiring shifts, relationship maps.</li>
</ol>
<p>A CEO shopping for <strong>competitor research tools</strong> usually does not need one platform. They need one answer per job.</p>
<p>That is why so many teams overbuy. They think they are buying market intelligence. They are actually buying overlap, screenshots, and a Slack channel nobody reads.</p>
<h2 id="the-short-answer">The short answer</h2>
<p>Here is the buying guide I would give a founder friend over coffee.</p>
<h3 id="best-for-keyword-overlap">Best for keyword overlap</h3>
<p><strong>Ahrefs</strong> if you care about depth, backlink context, and living in the weeds.</p>
<p><strong>Semrush</strong> if your team wants one broader suite and can tolerate some sprawl.</p>
<p>Ahrefs pricing currently starts at <strong>$129/mo</strong> for Lite, <strong>$249/mo</strong> for Standard, and <strong>$449/mo</strong> for Advanced on its public pricing page.</p>
<p><img alt="Ahrefs pricing, captured during research" src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2026/04/ddae4699eebb.webp" /></p>
<p>Semrush public pricing shows <strong>Pro at $139.95/mo</strong>, <strong>Guru at $249.95/mo</strong>, and <strong>Business at $499.95/mo</strong> via its pricing results and support docs. If you are not in the platform weekly, both can feel expensive fast.</p>
<blockquote>
<p>“If you only dip in occasionally, it’s too expensive.”</p>
</blockquote>
<blockquote class="reddit-embed-bq" style="height:316px" data-embed-height="316"><a href="https://www.reddit.com/r/WebsiteSEO/comments/1q34axh/is_ahrefs_still_worth_the_price_if_youre_not_an/?ref=nubela.co">Is Ahrefs still worth the price if you're not an agency?</a><br> by <a href="https://www.reddit.com/user/Other_Amphibian871/?ref=nubela.co">u/Other_Amphibian871</a> in <a href="https://www.reddit.com/r/WebsiteSEO/?ref=nubela.co">WebsiteSEO</a></blockquote>
<script async="" src="https://embed.reddit.com/widgets.js" charset="UTF-8"></script>

<h3 id="best-for-ppc-intel">Best for PPC intel</h3>
<p><strong>SpyFu</strong>.</p>
<p>Not because it is perfect. Because the job is narrow and the price is sane. SpyFu public pricing shows <strong>Basic at $39/mo</strong>, <strong>Pro + AI at $59 for the first month then $119/mo</strong>, and <strong>Team at $249/mo</strong>.</p>
<p><img alt="SpyFu pricing, captured during research" src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2026/04/4133c7f1bc27.webp" /></p>
<p>If you mostly want ad history, basic competitor keyword overlap, and a cheap second opinion for paid search, it is better than its prestige level suggests.</p>
<h3 id="best-for-traffic-intel">Best for traffic intel</h3>
<p><strong>Similarweb</strong>, but only if you actually need traffic intel.</p>
<p>That caveat matters. Similarweb’s marketing packages page pushes you toward sales for business plans, and their own comparison page claims a full stack from <strong>$399/mo</strong>. Translation: this is easy to overbuy.</p>
<p><img alt="Similarweb pricing/packages page, captured during research" src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2026/04/d92bc88b03c7.webp" /></p>
<h3 id="best-for-monitoring">Best for monitoring</h3>
<p><strong>Visualping</strong> for straightforward page-level monitoring.</p>
<p>Visualping does one useful thing very well: check pages and tell you what changed. Their public materials put paid plans from roughly <strong>$10/mo</strong>, with business tiers above that, plus a free tier. Good. Cheap. But page-level.</p>
<h3 id="best-for-company-intelligence">Best for company intelligence</h3>
<p><strong><a href="https://nubela.co/?ref=nubela.co">NinjaPear</a></strong>, if your question is not “who outranks us?” but “who buys from them, who they partner with, and what changed at the company level?”</p>
<p>That is a different job entirely. NinjaPear’s positioning is very explicit: customers, competitors, employees, updates, and usage-based pricing rather than giant seat bundles.</p>
<p><img alt="NinjaPear overview page, captured during research" src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2026/04/4a16b98d9962.webp" /></p>
<h2 id="types-of-competitor-research">Types of competitor research</h2>
<p>If you skip this section, you are probably going to buy the wrong thing.</p>
<h3 id="keyword-overlap">Keyword overlap</h3>
<p>This is classic SEO competitor work:</p>
<ul>
<li>Who ranks for the same terms</li>
<li>Where you are losing share</li>
<li>Which content gaps matter</li>
<li>What backlinks or SERP features they own</li>
</ul>
<p>Ahrefs and Semrush are built for this. Everything else is a compromise.</p>
<h3 id="ppc-overlap">PPC overlap</h3>
<p>Different job.</p>
<p>You want to know:</p>
<ul>
<li>Which keywords competitors appear on</li>
<li>Which ad copy they keep running</li>
<li>What landing pages they push repeatedly
n- Where paid competition is getting hotter</li>
</ul>
<p>SpyFu is the budget specialist here. Google Ads Auction Insights is still more truthful for your own auctions, but not useful for broad market snooping.</p>
<h3 id="traffic-intel">Traffic intel</h3>
<p>Traffic intel is mostly model-based estimation. That means:</p>
<ul>
<li>useful for relative comparisons</li>
<li>useful for trend direction</li>
<li>dangerous when treated as audited truth</li>
</ul>
<p>This is where Similarweb earns its keep, but also where buyers lie to themselves the most.</p>
<h3 id="ongoing-monitoring">Ongoing monitoring</h3>
<p>This is the “what changed since last week?” layer.</p>
<ul>
<li>pricing page edits</li>
<li>new feature pages</li>
<li>fresh blog posts</li>
<li>social posts</li>
<li>page launches, removals, copy shifts</li>
</ul>
<p>Visualping handles the page-watch part. Broader monitoring needs broader plumbing.</p>
<h3 id="company-intelligence">Company intelligence</h3>
<p>This is the missing layer in most <strong>competitor research tools</strong> roundups.</p>
<p>You care about:</p>
<ul>
<li>customers</li>
<li>partners and platforms</li>
<li>investors</li>
<li>employee and leadership changes</li>
<li>competitor maps</li>
<li>account-level signals</li>
</ul>
<p>SEO tools are weak here. They can tell you who ranks next to you. They cannot tell you who buys from your competitor or when a prospect account just changed stack.</p>
<h2 id="the-scorecard">The scorecard</h2>
<p>I tested these tools the way an operator would, not the way a content farm would.</p>
<p>Questions I care about:</p>
<ul>
<li>Does the data help me make a decision this week?</li>
<li>How many clicks until insight?</li>
<li>Is the pricing sane for a small team?</li>
<li>Does the monitoring produce signal or just noise?</li>
<li>Are exports or APIs available without getting extorted?</li>
<li>Is this useful to a CEO, not just a specialist?</li>
</ul>
<h3 id="scoring-criteria">Scoring criteria</h3>
<table>
<thead>
<tr>
<th>Criteria</th>
<th>What I mean</th>
</tr>
</thead>
<tbody>
<tr>
<td>Data usefulness</td>
<td>Is the output good enough to change a decision?</td>
</tr>
<tr>
<td>Speed to insight</td>
<td>Can I get the answer in minutes, not training weeks?</td>
</tr>
<tr>
<td>Pricing sanity</td>
<td>Is the price fair relative to the job?</td>
</tr>
<tr>
<td>Monitoring depth</td>
<td>Does it catch changes that matter?</td>
</tr>
<tr>
<td>API / export access</td>
<td>Can I move data into my workflow?</td>
</tr>
<tr>
<td>Executive usefulness</td>
<td>Can a CEO act on this without becoming an analyst?</td>
</tr>
</tbody>
</table>
<h3 id="tools-compared">Tools compared</h3>
<table>
<thead>
<tr>
<th>Tool</th>
<th>Keyword overlap</th>
<th>PPC intel</th>
<th>Traffic intel</th>
<th>Monitoring</th>
<th>Company intelligence</th>
<th>Pricing transparency</th>
<th>API / export</th>
<th>Ease of use</th>
<th>Overall CEO score</th>
</tr>
</thead>
<tbody>
<tr>
<td>Semrush</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐☆</td>
<td>⭐⭐⭐☆</td>
<td>⭐☆☆☆☆</td>
<td>⭐☆☆☆☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐☆☆☆</td>
<td>⭐⭐⭐☆</td>
<td><strong>3.4/5</strong></td>
</tr>
<tr>
<td>Ahrefs</td>
<td>⭐⭐⭐⭐⭐</td>
<td>⭐⭐☆☆☆</td>
<td>⭐⭐⭐☆</td>
<td>⭐☆☆☆☆</td>
<td>⭐☆☆☆☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐☆☆☆</td>
<td>⭐⭐⭐⭐☆</td>
<td><strong>3.5/5</strong></td>
</tr>
<tr>
<td>Similarweb</td>
<td>⭐⭐☆☆☆</td>
<td>⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐⭐</td>
<td>⭐⭐☆☆☆</td>
<td>⭐⭐☆☆☆</td>
<td>⭐⭐☆☆☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐☆</td>
<td><strong>3.4/5</strong></td>
</tr>
<tr>
<td>SpyFu</td>
<td>⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐⭐</td>
<td>⭐⭐☆☆☆</td>
<td>⭐☆☆☆☆</td>
<td>⭐☆☆☆☆</td>
<td>⭐⭐⭐⭐⭐</td>
<td>⭐⭐⭐☆</td>
<td>⭐⭐⭐☆</td>
<td><strong>3.5/5</strong></td>
</tr>
<tr>
<td>Visualping</td>
<td>⭐☆☆☆☆</td>
<td>⭐☆☆☆☆</td>
<td>⭐☆☆☆☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐☆☆☆☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐☆☆☆</td>
<td>⭐⭐⭐⭐⭐</td>
<td><strong>2.8/5</strong></td>
</tr>
<tr>
<td>Owler</td>
<td>⭐☆☆☆☆</td>
<td>⭐☆☆☆☆</td>
<td>⭐⭐☆☆☆</td>
<td>⭐⭐⭐☆</td>
<td>⭐⭐⭐☆</td>
<td>⭐☆☆☆☆</td>
<td>⭐⭐☆☆☆</td>
<td>⭐⭐⭐⭐☆</td>
<td><strong>2.6/5</strong></td>
</tr>
<tr>
<td>SparkToro</td>
<td>⭐⭐☆☆☆</td>
<td>⭐☆☆☆☆</td>
<td>⭐⭐⭐☆</td>
<td>⭐☆☆☆☆</td>
<td>⭐⭐☆☆☆</td>
<td>⭐⭐⭐☆</td>
<td>⭐⭐☆☆☆</td>
<td>⭐⭐⭐⭐⭐</td>
<td><strong>2.8/5</strong></td>
</tr>
<tr>
<td>Wappalyzer</td>
<td>⭐☆☆☆☆</td>
<td>⭐☆☆☆☆</td>
<td>⭐☆☆☆☆</td>
<td>⭐☆☆☆☆</td>
<td>⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐⭐</td>
<td>⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐⭐</td>
<td><strong>2.4/5</strong></td>
</tr>
<tr>
<td>Crayon</td>
<td>⭐☆☆☆☆</td>
<td>⭐☆☆☆☆</td>
<td>⭐⭐☆☆☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐☆☆☆☆</td>
<td>⭐⭐☆☆☆</td>
<td>⭐⭐⭐☆</td>
<td><strong>3.0/5</strong></td>
</tr>
<tr>
<td>Klue</td>
<td>⭐☆☆☆☆</td>
<td>⭐☆☆☆☆</td>
<td>⭐⭐☆☆☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐☆☆☆☆</td>
<td>⭐⭐☆☆☆</td>
<td>⭐⭐⭐☆</td>
<td><strong>3.0/5</strong></td>
</tr>
<tr>
<td>NinjaPear</td>
<td>⭐⭐☆☆☆</td>
<td>⭐☆☆☆☆</td>
<td>⭐⭐☆☆☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐⭐</td>
<td>⭐⭐⭐⭐⭐</td>
<td>⭐⭐⭐⭐⭐</td>
<td>⭐⭐⭐⭐☆</td>
<td><strong>4.0/5</strong></td>
</tr>
</tbody>
</table>
<p>My hot take is simple: the expensive enterprise CI platforms are often workflow theater unless you have a PMM or enablement function that will actually keep them alive.</p>
<h2 id="keyword-overlap-tools">Keyword overlap tools</h2>
<p>If your real job is search overlap, stop pretending a generic CI suite is a substitute.</p>
<h3 id="ahrefs">Ahrefs</h3>
<p>Ahrefs is still the tool I trust most when the work is:</p>
<ul>
<li>backlink inspection</li>
<li>content gap work</li>
<li>SERP and ranking analysis</li>
<li>deep SEO operator workflows</li>
</ul>
<p>Its public pricing is clear, which I respect: <strong>Lite $129</strong>, <strong>Standard $249</strong>, <strong>Advanced $449</strong>. One included user on those plans, with extra seats costing more. No bullshit “request a quote” wall until enterprise.</p>
<p>What I like:</p>
<ul>
<li>cleaner than Semrush for focused SEO work</li>
<li>strong backlink context</li>
<li>better for people who already know what they are doing</li>
</ul>
<p>What I do not like:</p>
<ul>
<li>expensive if you use it casually</li>
<li>easier to justify for operators than founders</li>
<li>API access is not really the reason most SMBs buy it</li>
</ul>
<p>If you live in SEO every week, fine. If you log in twice a month, it is an expensive security blanket.</p>
<h3 id="semrush">Semrush</h3>
<p>Semrush is broader.</p>
<p>That can be good or bad. Good if one team wants SEO, some traffic intel, keyword gap work, and adjacent features in one place. Bad if you are paying for surface area you will never touch.</p>
<p>Public pricing is easy enough to verify:</p>
<ul>
<li><strong>Pro: $139.95/mo</strong></li>
<li><strong>Guru: $249.95/mo</strong></li>
<li><strong>Business: $499.95/mo</strong></li>
</ul>
<p>What I like:</p>
<ul>
<li>broad workflow coverage</li>
<li>decent competitive research tools in one account</li>
<li>better option if you want one platform for one team</li>
</ul>
<p>What I do not like:</p>
<ul>
<li>sprawl</li>
<li>lots of tabs, not all of them equally sharp</li>
<li>overkill for small companies with one narrow use case</li>
</ul>
<h3 id="spyfu">SpyFu</h3>
<p>SpyFu is the tool people underrate because it does not have the same brand halo.</p>
<p>It also knows what it is. That helps.</p>
<p>For <strong>$39/mo</strong> on Basic, you get a cheap way to inspect competitor ad history, keyword overlap, and basic domain comparisons. That is enough for a lot of PPC teams.</p>
<blockquote>
<p>“SpyFu for the cost is far less expensive.”</p>
</blockquote>
<blockquote class="reddit-embed-bq" style="height:316px" data-embed-height="316"><a href="https://www.reddit.com/r/PPC/comments/wmvyd4/spyfu_vs_semrush_for_ppc/?ref=nubela.co">SpyFu vs SEMRush for PPC?</a><br> by <a href="https://www.reddit.com/user/CyberSecurityGuy1989/?ref=nubela.co">u/CyberSecurityGuy1989</a> in <a href="https://www.reddit.com/r/PPC/?ref=nubela.co">PPC</a></blockquote>
<script async="" src="https://embed.reddit.com/widgets.js" charset="UTF-8"></script>

<p>Now the caveat, because there is always one: PPC estimate data is still estimate data.</p>
<p>A sharp comment from the same thread said the only somewhat valuable part was the ad copy library. That is fair. If you treat SpyFu like a perfect x-ray of competitor budgets, you will be disappointed. If you treat it like cheap reconnaissance, it is excellent value.</p>
<h2 id="traffic-intel-tools">Traffic intel tools</h2>
<p>This is the part of the market where dashboards get prettier as the certainty gets lower.</p>
<h3 id="similarweb">Similarweb</h3>
<p>Similarweb is the default answer for traffic intel because it has the strongest executive-facing product in this bucket.</p>
<p>Its business packages page is very obviously built for bigger buyers. Most pricing is routed to sales. Public claims elsewhere on the site reference <strong>$399/mo</strong> for a broader stack comparison. Either way, it is not cheap.</p>
<p>What it does well:</p>
<ul>
<li>directional traffic comparisons</li>
<li>market/channel views</li>
<li>geographic and audience splits</li>
<li>benchmark-style reporting for execs and boards</li>
</ul>
<p>What it does poorly:</p>
<ul>
<li>convincing people the numbers are exact</li>
<li>preventing overbuying</li>
</ul>
<blockquote>
<p>“Long-time SimilarWeb Pro user here. For large websites (100k+ visitors per day), the data is very good on domain-level. The marketing channel split is wrong. But it is wrong the same way for everyone. So you can still use it to compare websites.”</p>
</blockquote>
<blockquote class="reddit-embed-bq" style="height:316px" data-embed-height="316"><a href="https://www.reddit.com/r/bigseo/comments/1lqpvoo/similarweb_how_does_it_work_when_it_comes_to_site/?ref=nubela.co">Similarweb, how does it work when it comes to site visitors?</a><br> by <a href="https://www.reddit.com/user/[deleted]/?ref=nubela.co">u/[deleted]</a> in <a href="https://www.reddit.com/r/bigseo/?ref=nubela.co">bigseo</a></blockquote>
<script async="" src="https://embed.reddit.com/widgets.js" charset="UTF-8"></script>

<p>That is the healthiest way to use Similarweb. Directionally. Relative to peers. Not as gospel.</p>
<p>Most CEOs do not need it. They need one clean answer to “is this market moving?” not an expensive addiction to top-down traffic charts.</p>
<h3 id="semrush-traffic-tools">Semrush traffic tools</h3>
<p>If you already pay for Semrush, its traffic and competitive research features are often enough.</p>
<p>Not as deep as Similarweb. Usually enough for:</p>
<ul>
<li>rough benchmarking</li>
<li>channel mix glimpses</li>
<li>sanity checking a market view</li>
</ul>
<p>If you are a sub-$20M company and someone is trying to sell you Similarweb as a default purchase, I would push back hard.</p>
<h3 id="sparktoro">SparkToro</h3>
<p>SparkToro is not really a traffic estimation tool. It is an audience discovery tool.</p>
<p>This matters because sometimes your real question is not “how much traffic do they get?” It is “where does this audience pay attention?”</p>
<p>Search results show SparkToro pricing starting at <strong>$38/mo</strong> on a low-tier paid plan, with a free version as well. That makes it attractive for light audience work.</p>
<p>Use it when:</p>
<ul>
<li>you want podcasts, sites, creators, and accounts your audience follows</li>
<li>you are planning distribution, not just spying on competitors</li>
<li>you want source discovery more than traffic estimates</li>
</ul>
<p>Do not use it as a fake Similarweb replacement. Wrong tool.</p>
<h2 id="monitoring-tools">Monitoring tools</h2>
<p>Monitoring is where most teams either save themselves or drown in low-grade noise.</p>
<h3 id="visualping">Visualping</h3>
<p>Visualping is the cleanest answer for page-level competitor monitoring.</p>
<p>You point it at:</p>
<ul>
<li>pricing pages</li>
<li>feature pages</li>
<li>comparison pages</li>
<li>docs pages</li>
<li>legal / policy pages</li>
</ul>
<p>And it tells you what changed.</p>
<p>I like it because the mental model is simple. I dislike it because simple monitors become spam cannons when teams get greedy.</p>
<blockquote>
<p>“We use Visualping on their pricing pages... Honestly, it’s easy to miss unless someone on the team is watching it on purpose.”</p>
</blockquote>
<blockquote class="reddit-embed-bq" style="height:316px" data-embed-height="316"><a href="https://www.reddit.com/r/SaaS/comments/1qwe783/has_competitor_pricing_ever_changed_and_hurt_a/?ref=nubela.co">Has competitor pricing ever changed and hurt a deal because you didn't catch it?</a><br> by <a href="https://www.reddit.com/user/Jumpy_Specialist5483/?ref=nubela.co">u/Jumpy_Specialist5483</a> in <a href="https://www.reddit.com/r/SaaS/?ref=nubela.co">SaaS</a></blockquote>
<script async="" src="https://embed.reddit.com/widgets.js" charset="UTF-8"></script>

<p>My rule: monitor fewer pages, but monitor the pages that can actually change a deal.</p>
<h3 id="owler">Owler</h3>
<p>Owler is fine for lightweight company alerts.</p>
<p>That sounds like a backhanded compliment because it is one.</p>
<p>If you want:</p>
<ul>
<li>easy company following</li>
<li>basic news and updates</li>
<li>less setup than enterprise CI platforms</li>
</ul>
<p>it is useful. But the public pricing picture is murky now. Their site heavily funnels you toward demos and sales motions, which I never love for a relatively lightweight use case.</p>
<p>Good entry point. Shallow output.</p>
<h3 id="crayon-klue">Crayon / Klue</h3>
<p>I am grouping these together because they solve a similar org problem:</p>
<ul>
<li>PMM teams</li>
<li>sales enablement</li>
<li>battlecards</li>
<li>competitive workflow distribution</li>
</ul>
<p>Their pricing is not publicly listed in a useful way. Both routes go toward sales. That usually means two things:</p>
<ol>
<li>they are selling a program, not just software</li>
<li>they are expensive enough that small teams should be skeptical by default</li>
</ol>
<p>And then there is the bigger issue.</p>
<p>A lot of competitive-intelligence software is workflow theater. If nobody updates the battlecards, you bought an expensive graveyard.</p>
<blockquote>
<p>“I would honestly kill the 'monthly CI update.' Nobody has time for that.”</p>
</blockquote>
<blockquote class="reddit-embed-bq" style="height:316px" data-embed-height="316"><a href="https://www.reddit.com/r/ProductMarketing/comments/1r2sk96/b2b_b2c_ai_pmm_why_static_battlecards_are_where/?ref=nubela.co">Why static battlecards are where competitor research goes to die</a><br> by <a href="https://www.reddit.com/user/Narrow_Back_6413/?ref=nubela.co">u/Narrow_Back_6413</a> in <a href="https://www.reddit.com/r/ProductMarketing/?ref=nubela.co">ProductMarketing</a></blockquote>
<script async="" src="https://embed.reddit.com/widgets.js" charset="UTF-8"></script>

<p>That is not a tooling problem. That is an operating model problem.</p>
<h3 id="ninjapear">NinjaPear</h3>
<p>This is where I need to be precise so I do not insult your intelligence.</p>
<p>NinjaPear is not trying to be Ahrefs. It is not pretending to be a generic SEO suite.</p>
<p>It is useful when the monitoring job spans:</p>
<ul>
<li>blog posts</li>
<li>X posts</li>
<li>meaningful website changes</li>
<li>customer / competitor / relationship context</li>
</ul>
<p>That combination matters. A page diff without business context is just motion. Context turns motion into signal.</p>
<p>The homepage and docs are unusually clear about this: usage-based pricing, updates feeds, customer listings, competitor mapping, and API-first delivery.</p>
<h2 id="company-intelligence-tools">Company intelligence tools</h2>
<p>This is where most “best competitor research tools” articles fall flat on their face.</p>
<h3 id="ninjapear_1">NinjaPear</h3>
<p>If I care about business questions, I want business data.</p>
<p>The useful pieces on NinjaPear are:</p>
<ul>
<li>company updates</li>
<li>customer lists</li>
<li>competitor identification</li>
<li>employees and profiles</li>
<li>usage-based API access</li>
</ul>
<p>The docs show public API costs like <strong>2 credits</strong> for Company Details, Employee Count, and Company Updates. The customer listing endpoint is <strong>1 credit per request + 2 credits per company returned</strong>, which is the kind of detail I wish more vendors published.</p>
<p>The customer listing view is the fastest illustration of why SEO-only competitor research is incomplete.</p>
<p><img alt="NinjaPear customer listing page, captured during research" src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2026/04/e2f4f54ff454.webp" /></p>
<p>If you know who buys from a competitor, you can:</p>
<ul>
<li>prospect those accounts</li>
<li>compare ecosystems</li>
<li>spot overlap and whitespace</li>
<li>build actual territory strategy</li>
</ul>
<p>That is more useful to a B2B sales or CEO workflow than one more chart about estimated visits.</p>
<h3 id="owler_1">Owler</h3>
<p>Owler gives you lightweight awareness.</p>
<p>That is not nothing. It is just not the same as relationship intelligence, account mapping, or fresh company change data. Useful for keeping tabs. Weak for deeper strategy.</p>
<h3 id="similarweb-and-others">Similarweb and others</h3>
<p>Tools like Similarweb can tell you a lot about audience and traffic patterns. They cannot tell you the relationship map behind the market.</p>
<p>That distinction matters.</p>
<p>Traffic intel answers, “How visible are they?”</p>
<p>Company intelligence answers, “How are they embedded in the market?”</p>
<p>Those are different questions. Buy accordingly.</p>
<h2 id="free-tools-that-still-help">Free tools that still help</h2>
<p>Not every stack needs to start with a $400 tab.</p>
<h3 id="free-seo-checks">Free SEO checks</h3>
<p>These are still useful:</p>
<ul>
<li><strong>Wappalyzer</strong> extension for quick tech stack checks</li>
<li>Google search operators for quick overlap checks</li>
<li>free website traffic checkers for rough direction, not truth</li>
<li>limited free versions of Ahrefs/Semrush adjacent tools</li>
</ul>
<p>Wappalyzer’s paid plans jump quickly, <strong>$250/mo</strong> for Pro and <strong>$450/mo</strong> for Business, but the free account still gives <strong>50 technology lookups per month</strong>. For quick technographic validation, that is plenty.</p>
<p><img alt="Wappalyzer pricing page, captured during research" src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2026/04/682c0f88ae9b.webp" /></p>
<h3 id="free-monitoring">Free monitoring</h3>
<p>Visualping’s free tier can cover a handful of critical pages if you are disciplined.</p>
<p>That discipline matters more than the tier.</p>
<p>Track:</p>
<ul>
<li>one pricing page</li>
<li>one flagship product page</li>
<li>one compare page</li>
<li>one blog or changelog feed</li>
</ul>
<p>Not 200 pages because you got excited on a Tuesday.</p>
<h3 id="free-company-research">Free company research</h3>
<p>Public company pages, press release searches, funding databases, and NinjaPear’s free developer tooling can all help before you commit to a bigger spend.</p>
<p>If you can answer the question with public web plus a browser extension, do that first.</p>
<h2 id="tool-stacks-by-team">Tool stacks by team</h2>
<p>This is where I see the most buying mistakes.</p>
<h3 id="ceo-at-a-small-company">CEO at a small company</h3>
<p>Buy:</p>
<ul>
<li>one SEO tool, <strong>Ahrefs or Semrush</strong></li>
<li>one monitoring tool, <strong>Visualping</strong></li>
</ul>
<p>Do not buy:</p>
<ul>
<li>Ahrefs + Semrush + Similarweb + an enterprise CI platform</li>
</ul>
<p>You do not need three overlapping suites to feel serious.</p>
<h3 id="growth-marketing-team">Growth marketing team</h3>
<p>Buy:</p>
<ul>
<li>Semrush or Ahrefs</li>
<li>maybe SpyFu if paid search matters</li>
<li>add monitoring only if somebody actually owns it</li>
</ul>
<p>If there is no owner, the alerts become wallpaper.</p>
<h3 id="product-marketing-ci-team">Product marketing / CI team</h3>
<p>Buy:</p>
<ul>
<li>monitoring</li>
<li>battlecard workflow if the team is real, not aspirational</li>
<li>company intelligence layer</li>
</ul>
<p>This is where Crayon, Klue, and NinjaPear start to make sense. But only if there is an actual operating cadence behind them.</p>
<h3 id="b2b-sales-team">B2B sales team</h3>
<p>SEO tools alone are half-blind here.</p>
<p>You need:</p>
<ul>
<li>company changes</li>
<li>relationship mapping</li>
<li>customer lists</li>
<li>account-level signals</li>
</ul>
<p>This is why pure SEO tooling disappoints sales leaders. It answers the wrong question.</p>
<h2 id="where-ninjapear-fits">Where NinjaPear fits</h2>
<p>I hate when vendors pretend to replace everything. So here is the honest version.</p>
<h3 id="what-it-is-good-at">What it is good at</h3>
<p>NinjaPear is good at:</p>
<ul>
<li>company updates</li>
<li>competitor mapping</li>
<li>customer lists</li>
<li>relationship intelligence</li>
<li>B2B account research</li>
<li>API-first workflows for teams that want to build on top</li>
</ul>
<p>The product pages are clear on the value prop: customers, competitors, employees, company updates, and simple usage-based pricing.</p>
<h3 id="what-it-is-not">What it is not</h3>
<p>It is <strong>not</strong> a replacement for Ahrefs or Semrush if your job is:</p>
<ul>
<li>backlink analysis</li>
<li>keyword clustering</li>
<li>content gap research</li>
<li>SERP-level SEO work</li>
</ul>
<p>That is not fake humility. It is category hygiene.</p>
<h2 id="faq">FAQ</h2>
<h3 id="what-is-the-best-competitor-research-tool-overall">What is the best competitor research tool overall?</h3>
<p>There is no single best tool overall. For keyword overlap, buy <strong>Ahrefs or Semrush</strong>. For PPC, buy <strong>SpyFu</strong>. For traffic intel, buy <strong>Similarweb</strong> if you truly need it. For business relationship intelligence, buy <strong>NinjaPear</strong>.</p>
<h3 id="what-are-the-best-free-competitor-research-tools">What are the best free competitor research tools?</h3>
<p>Wappalyzer’s free extension, Visualping’s free checks, search operators, and free traffic checker tools are the best starting point. They will not replace paid tools, but they can stop you from buying blindly.</p>
<h3 id="what-is-the-best-tool-for-keyword-overlap">What is the best tool for keyword overlap?</h3>
<p><strong>Ahrefs</strong> gets my vote for depth. <strong>Semrush</strong> if you want broader workflow coverage.</p>
<h3 id="what-is-the-best-tool-for-ongoing-competitor-monitoring">What is the best tool for ongoing competitor monitoring?</h3>
<p><strong>Visualping</strong> for page-level change detection. If you want broader company-level monitoring across sites, blogs, and X, <strong>NinjaPear</strong> is stronger.</p>
<h3 id="is-similarweb-accurate-enough-to-trust">Is Similarweb accurate enough to trust?</h3>
<p>Directionally, yes. Literally, no. Use it for relative benchmarking and trend direction. Not audited truth.</p>
<h3 id="spyfu-vs-semrush-which-is-better-for-ppc">SpyFu vs Semrush, which is better for PPC?</h3>
<p>For narrow PPC competitor intel, <strong>SpyFu</strong> is better value. For a broader marketing suite that also includes PPC-adjacent workflows, <strong>Semrush</strong> is broader but more expensive.</p>
<h3 id="what-is-the-best-competitor-research-tool-for-ceos">What is the best competitor research tool for CEOs?</h3>
<p>For most CEOs, the best stack is <strong>one SEO tool + one monitoring tool</strong>. Add company intelligence only if your market motion and deal timing actually require it.</p>
<h2 id="final-verdict">Final verdict</h2>
<p>Here is the blunt answer.</p>
<ul>
<li>For keyword overlap, buy <strong>Ahrefs or Semrush</strong>.</li>
<li>For PPC intel, buy <strong>SpyFu</strong>.</li>
<li>For traffic intel, buy <strong>Similarweb</strong> only if you actually need it.</li>
<li>For ongoing monitoring, buy <strong>Visualping</strong> or a broader monitor if your team will use it.</li>
<li>For business relationship intelligence, add <strong>NinjaPear</strong>.</li>
<li>Do <strong>not</strong> buy a giant suite to solve a narrow problem.</li>
</ul>
<p>That last line is the whole article.</p>
<p>“Competitor research tools” is mostly a fake category. Real buying decisions happen one job at a time.</p>
<p>If you want the practical next step, use the stack builder at the top, then cut one tool from your shortlist before you buy anything. Most teams are not under-tooled. They are overbought. And if your real blind spot is company changes, customer overlap, and relationship mapping, take a look at NinjaPear’s company intelligence pages before you spend another month staring at directional traffic charts.</p>
<!--kg-card-end: html-->
 ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ Build NinjaPear integrations with Claude/Codex/OpenCode (Skill+AI Docs) ]]></title>
        <description><![CDATA[ Most of the support requests I receive via email are API integration problems that arise due to users&#39; use of (mostly) Claude. This is why I&#39;m happy to share that I have added NinjaPear API documentation for LLM agents and a NinjaPear skill for AI agents.


If ]]></description>
        <link>https://nubela.co/blog/ninjapear-skill/</link>
        <guid isPermaLink="false">69def86e997d030001e881ba</guid>
        <category><![CDATA[ ninjapear ]]></category>
        <dc:creator><![CDATA[ Steven Goh | CEO ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2019/05/square.jpg"/>
        <pubDate>Wed, 15 Apr 2026 10:36:12 +0800</pubDate>
        <media:content url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2026/04/aiskill.png" medium="image"/>
        <content:encoded><![CDATA[ <p>Most of the support requests I receive via email are API integration problems that arise due to users' use of (mostly) Claude. This is why I'm happy to share that I have added <a href="https://nubela.co/llms-full.txt?ref=nubela.co">NinjaPear API documentation for LLM agents</a> and a <a href="https://nubela.co/docs/?ref=nubela.co#ai-skill">NinjaPear skill for AI agents</a>.</p>
<p>If you are using Claude Code (and not hating on Anthropic because of the recent nerf to their model), add the NinjaPear skill to Claude:</p>
<p>Bash</p>
<pre><code>$ npx skills add NinjaPear/ninjapear-skill -a claude-code
</code></pre>
<p>And if you've started exploring Codex like I have:</p>
<p>Bash</p>
<pre><code>npx skills add NinjaPear/ninjapear-skill -a codex
</code></pre>
<p>It's pretty cool. Once you have that added, the skill will give your coding agent knowledge on how to best work with NinjaPear correctly, including SDK integration, error/pagination/rate limit/timeout handling, as well as cost management!</p>
<p>In case you do not know yet, I'm an AI maximalist. And <strong>a lot</strong> of NinjaPear is driven by AI—much more than you think. When NinjaPear hits $1M ARR, and I'm sure it will in a few months' time, I'll show you what goes on behind the scenes of NinjaPear.</p>
<hr>
<p>Ok, in a nutshell:</p>
<ol>
<li><strong>For integrators</strong>: Use the <a href="https://github.com/NinjaPear/ninjapear-skill?ref=nubela.co">NinjaPear skill</a> if you are integrating NinjaPear into your applications.</li>
<li><strong>For users</strong>: Use the <a href="https://nubela.co/docs/?ref=nubela.co#claude-ai">NinjaPear MCP</a> if you want to work with NinjaPear's data inside your AI agent without writing code.</li>
<li><strong>For non-AI maximalists</strong>: Use <a href="https://nubela.co/llms-full.txt?ref=nubela.co">NinjaPear docs for AI agents</a>, which you can link to or drag and drop into your AI agent chat.</li>
</ol>
<p>Questions? Shoot me an email at <a href="mailto:hello@nubela.co">hello@nubela.co</a>!</p>
 ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ Visualping Review 2026 for CEOs, by an ex-CEO + Reddit/X comments ]]></title>
        <description><![CDATA[ Should You Actually Use Visualping?
A simpler operator rubric. Click a card, get a blunt answer.


I need page alerts
I need competitor intel
I need login-wall monitoring



1 to 10 targets
11 to 100 targets
100+ targets



Keep it simple
I can handle technical setup
I want a feed, ]]></description>
        <link>https://nubela.co/blog/visualping-review/</link>
        <guid isPermaLink="false">69dae39f997d030001e881a8</guid>
        <category><![CDATA[ visualping ]]></category>
        <dc:creator><![CDATA[ Alex Meyer ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2026/04/alex.png"/>
        <pubDate>Sun, 12 Apr 2026 08:13:22 +0800</pubDate>
        <media:content url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2026/04/cover_7-1.webp" medium="image"/>
        <content:encoded><![CDATA[ 
<!--kg-card-begin: html-->
<div style="border:1px solid #e5e7eb;border-radius:16px;padding:18px;margin:18px 0 28px 0;background:linear-gradient(180deg,#ffffff 0%,#f8fafc 100%);box-shadow:0 8px 24px rgba(15,23,42,.06)">
  <div style="font-size:22px;font-weight:700;margin-bottom:8px;">Should You Actually Use Visualping?</div>
  <div style="font-size:14px;color:#475569;margin-bottom:14px;">A simpler operator rubric. Click a card, get a blunt answer.</div>

  <div style="display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-bottom:12px;" id="vp-job-row">
    <button type="button" data-group="job" data-value="page" style="padding:12px;border:1px solid #cbd5e1;border-radius:12px;background:#0f172a;color:#fff;cursor:pointer;font-weight:600;">I need page alerts</button>
    <button type="button" data-group="job" data-value="intel" style="padding:12px;border:1px solid #cbd5e1;border-radius:12px;background:#fff;color:#0f172a;cursor:pointer;font-weight:600;">I need competitor intel</button>
    <button type="button" data-group="job" data-value="login" style="padding:12px;border:1px solid #cbd5e1;border-radius:12px;background:#fff;color:#0f172a;cursor:pointer;font-weight:600;">I need login-wall monitoring</button>
  </div>

  <div style="display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-bottom:12px;" id="vp-scale-row">
    <button type="button" data-group="scale" data-value="small" style="padding:12px;border:1px solid #cbd5e1;border-radius:12px;background:#0f172a;color:#fff;cursor:pointer;font-weight:600;">1 to 10 targets</button>
    <button type="button" data-group="scale" data-value="mid" style="padding:12px;border:1px solid #cbd5e1;border-radius:12px;background:#fff;color:#0f172a;cursor:pointer;font-weight:600;">11 to 100 targets</button>
    <button type="button" data-group="scale" data-value="large" style="padding:12px;border:1px solid #cbd5e1;border-radius:12px;background:#fff;color:#0f172a;cursor:pointer;font-weight:600;">100+ targets</button>
  </div>

  <div style="display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-bottom:16px;" id="vp-style-row">
    <button type="button" data-group="style" data-value="easy" style="padding:12px;border:1px solid #cbd5e1;border-radius:12px;background:#0f172a;color:#fff;cursor:pointer;font-weight:600;">Keep it simple</button>
    <button type="button" data-group="style" data-value="technical" style="padding:12px;border:1px solid #cbd5e1;border-radius:12px;background:#fff;color:#0f172a;cursor:pointer;font-weight:600;">I can handle technical setup</button>
    <button type="button" data-group="style" data-value="feed" style="padding:12px;border:1px solid #cbd5e1;border-radius:12px;background:#fff;color:#0f172a;cursor:pointer;font-weight:600;">I want a feed, not screenshots</button>
  </div>

  <div style="display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px;align-items:start;">
    <div style="background:#0f172a;color:#e2e8f0;border-radius:14px;padding:16px;">
      <div style="font-size:13px;color:#94a3b8;">Best-fit tool</div>
      <div id="vpBestTool" style="font-size:26px;font-weight:800;margin:4px 0 10px 0;">Visualping</div>
      <div style="font-size:13px;color:#94a3b8;">Fit score</div>
      <div id="vpFitScore" style="font-size:30px;font-weight:800;margin:4px 0 10px 0;">86/100</div>
      <div style="font-size:13px;color:#94a3b8;">Pain level</div>
      <div id="vpPain" style="font-size:16px;font-weight:700;margin:4px 0 12px 0;">low</div>
      <div style="font-size:13px;color:#94a3b8;">Operator note</div>
      <div id="vpNote" style="margin-top:6px;font-weight:600;line-height:1.45;">You do not need a company-intel platform. You need a decent page watcher.</div>
    </div>

    <div style="background:#f8fafc;border:1px solid #e2e8f0;border-radius:14px;padding:16px;">
      <div style="font-size:13px;color:#64748b;">Why it fits</div>
      <ul id="vpWhy" style="margin:8px 0 14px 18px;padding-left:14px;color:#0f172a;">
        <li>Fast setup for page-level monitoring</li>
        <li>Visual diffs are easy for humans to review</li>
        <li>Good fit for pricing, docs, and careers pages</li>
      </ul>
      <div style="font-size:13px;color:#64748b;">What will annoy you</div>
      <ul id="vpAnnoy" style="margin:8px 0 0 18px;padding-left:14px;color:#0f172a;">
        <li>Noise grows with scale</li>
        <li>Business workflows push you upmarket</li>
      </ul>
    </div>
  </div>

  <div style="display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:14px;">
    <label for="vpCompare" style="font-size:13px;color:#475569;font-weight:600;">Quick compare:</label>
    <select id="vpCompare" style="padding:10px 12px;border:1px solid #cbd5e1;border-radius:10px;background:#fff;">
      <option value="none">No side-by-side</option>
      <option value="distill">Compare with Distill.io</option>
      <option value="changedetection">Compare with changedetection.io</option>
      <option value="ninjapear">Compare with NinjaPear Company Monitor</option>
    </select>
    <button type="button" id="vpReset" style="padding:10px 12px;border:1px solid #cbd5e1;border-radius:10px;background:#fff;cursor:pointer;font-weight:600;">Reset</button>
  </div>

  <div id="vpCompareBox" style="display:none;margin-top:12px;padding:14px;border:1px dashed #cbd5e1;border-radius:12px;background:#fff;">
    <div id="vpCompareTitle" style="font-weight:700;color:#0f172a;"></div>
    <div id="vpCompareText" style="margin-top:6px;color:#475569;line-height:1.5;"></div>
  </div>

  <div style="margin-top:10px;font-size:12px;color:#64748b;">This is an opinionated operator rubric, not affiliate sludge.</div>
</div>

<script>
(function(){
  function initVP(){
    var state = { job:'page', scale:'small', style:'easy' };
    var bestEl = document.getElementById('vpBestTool');
    var scoreEl = document.getElementById('vpFitScore');
    var painEl = document.getElementById('vpPain');
    var noteEl = document.getElementById('vpNote');
    var whyEl = document.getElementById('vpWhy');
    var annoyEl = document.getElementById('vpAnnoy');
    var compareEl = document.getElementById('vpCompare');
    var compareBox = document.getElementById('vpCompareBox');
    var compareTitle = document.getElementById('vpCompareTitle');
    var compareText = document.getElementById('vpCompareText');
    var resetBtn = document.getElementById('vpReset');
    if (!bestEl || !scoreEl || !painEl || !noteEl || !whyEl || !annoyEl || !compareEl || !compareBox || !compareTitle || !compareText || !resetBtn) return;

    var toolCopy = {
      visualping: {
        name: 'Visualping',
        why: ['Fast setup for page-level monitoring','Visual diffs are easy for humans to review','Good fit for pricing, docs, and careers pages'],
        annoy: ['Noise grows with scale','Business workflows push you into pricier plans'],
        note: 'You do not need a company-intel platform. You need a decent page watcher.'
      },
      distill: {
        name: 'Distill.io',
        why: ['Better for tinkerers and power users','Good interval control','Strong when you want more knobs'],
        annoy: ['Less polished than Visualping','Setup can sprawl if you overdo it'],
        note: 'You probably want knobs, not hand-holding.'
      },
      changedetection: {
        name: 'changedetection.io',
        why: ['Cheap if you self-host','Very flexible browser steps and filters','Excellent for technical teams'],
        annoy: ['You own the plumbing','Someone has to fix it when it breaks'],
        note: 'If Docker does not scare you, this is stupidly cost-effective.'
      },
      ninjapear: {
        name: 'NinjaPear Company Monitor',
        why: ['Tracks company updates across website, blog, and X','Built for feeds, not just screenshots','Better for actual company-monitoring workflows'],
        annoy: ['Overkill for single-page watches','Not the cheapest answer if all you need is diffs'],
        note: 'You are not buying page monitoring. You are buying interpreted company movement.'
      }
    };

    var compareCopy = {
      visualping: {
        distill: 'Visualping is easier and prettier. Distill is better if you want tighter control and do not mind more setup.',
        changedetection: 'Visualping is easier to run. changedetection.io is cheaper and more flexible if you can own the plumbing.',
        ninjapear: 'Visualping answers page-change questions. NinjaPear answers company-movement questions across more than one surface.'
      },
      distill: {
        changedetection: 'Distill gives you more polish. changedetection.io gives you more raw control and lower software spend.',
        ninjapear: 'Distill is still a page monitor. NinjaPear is for broader company updates and feed-style workflows.'
      },
      changedetection: {
        ninjapear: 'changedetection.io is page watching with maximum control. NinjaPear is broader company monitoring.'
      },
      ninjapear: {}
    };

    function setActiveButtons(){
      var buttons = document.querySelectorAll('[data-group]');
      for (var i = 0; i < buttons.length; i++) {
        var btn = buttons[i];
        var group = btn.getAttribute('data-group');
        var value = btn.getAttribute('data-value');
        var active = state[group] === value;
        btn.style.background = active ? '#0f172a' : '#ffffff';
        btn.style.color = active ? '#ffffff' : '#0f172a';
        btn.style.borderColor = active ? '#0f172a' : '#cbd5e1';
      }
    }

    function liHtml(items){
      var html = '';
      for (var i = 0; i < items.length; i++) html += '<li>' + items[i] + '</li>';
      return html;
    }

    function getWinner(){
      if (state.job === 'intel') return { tool:'ninjapear', score: state.scale === 'large' ? 94 : 91, pain:'medium' };
      if (state.job === 'login' && state.style === 'easy') return { tool:'visualping', score: 82, pain: state.scale === 'large' ? 'medium' : 'low' };
      if (state.job === 'login' && state.style === 'technical') return { tool:'changedetection', score: 84, pain:'medium' };
      if (state.job === 'login' && state.style === 'feed') return { tool:'ninjapear', score: 72, pain:'medium' };
      if (state.job === 'page' && state.style === 'easy' && state.scale !== 'large') return { tool:'visualping', score: 86, pain:'low' };
      if (state.job === 'page' && state.style === 'easy' && state.scale === 'large') return { tool:'visualping', score: 74, pain:'medium' };
      if (state.job === 'page' && state.style === 'technical' && state.scale === 'small') return { tool:'distill', score: 81, pain:'medium' };
      if (state.job === 'page' && state.style === 'technical' && state.scale !== 'small') return { tool:'changedetection', score: 88, pain:'medium' };
      if (state.job === 'page' && state.style === 'feed') return { tool:'ninjapear', score: 89, pain:'low' };
      return { tool:'visualping', score: 80, pain:'medium' };
    }

    function renderCompare(bestTool){
      var compare = compareEl.value;
      if (compare === 'none') {
        compareBox.style.display = 'none';
        return;
      }
      compareBox.style.display = 'block';
      if (compare === bestTool) {
        compareTitle.textContent = toolCopy[bestTool].name + ' wins here';
        compareText.textContent = 'Your selected comparison tool is already the best fit for these choices. The use case is pretty clear.';
        return;
      }
      compareTitle.textContent = toolCopy[bestTool].name + ' vs ' + toolCopy[compare].name;
      if (compareCopy[bestTool] && compareCopy[bestTool][compare]) {
        compareText.textContent = compareCopy[bestTool][compare];
      } else {
        compareText.textContent = toolCopy[bestTool].name + ' is the better fit for this workflow. ' + toolCopy[compare].name + ' fits a different job.';
      }
    }

    function render(){
      setActiveButtons();
      var result = getWinner();
      var copy = toolCopy[result.tool];
      bestEl.textContent = copy.name;
      scoreEl.textContent = result.score + '/100';
      painEl.textContent = result.pain;
      noteEl.textContent = copy.note;
      whyEl.innerHTML = liHtml(copy.why);
      annoyEl.innerHTML = liHtml(copy.annoy);
      renderCompare(result.tool);
    }

    var buttons = document.querySelectorAll('[data-group]');
    for (var i = 0; i < buttons.length; i++) {
      buttons[i].addEventListener('click', function(){
        var group = this.getAttribute('data-group');
        var value = this.getAttribute('data-value');
        state[group] = value;
        render();
      });
    }

    compareEl.addEventListener('change', render);
    resetBtn.addEventListener('click', function(){
      state = { job:'page', scale:'small', style:'easy' };
      compareEl.value = 'none';
      render();
    });

    render();
  }

  if (document.readyState === 'loading') {
    document.addEventListener('DOMContentLoaded', initVP);
  } else {
    initVP();
  }
})();
</script>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<p>I’ve been the CEO signing the software bill. So I care less about feature bingo and a lot more about whether a tool creates signal or just creates work. My verdict on <strong>Visualping</strong> is simple: it’s good software for watching pages. I’d use it for pricing pages, job boards, docs, stock alerts, and policy pages. I would <strong>not</strong> use it as my main competitive intelligence system, and that’s where leadership teams screw this up.</p>
<blockquote>
<p>“Using visualping, I can tell it wait 5 seconds for all the JS to load, then click on a bunch of elements, write my zip code and then check if it’s available.”</p>
</blockquote>
<blockquote class="reddit-embed-bq" style="height:316px" data-embed-height="316">
<a href="https://www.reddit.com/r/programming/comments/ha054s/got_really_annoyed_with_visualpingio_last_night/?ref=nubela.co">Got really annoyed with visualping.io last night and created my own ...</a><br> by
<a href="https://www.reddit.com/user/maxupp/?ref=nubela.co">u/maxupp</a> in
<a href="https://www.reddit.com/r/programming/?ref=nubela.co">programming</a>
</blockquote>
<script async="" src="https://embed.reddit.com/widgets.js" charset="UTF-8"></script>

<p>That quote matters because it kills the lazy critique. Visualping is not a toy. It can wait for JS, click stuff, type into fields, and monitor the resulting state. The problem is different: people buy a page monitor and expect it to behave like an analyst.</p>
<h2 id="upfront-im-a-competitor">Upfront: I’m a competitor</h2>
<p>Yes, I lead GTM at NinjaPear. Yes, we have a product in this category, specifically <a href="https://nubela.co/?ref=nubela.co">Company Monitor</a>, which tracks company updates across websites, blogs, and X. So I’m obviously not neutral.</p>
<p>Good.</p>
<p>Neutral is overrated when the person writing the review has never had to justify a tooling budget.</p>
<p>I’ve spent real money on this category for years. When I was running FluxoMetric, I burned ~$4K/month across monitoring and enrichment tools at one point, and half of them produced the same disease: more alerts, more tabs, more human review. So I’m not promising objectivity. I’m promising receipts, screenshots, and hard distinctions.</p>
<h2 id="the-20-second-verdict">The 20-second verdict</h2>
<p><strong>Final verdict:</strong> Visualping is a strong page monitoring tool with a clean UX, useful visual diffs, enough dynamic-page support for non-trivial workflows, and real API/webhook options once you move into Business plans. My overall score is <strong>3.1/5</strong>.</p>
<p><strong>Use-case split:</strong>
- <strong>Use it</strong> if your job is: “tell me when this page changes.”
- <strong>Don’t use it as your main intel layer</strong> if your job is: “tell me what this company is doing.”</p>
<h3 id="use-it-for-page-alerts">Use it for page alerts</h3>
<p>Visualping is legitimately good for:
- pricing pages
- careers pages
- docs and changelogs
- policy and compliance pages
- restocks and ticket drops
- some authenticated dashboards and portals</p>
<p>That’s not a small list. Those are real jobs. If I needed a non-technical operator to monitor 20 pricing pages by this afternoon, Visualping would be on the shortlist.</p>
<h3 id="skip-it-for-market-intel">Skip it for market intel</h3>
<p>Competitive intelligence is not “a screenshot changed.” It is “this company added an enterprise security page, posted a hiring burst for solutions engineers, and shifted pricing copy in the same week.” Visualping can catch the first part. It does not natively give you the second and third in one coherent layer.</p>
<p>That difference sounds subtle. It isn’t. It’s the difference between seeing motion and understanding motion.</p>
<h2 id="tldr">TL;DR</h2>
<table>
<thead>
<tr>
<th>Factor</th>
<th>Visualping</th>
<th>Distill.io</th>
<th>changedetection.io</th>
<th>NinjaPear Company Monitor</th>
<th>Winner</th>
</tr>
</thead>
<tbody>
<tr>
<td>Data freshness</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐⭐</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>Distill.io</td>
</tr>
<tr>
<td>Data richness</td>
<td>⭐⭐☆☆☆</td>
<td>⭐⭐☆☆☆</td>
<td>⭐⭐☆☆☆</td>
<td>⭐⭐⭐⭐⭐</td>
<td>NinjaPear</td>
</tr>
<tr>
<td>Scalability</td>
<td>⭐⭐☆☆☆</td>
<td>⭐⭐⭐☆☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>NinjaPear</td>
</tr>
<tr>
<td>Pricing</td>
<td>⭐⭐☆☆☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐⭐</td>
<td>⭐⭐⭐☆☆</td>
<td>changedetection.io</td>
</tr>
<tr>
<td>Developer friendliness</td>
<td>⭐⭐⭐☆☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐⭐</td>
<td>⭐⭐⭐⭐☆</td>
<td>changedetection.io</td>
</tr>
<tr>
<td>Stability</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>Tie</td>
</tr>
<tr>
<td>Overall score</td>
<td><strong>3.10/5</strong></td>
<td><strong>3.67/5</strong></td>
<td><strong>4.00/5</strong></td>
<td><strong>4.00/5</strong></td>
<td>changedetection.io / NinjaPear</td>
</tr>
</tbody>
</table>
<p>That table needs context, obviously.</p>
<p>If you are a CEO or head of Ops with a small team and public pages to watch, Visualping is still a very reasonable buy. If you are trying to reduce analyst labor across dozens or hundreds of companies, the category itself is the constraint.</p>
<h2 id="what-visualping-gets-right">What Visualping gets right</h2>
<h3 id="setup-is-dead-simple">Setup is dead simple</h3>
<p>This part they nailed.</p>
<p>The homepage still communicates the core workflow in about 5 seconds: enter URL, choose what matters, pick frequency, send alert, done. No jargon safari. No setup maze. That matters more than reviewers admit because half the battle in this category is getting someone to actually configure the damn thing.</p>
<p><img alt="Visualping homepage hero" src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2026/04/3e3cc0d016da-2.webp" /></p>
<p>On the live homepage, Visualping literally shows the flow in the hero: enter a page, click <strong>Go</strong>, choose alert criteria, set check cadence, send to an email, and start free monitoring. That’s smart product marketing because it mirrors the actual user job instead of vomiting 40 features into a hero section.</p>
<p>And yes, it’s polished. More polished than a lot of these tools.</p>
<h3 id="visual-diffs-are-human-friendly">Visual diffs are human-friendly</h3>
<p>A lot of monitoring tools make sense only if you’re comfortable staring at HTML, selectors, or ugly text diffs. Visualping’s screenshot-first diffs are easier for non-technical teams to parse.</p>
<p>That is not a small UX preference. If your PMM, RevOps lead, or founder has to review the alert, highlighted screenshot diffs are much easier to scan than raw DOM churn. You see what moved. Fast.</p>
<p>This is also why Visualping is well-suited to executive workflows. CEOs do not want to inspect XPath. They want “what changed?” with enough visual context to decide whether it matters.</p>
<h3 id="it-handles-tricky-pages">It handles tricky pages</h3>
<p>This is the strongest pro-Visualping point I found in public user commentary.</p>
<blockquote>
<p>“Using visualping, I can tell it wait 5 seconds for all the JS to load, then click on a bunch of elements, write my zip code and then check if it’s available.”</p>
</blockquote>
<blockquote class="reddit-embed-bq" style="height:316px" data-embed-height="316">
<a href="https://www.reddit.com/r/programming/comments/ha054s/got_really_annoyed_with_visualpingio_last_night/?ref=nubela.co">Got really annoyed with visualping.io last night and created my own ...</a><br> by
<a href="https://www.reddit.com/user/maxupp/?ref=nubela.co">u/maxupp</a> in
<a href="https://www.reddit.com/r/programming/?ref=nubela.co">programming</a>
</blockquote>
<script async="" src="https://embed.reddit.com/widgets.js" charset="UTF-8"></script>

<p>That comment is from 2020, but the underlying point has held up. TechRadar also called out the “perform actions” feature for typing, clicking, and scrolling. And Visualping’s own 2026 article on password-protected pages explicitly documents two methods for login-wall monitoring:</p>
<ol>
<li><strong>Chrome extension</strong>, which captures your active browser session.</li>
<li><strong>Pre-actions with element selector</strong>, where the crawler types, clicks, waits, and then monitors.</li>
</ol>
<p>That means the honest answer is not “Visualping can’t handle advanced pages.” It can. The honest answer is “it can handle more than basic pages, but the more weirdness you add, the more operational caveats show up.”</p>
<h2 id="where-it-starts-to-suck">Where it starts to suck</h2>
<h3 id="change-is-not-signal">Change is not signal</h3>
<p>This is my biggest issue with most <strong>Visualping</strong> reviews. They act like detecting a page change is the same thing as delivering intelligence.</p>
<p>It isn’t.</p>
<p>A page monitor tells you something moved. It does not reliably tell you:
- whether the move matters commercially
- whether it was one-off noise
- how it connects to broader company behavior
- whether you should do anything about it</p>
<p>Visualping clearly understands this, because their product and content now lean hard into AI summaries, AI alerts, and importance filtering. Their own help doc goes even further: the higher-end Solutions motion includes <strong>AI concierge service</strong>, <strong>custom data structure and output</strong>, <strong>starter packs</strong>, <strong>image change interpretation</strong>, and upgraded models for more precise change interpretation.</p>
<p>That tells you something important.</p>
<p>The monitor is easy. The interpretation is where budgets go to die.</p>
<h3 id="noise-becomes-labor">Noise becomes labor</h3>
<p>The subscription price is rarely the real bill.</p>
<p>The real bill is this: who on your team opens the alerts, checks whether they matter, deduplicates them mentally, writes down the useful ones, and ignores the garbage without missing something important?</p>
<p>That labor compounds fast.</p>
<p>I found one recent Reddit complaint from a builder who abandoned visual monitors for event tracking because the workflow was “too noisy,” specifically calling out false positives from pixel changes like ads and cookie banners when they only cared about date changes.</p>
<blockquote>
<p>“False Positives: Visual monitors alert you when <em>pixels</em> change (e.g., an ad banner updates or a cookie popup appears). I only care if the actual <em>date</em> changes.”</p>
</blockquote>
<blockquote class="reddit-embed-bq" style="height:316px" data-embed-height="316">
<a href="https://www.reddit.com/r/SaaS/comments/1qg9mko/i_tried_using_visualping_to_track_event_dates_but/?ref=nubela.co">I tried using Visualping to track event dates, but it was too messy. So ...</a><br> by
<a href="https://www.reddit.com/user/rignaneseleo/?ref=nubela.co">u/rignaneseleo</a> in
<a href="https://www.reddit.com/r/SaaS/?ref=nubela.co">SaaS</a>
</blockquote>
<script async="" src="https://embed.reddit.com/widgets.js" charset="UTF-8"></script>

<p>That is not me taking a cheap shot. That is just the category showing its natural failure mode.</p>
<p>When I was consulting in Austin, this was the pattern over and over: the team thought they had a monitoring problem, but they actually had a triage problem.</p>
<h3 id="website-only-is-a-narrow-lens">Website-only is a narrow lens</h3>
<p>If your use case is “monitor this page,” website-only is fine.</p>
<p>If your use case is “monitor this company,” website-only is already incomplete.</p>
<p>Companies signal through:
- website page edits
- new pages appearing in a sitemap
- blog posts
- changelogs
- X posts
- hiring shifts
- product naming changes
- positioning changes across channels</p>
<p>Visualping is excellent at one slice of that. It is not the whole stack.</p>
<p>This is why I keep making the distinction between page monitoring and company monitoring. One is about diffs. The other is about interpreted updates across multiple surfaces.</p>
<h2 id="pricing-the-real-trap">Pricing: the real trap</h2>
<h3 id="free-gets-you-hooked">Free gets you hooked</h3>
<p>Public references on Visualping’s free plan vary by surface and date.</p>
<p>The Chrome Web Store listing still says the extension offers <strong>62 checks/month free</strong> for the server service. TechRadar’s 2025 review says the free plan includes <strong>150 checks/month</strong> and <strong>5 pages</strong>. So if you’re trying to spreadsheet this like it’s fixed law, don’t. Public references vary by context, surface, and date.</p>
<p>That inconsistency is not some grand scandal. It just means you should verify the exact free limits on the live pricing page before budgeting around them.</p>
<p>What I would not do is assume the free tier tells you much about real team usage. It doesn’t. Free is how you learn the product. It is not how you operationalize a workflow.</p>
<h3 id="business-is-where-workflows-start">Business is where workflows start</h3>
<p>TechRadar reported these plan anchors in 2025:
- <strong>$10/month</strong> for <strong>1,000 checks</strong> and up to <strong>25 pages</strong>
- <strong>$50/month</strong> for <strong>10,000 checks</strong> and up to <strong>200 pages</strong>
- <strong>$100/month</strong> for <strong>20,000 checks</strong> and around <strong>500 pages</strong>
- <strong>$250/month</strong> for <strong>50,000 checks</strong> and around <strong>1,500 pages</strong></p>
<p>I’m comfortable using those as public context because they are attributed and specific. But the bigger point is not the sticker price.</p>
<p>The bigger point is this: <strong>the moment you want Slack, Teams, Google Sheets, API, webhook, shared workflow, and team collaboration, you are no longer shopping a cheap side tool. You are shopping a workflow purchase.</strong></p>
<p>Visualping’s own help doc says Business plans are for professionals who want to integrate changes “via our API, Webhook, Google Sheets, Slack, or MS Teams.” Their integrations page also says integrations are available in all Visualping for Business plans.</p>
<p>That’s reasonable. I’m not whining that a business product charges for business features.</p>
<p>I’m saying a lot of buyers mentally price Visualping like a light utility, then operationalize it like a system. That’s where disappointment starts.</p>
<h3 id="human-review-is-the-hidden-cost">Human review is the hidden cost</h3>
<p>TechRadar also mentioned separate paid support add-ons ranging from <strong>$600/year</strong> to <strong>$3,000/year</strong>. Again, the support price is not my main objection.</p>
<p>My objection is that most reviews still miss the real budget line item: analyst time.</p>
<p>If you pay $100/month and save a team 6 hours, great purchase.</p>
<p>If you pay $100/month and create 8 hours of low-grade alert triage, congrats, you bought admin work with prettier screenshots.</p>
<p>That is the trap.</p>
<h2 id="api-and-integrations-reality">API and integrations reality</h2>
<h3 id="integrations-are-solid">Integrations are solid</h3>
<p>This is a legit strength.</p>
<p>Visualping’s integrations page explicitly lists:
- Slack
- Microsoft Teams
- Google Chat
- Zapier
- Google Sheets
- Lindy.ai
- n8n
- Webhooks
- API
- Discord</p>
<p><img alt="Visualping integrations page" src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2026/04/2bb672f22751-2.webp" /></p>
<p>That is enough coverage for most normal workflows. If your team lives in Slack or Teams, or you want a webhook into your own system, Visualping is not lacking there.</p>
<p>And I like that the integrations page is straightforward instead of pretending every connector is some moon landing.</p>
<h3 id="programmatically-yes-its-real">Programmatically, yes, it’s real</h3>
<p>A lot of vendor sites say “API” and mean “one brittle endpoint and a prayer.”</p>
<p>Visualping looks more serious than that.</p>
<p>Their integrations page says you can <strong>programmatically create, update, and manage your Visualping jobs</strong>. Their March 2026 API article goes deeper and shows actual payloads for:
- creating jobs with <code>POST https://job.api.visualping.io/v2/jobs</code>
- setting interval in minutes like <code>5</code>, <code>60</code>, <code>1440</code>
- narrowing monitoring to a specific selector with <code>xpath</code>
- adding <code>preactions</code> for clicks and typing before monitoring
- setting webhook notifications
- pulling active jobs and recent changes
- filtering for important changes via AI summaries and flags</p>
<p>That matters for ops-heavy teams. Once you get past ~30 monitors, dashboards start to become a pain in the ass. The API is how you stop doing repetitive hand setup.</p>
<p>Visualping’s own API article also makes a point I agree with: tracking 50 pages by hand is tedious, tracking 500 becomes a job in itself.</p>
<h3 id="but-theyre-not-the-same-as-insight">But they’re not the same as insight</h3>
<p>A Slack alert about a page change is still just a page change.</p>
<p>I know that sounds obvious. It isn’t obvious in budget meetings.</p>
<p>Moving the alert into Slack, Sheets, Zapier, n8n, or your own app does not magically upgrade the information quality. It upgrades distribution. That can be useful. It is not the same as interpretation.</p>
<p>This is one of those moments where teams confuse integration maturity with intelligence maturity.</p>
<p>They are not the same thing.</p>
<h3 id="business-plan-gating-matters">Business-plan gating matters</h3>
<p>Visualping is very explicit about this in its own help center.</p>
<p>The Business plans are for users who want to:
- scale to more pages or higher frequency
- collaborate in a central dashboard
- organize pages with workspaces and labels
- integrate via API, webhook, Google Sheets, Slack, or MS Teams</p>
<p><img alt="Visualping help doc showing Business-plan workflow features" src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2026/04/a6bdf4098fbe-2.webp" /></p>
<p>That’s the line that matters. Not because it’s unfair. Because it resets the buying math.</p>
<p>If you’re just watching a few public pages yourself, Personal might be enough.</p>
<p>If the changes have to flow into a real team process, you are in Business territory whether you like it or not.</p>
<h2 id="bot-blocking-login-walls-and-edge-cases">Bot blocking, login walls, and edge cases</h2>
<p>This was the missing section in the earlier draft, and it matters.</p>
<p>Because the minute someone says “we monitor pages behind login” or “we can click and type,” the next questions are obvious:
- What about bot detection?
- What about CAPTCHA?
- What about 2FA?
- What about SSO?
- What about pages behind a login wall?</p>
<p>The short answer is: <strong>Visualping is more capable than a basic public-page monitor, but it is not magic, and it is not a stealth scraping stack.</strong></p>
<h3 id="behind-login-walls-yes-with-caveats">Behind login walls, yes, with caveats</h3>
<p>Visualping’s February 2026 guide on password-protected pages is unusually direct. It says they support two approaches:</p>
<table>
<thead>
<tr>
<th>Method</th>
<th>Best for</th>
<th>Difficulty</th>
<th>Works with 2FA?</th>
</tr>
</thead>
<tbody>
<tr>
<td>Chrome extension</td>
<td>Any authentication method, including 2FA and SSO</td>
<td>Easy</td>
<td>Yes</td>
</tr>
<tr>
<td>Pre-actions</td>
<td>Standard username/password forms</td>
<td>Medium</td>
<td>No</td>
</tr>
</tbody>
</table>
<p>That is exactly the kind of clarity I want from a vendor.</p>
<p>The Chrome extension approach works by capturing your active browser session. If you can see the page in Chrome, Visualping can often monitor it. In <strong>Device mode</strong>, checks run on your machine. In <strong>Server mode</strong>, it captures session data like cookies and local storage and sends them to Visualping’s servers for background checks.</p>
<p>That means:
- <strong>2FA and SSO:</strong> extension method, yes
- <strong>basic username/password:</strong> pre-actions or extension, yes
- <strong>complex SPA auth flows:</strong> extension is more likely than pre-actions
- <strong>expiring sessions:</strong> expect re-auth pain</p>
<p>This is real capability. Also real friction.</p>
<h3 id="bot-detection-no-they-are-not-pretending-to-be-bulletproof">Bot detection, no, they are not pretending to be bulletproof</h3>
<p>This is where I give Visualping credit for honesty.</p>
<p>In their own login-monitoring guide, they say: <strong>“Some sites detect and block automated access.”</strong> Their suggested workaround is to use the Chrome extension in <strong>Device mode</strong> because it uses your real browser. They also say pre-actions do <strong>not</strong> work with <strong>CAPTCHA-protected logins</strong>.</p>
<p>Even more importantly, Visualping’s own scraping-related content says their system will <strong>never attempt to solve CAPTCHAs or circumvent systems designed to protect sites from unwanted crawling</strong>.</p>
<p>Good.</p>
<p>That is the right answer.</p>
<p>If a vendor claims they glide through Cloudflare, Akamai, login friction, and CAPTCHA without tradeoffs, one of two things is happening:
1. they are being sloppy with the truth, or
2. they are quietly drifting into a very different product category.</p>
<p>Visualping is a monitoring tool. Not a black-ops anti-bot framework.</p>
<h3 id="device-mode-vs-server-mode-the-real-tradeoff">Device mode vs server mode, the real tradeoff</h3>
<p>This is the practical operator view.</p>
<p><strong>Device mode</strong> is better when:
- the target site hates bots
- auth is messy
- you need your real browser fingerprint and session
- you can tolerate checks only running while your machine and Chrome are active</p>
<p><strong>Server mode</strong> is better when:
- you want background monitoring
- sessions do not expire too fast
- you need checks to run when your laptop is closed
- the site is not especially hostile to automated access</p>
<p>That is not just a product detail. It is an ownership detail.</p>
<p>If your workflow depends on Device mode, somebody now owns “keep the browser alive and logged in.” Usually that somebody is the poor bastard in RevOps.</p>
<h3 id="advanced-use-cases-where-its-genuinely-useful">Advanced use cases, where it’s genuinely useful</h3>
<p>Visualping is more capable than the average buyer realizes. Based on TechRadar, Visualping’s own docs, and their API article, the real advanced use cases include:</p>
<ul>
<li>monitoring a page after a <strong>click, type, scroll, or wait</strong> action</li>
<li>monitoring <strong>specific elements</strong> instead of the whole page</li>
<li>checking <strong>password-protected pages</strong></li>
<li>setting <strong>custom AI importance definitions</strong> for what counts as meaningful</li>
<li>sending alerts via <strong>webhook</strong>, not just email</li>
<li>spinning up <strong>hundreds of monitors programmatically</strong> through the API</li>
<li>tracking <strong>specific keywords</strong> rather than every visual change</li>
<li>routing change data into Slack, Sheets, or internal systems</li>
</ul>
<p>That is a legit feature surface.</p>
<p>Where I still draw the line is this: advanced page monitoring is still page monitoring.</p>
<h3 id="is-there-an-rss-feed">Is there an RSS feed?</h3>
<p>This is where the answer gets slightly annoying.</p>
<p>I found strong public evidence for <strong>email</strong>, <strong>Slack</strong>, <strong>Teams</strong>, <strong>Google Sheets</strong>, <strong>Discord</strong>, <strong>Google Chat</strong>, <strong>webhooks</strong>, <strong>Zapier</strong>, <strong>n8n</strong>, and the <strong>API</strong>. I did <strong>not</strong> find first-party evidence that Visualping exposes a native RSS feed output for alerts.</p>
<p>Could you build an RSS-like workflow yourself?
Yes.</p>
<p>If you control the webhook destination, you can push changes into your own feed generator, database, or digest system. But that is not the same as “Visualping has native RSS output.” Based on the evidence I found, I would <strong>not</strong> market that as a native product feature without a direct doc proving it.</p>
<p>This is one of the cleanest distinctions with <a href="https://nubela.co/?ref=nubela.co">NinjaPear Company Monitor</a>, by the way. Our monitor is designed around an RSS-consumable company-updates feed from day one. Visualping is more native to screenshot diffs and notification routing.</p>
<h2 id="my-scorecard">My scorecard</h2>
<p>Here’s my blunt scorecard for <strong>Visualping</strong>.</p>
<table>
<thead>
<tr>
<th>Category</th>
<th>Rating</th>
</tr>
</thead>
<tbody>
<tr>
<td>Ease of setup</td>
<td>⭐⭐⭐⭐☆</td>
</tr>
<tr>
<td>Visual clarity</td>
<td>⭐⭐⭐⭐☆</td>
</tr>
<tr>
<td>Dynamic page handling</td>
<td>⭐⭐⭐⭐☆</td>
</tr>
<tr>
<td>Behind-login support</td>
<td>⭐⭐⭐⭐☆</td>
</tr>
<tr>
<td>Bot-blocking resilience</td>
<td>⭐⭐☆☆☆</td>
</tr>
<tr>
<td>False positive control</td>
<td>⭐⭐☆☆☆</td>
</tr>
<tr>
<td>Meaningful signal extraction</td>
<td>⭐⭐☆☆☆</td>
</tr>
<tr>
<td>Integrations</td>
<td>⭐⭐⭐⭐☆</td>
</tr>
<tr>
<td>Developer friendliness</td>
<td>⭐⭐⭐☆☆</td>
</tr>
<tr>
<td>Pricing efficiency</td>
<td>⭐⭐☆☆☆</td>
</tr>
<tr>
<td>Scalability for intel teams</td>
<td>⭐⭐☆☆☆</td>
</tr>
<tr>
<td><strong>Overall</strong></td>
<td><strong>3.1/5</strong></td>
</tr>
</tbody>
</table>
<p>And here’s the broader comparison table using one consistent operator rubric.</p>
<table>
<thead>
<tr>
<th>Tool</th>
<th>Data freshness</th>
<th>Data richness</th>
<th>Scalability</th>
<th>Pricing</th>
<th>Developer friendliness</th>
<th>Stability</th>
<th>Average score</th>
</tr>
</thead>
<tbody>
<tr>
<td>Visualping</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐☆☆☆</td>
<td>⭐⭐☆☆☆</td>
<td>⭐⭐☆☆☆</td>
<td>⭐⭐⭐☆☆</td>
<td>⭐⭐⭐⭐☆</td>
<td><strong>3.00/5</strong></td>
</tr>
<tr>
<td>Distill.io</td>
<td>⭐⭐⭐⭐⭐</td>
<td>⭐⭐☆☆☆</td>
<td>⭐⭐⭐☆☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐☆</td>
<td><strong>3.67/5</strong></td>
</tr>
<tr>
<td>changedetection.io</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐☆☆☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐⭐</td>
<td>⭐⭐⭐⭐⭐</td>
<td>⭐⭐⭐⭐☆</td>
<td><strong>4.00/5</strong></td>
</tr>
<tr>
<td>NinjaPear Company Monitor</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐⭐</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐☆☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐☆</td>
<td><strong>4.00/5</strong></td>
</tr>
</tbody>
</table>
<p>Yes, that makes Visualping look middling.</p>
<p>That does <strong>not</strong> mean it’s bad.</p>
<p>It means the tool is good at a narrower job than many buyers want it to do.</p>
<h2 id="visualping-vs-distill-vs-changedetection">Visualping vs Distill vs changedetection</h2>
<h3 id="visualping-vs-distill">Visualping vs Distill</h3>
<p>Visualping is easier and more polished.</p>
<p>Distill is more appealing if you’re a tinkerer or power user who wants tighter control. Its public pricing has long skewed better for technical users who want more checks, more control, and faster intervals per dollar.</p>
<p>That’s a stronger price-to-control profile than Visualping for technical users. But I would still put Visualping in front of a non-technical founder before I put Distill there.</p>
<p>Visualping wins on polish. Distill wins on knobs.</p>
<h3 id="visualping-vs-changedetection">Visualping vs changedetection</h3>
<p>changedetection.io is for people who would rather pay with setup time than subscription money.</p>
<p>The open-source tradeoff is brutally simple: you get far more control, but you also own the plumbing. If you’re comfortable with Docker, selectors, browser steps, API usage, and the occasional broken job, it is absurdly cost-effective.</p>
<blockquote>
<p>“There also exists this project https://github.com/dgtlmoon/changedetection.io which is self-hosted...”</p>
</blockquote>
<blockquote class="reddit-embed-bq" style="height:316px" data-embed-height="316">
<a href="https://www.reddit.com/r/programming/comments/ha054s/got_really_annoyed_with_visualpingio_last_night/?ref=nubela.co">Got really annoyed with visualping.io last night and created my own ...</a><br> by
<a href="https://www.reddit.com/user/maxupp/?ref=nubela.co">u/maxupp</a> in
<a href="https://www.reddit.com/r/programming/?ref=nubela.co">programming</a>
</blockquote>
<script async="" src="https://embed.reddit.com/widgets.js" charset="UTF-8"></script>

<p>That’s the actual tradeoff in one comment. Visualping is easier. changedetection.io is cheaper and more flexible if you’re willing to own the mess.</p>
<h3 id="visualping-vs-ninjapear-monitor">Visualping vs NinjaPear Monitor</h3>
<p>I’m going to say this as plainly as possible.</p>
<ul>
<li><strong>Visualping</strong> = page monitoring</li>
<li><strong><a href="https://nubela.co/?ref=nubela.co">NinjaPear Company Monitor</a></strong> = company updates across website, blog, X, and meaningful changes</li>
</ul>
<p>If you want <strong>“did this page move?”</strong>, buy Visualping.</p>
<p>If you want <strong>“what is this company doing?”</strong>, buy a different class of tool.</p>
<p>That’s the line.</p>
<p>Our product exists because I got tired of teams building competitive workflows on top of page diffs alone. A pricing page update matters more when it lands next to a new product page, a hiring push, and a CEO post. That’s why we built feeds for company-level updates instead of just highlighted screenshots.</p>
<p>If you only need page diffs, don’t overbuy. I mean that.</p>
<h2 id="what-reddit-and-x-got-right">What Reddit and X got right</h2>
<h3 id="reddit-on-dynamic-pages">Reddit on dynamic pages</h3>
<p>The best short proof of Visualping’s capability is still that couch availability quote. It shows the product can wait for JS, click elements, type inputs, and monitor the resulting state.</p>
<p>That’s real functionality, not brochure fluff.</p>
<h3 id="reddit-on-diy-alternatives">Reddit on DIY alternatives</h3>
<p>Reddit also gets something else right: technical buyers compare Visualping with self-hosted options almost immediately.</p>
<p>That is exactly what should happen.</p>
<p>If your team is comfortable with Docker, browser automation, selectors, and owning a box, changedetection.io deserves serious consideration. If your team is not, the cost of “free” rises quickly the first time something breaks on a Sunday.</p>
<h3 id="x-on-competitor-monitoring">X on competitor monitoring</h3>
<p>I found one practitioner post that I actually believe because it describes a sane, limited use case instead of pretending page alerts are a full intel stack:</p>
<blockquote class="twitter-tweet"><p lang="en" dir="ltr">I use VisualPing to monitor changes on web pages.

No fancy integration. No scraping.
Just an alert when something changes.

I use it for:
- platform tweaks its docs
- competitor updates pricing
- goods price decrease 🤭

I get an email, and I’m already in the loop.</p>&mdash; Luca Restagno 🐢 blacktwist.app (@ikoichi) <a href="https://x.com/ikoichi/status/1950609850179965360?ref=nubela.co">Jul 30, 2025</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

<p>That is a good Visualping workflow. Narrow. Practical. No nonsense.</p>
<p>And then there’s this X post about sitemap monitoring:</p>
<blockquote class="twitter-tweet"><p lang="en" dir="ltr">/sitemap.xml

every website has one. it's a complete list of every page, including ones not yet publicly announced

new product pages, new pricing tiers, new integration pages,
new career sections, all appear in the sitemap before
the press release

monitor competitor sitemaps with visualping . io

they have no idea they're leaking their roadmap</p>&mdash; Aryan Mahajan (@aryanXmahajan) <a href="https://x.com/aryanXmahajan/status/2037024254869594627?ref=nubela.co">Mar 26, 2026</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

<p>This is smart. Also incomplete.</p>
<p>Monitoring a sitemap is a great tactic. I’ve used variants of it myself. But again, it tells you something new exists. It does not, by itself, tell you whether the company is making a meaningful move across the rest of its surface area.</p>
<h2 id="screenshots-and-proof">Screenshots and proof</h2>
<h3 id="homepage-hero">Homepage hero</h3>
<p>Already captured. It shows the thing I like most about Visualping: the product promise is clear fast.</p>
<p><img alt="Visualping homepage hero" src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2026/04/3e3cc0d016da-3.webp" /></p>
<h3 id="integrations-proof">Integrations proof</h3>
<p>This is the cleanest source for workflow routing and API positioning.</p>
<p><img alt="Visualping integrations screenshot" src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2026/04/2bb672f22751-3.webp" /></p>
<h3 id="help-doc-proof">Help-doc proof</h3>
<p>The help article is the strongest proof point for workflow gating and higher-end service layers. It explicitly says Business plans are for teams integrating via API, webhook, Google Sheets, Slack, or MS Teams. It also spells out that Solutions includes AI concierge, custom outputs, and support for more complex requirements.</p>
<p><img alt="Visualping help-doc screenshot" src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2026/04/a6bdf4098fbe-3.webp" /></p>
<h2 id="evidence-table">Evidence table</h2>
<table>
<thead>
<tr>
<th>Claim</th>
<th>Source</th>
<th>Exact wording / evidence</th>
<th>Article takeaway</th>
</tr>
</thead>
<tbody>
<tr>
<td>Homepage positions Visualping as simple setup</td>
<td>https://visualping.io/</td>
<td>Hero shows URL input, “Click Go to take a snapshot,” alert setup, cadence, and email destination</td>
<td>Visualping’s UX is optimized for fast setup and non-technical use</td>
</tr>
<tr>
<td>Integrations exist for common workflow tools</td>
<td>https://visualping.io/integrations</td>
<td>Lists Slack, Microsoft Teams, Google Chat, Zapier, Google Sheets, Lindy.ai, n8n, Webhooks, Discord, API</td>
<td>Integrations are solid for normal business workflows</td>
</tr>
<tr>
<td>Integrations are Business-plan oriented</td>
<td>https://visualping.io/integrations</td>
<td>“Integrations are available in all Visualping for Business plans.”</td>
<td>Useful connectors, but they push team workflows upmarket</td>
</tr>
<tr>
<td>Business plans include workflow integrations</td>
<td>https://help.visualping.io/en/articles/6308929</td>
<td>“Integrate changes into their own custom workflow via our API, Webhook, Google Sheets, Slack, or MS Teams.”</td>
<td>API/webhook/Slack/Sheets are part of the Business motion</td>
</tr>
<tr>
<td>Solutions includes AI interpretation help</td>
<td>https://help.visualping.io/en/articles/6308929</td>
<td>“AI concierge service... only notifies you when a change is important.”</td>
<td>Visualping knows that raw change detection is not enough at scale</td>
</tr>
<tr>
<td>Login-wall monitoring is supported</td>
<td>https://visualping.io/blog/how-to-monitor-password-protected-websites-using-visualping</td>
<td>Supports Chrome extension and pre-actions; extension works with 2FA/SSO, pre-actions do not handle 2FA</td>
<td>Behind-login support is real, but method choice matters</td>
</tr>
<tr>
<td>Some sites block the crawler</td>
<td>https://visualping.io/blog/how-to-monitor-password-protected-websites-using-visualping</td>
<td>“Some sites detect and block automated access. The Chrome extension in Device mode avoids this because it uses your real browser.”</td>
<td>Bot-blocking resilience is limited in server-side mode</td>
</tr>
<tr>
<td>CAPTCHA is not handled by pre-actions</td>
<td>https://visualping.io/blog/how-to-monitor-password-protected-websites-using-visualping</td>
<td>“Pre-actions do not work with... CAPTCHA-protected logins”</td>
<td>This is not a full anti-bot platform</td>
</tr>
<tr>
<td>API is real, not decorative</td>
<td>https://visualping.io/blog/monitor-website-changes-api</td>
<td>Shows <code>POST https://job.api.visualping.io/v2/jobs</code>, job creation, webhooks, selectors, preactions, and change history</td>
<td>Serious teams can operationalize Visualping programmatically</td>
</tr>
<tr>
<td>TechRadar pricing context</td>
<td>https://www.techradar.com/reviews/visualping-web-content-monitoring</td>
<td>Free 150 checks/month and 5 pages; paid plans from $10 personal to $250 business</td>
<td>Public pricing context supports the workflow-purchase argument</td>
</tr>
<tr>
<td>Chrome Web Store free reference differs</td>
<td>https://chromewebstore.google.com/detail/visualping/pemhgklkefakciniebenbfclihhmmfcd?hl=en</td>
<td>“62 checks/month free” for server service</td>
<td>Free-tier references vary by surface/date, so buyers should verify live</td>
</tr>
<tr>
<td>Native RSS output not clearly documented</td>
<td>research pass</td>
<td>Strong evidence for email, Slack, Teams, Sheets, webhooks, API, Discord, Zapier, n8n, but no first-party native RSS feed doc found</td>
<td>Don’t assume RSS exists as a native output</td>
</tr>
</tbody>
</table>
<h2 id="who-should-buy-it">Who should buy it</h2>
<h3 id="buy-visualping-if">Buy Visualping if</h3>
<p>Buy <strong>Visualping</strong> if all or most of this is true:
- you’re a solo operator or a small team
- you need simple page alerts, not broader company intelligence
- you care about visual diffs more than structured output
- most targets are public web pages
- you want something a non-technical person can set up in one sitting
- you may occasionally need login-wall monitoring, but you understand the caveats</p>
<p>I’d also buy it if I were a founder who wanted 10 to 50 high-value pages monitored quickly without turning the project into engineering work.</p>
<h3 id="skip-visualping-if">Skip Visualping if</h3>
<p>Skip it, or at least don’t make it your main system, if this sounds more like your reality:
- you need structured company intelligence
- you need website + blog + X + new-page coverage together
- you are trying to reduce analyst labor, not merely detect page movement
- you say “competitive intelligence” but what you really mean is “tell me what matters”
- your targets are consistently behind hostile bot defenses or CAPTCHA-heavy auth flows
- you expect highlighted screenshots to substitute for interpretation</p>
<p>That last one gets teams in trouble all the time.</p>
<h2 id="my-final-take">My final take</h2>
<p>Visualping is good software. I mean that.</p>
<p>It is easy to set up, visually clear, and more capable on dynamic pages and login-gated pages than a lot of people realize. For page alerts, especially pricing pages, docs, jobs, stock alerts, policy pages, and some authenticated portals, it’s a very reasonable answer.</p>
<p>But good software gets misbought all the time.</p>
<p>If your job is <strong>“alert me when this page changes,”</strong> Visualping is worth paying for.</p>
<p>If your job is <strong>“tell me what this company is doing,”</strong> it’s the wrong layer of the stack.</p>
<p>That distinction sounds small. It isn’t. It’s the difference between getting notified and actually knowing what matters.</p>
<p>If you’re still deciding, build a brutally honest buyer sheet with four columns: <strong>pages to watch, who reviews alerts, what happens when a change fires, and whether the target pages sit behind auth or bot friction</strong>. If that exercise makes the workflow look heavier than you expected, you probably don’t need more page monitors. You need better signal design.</p>
<p>And if your real need is company-level monitoring across web, blog, and X, with an RSS-style feed you can actually consume, look at NinjaPear’s Company Monitor instead of forcing a page watcher to do a market-intel job.</p>
<!--kg-card-end: html-->
 ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ Ultimate Business Intelligence Guide for CEOs by a CEO in 2026 + Reddit Comments ]]></title>
        <description><![CDATA[ BI Platform Cost + Fit Calculator
Answer the only two questions most CEOs actually care about: which business intelligence platform fits, and what the bill probably looks like.


Creators/builders: 5



Analysts/explorers: 10



Viewers/executives: 50



Deployment
cloudon-premhybriddon&#39;t care


Data maturity
spreadsheetsbasic warehouseserious warehouse + dbtenterprise semantic layer


Top ]]></description>
        <link>https://nubela.co/blog/ultimate-business-intelligence-guide-for-ceos-2026/</link>
        <guid isPermaLink="false">69d9908a1ff0fe00015814c3</guid>
        <category><![CDATA[ business intelligence platform ]]></category>
        <dc:creator><![CDATA[ Alex Meyer ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2026/04/alex.png"/>
        <pubDate>Sat, 11 Apr 2026 08:06:35 +0800</pubDate>
        <media:content url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2026/04/cover_6-2.webp" medium="image"/>
        <content:encoded><![CDATA[ 
<!--kg-card-begin: html-->
<div style="border:1px solid #d0d7de;border-radius:12px;padding:18px;margin:18px 0;background:#f6f8fa;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;">
  <div style="font-size:22px;font-weight:700;margin-bottom:8px;">BI Platform Cost + Fit Calculator</div>
  <div style="font-size:14px;color:#57606a;margin-bottom:16px;">Answer the only two questions most CEOs actually care about: which business intelligence platform fits, and what the bill probably looks like.</div>
  <div style="display:grid;grid-template-columns:repeat(2,minmax(280px,1fr));gap:16px;">
    <div>
      <label>Creators/builders: <span id="c1v">5</span></label>
      <input id="c1" type="range" min="0" max="100" value="5" style="width:100%">
    </div>
    <div>
      <label>Analysts/explorers: <span id="c2v">10</span></label>
      <input id="c2" type="range" min="0" max="300" value="10" style="width:100%">
    </div>
    <div>
      <label>Viewers/executives: <span id="c3v">50</span></label>
      <input id="c3" type="range" min="0" max="5000" value="50" style="width:100%">
    </div>
    <div>
      <label>Deployment</label>
      <select id="deploy" style="width:100%;padding:8px"><option>cloud</option><option>on-prem</option><option>hybrid</option><option>don't care</option></select>
    </div>
    <div>
      <label>Data maturity</label>
      <select id="maturity" style="width:100%;padding:8px"><option>spreadsheets</option><option>basic warehouse</option><option>serious warehouse + dbt</option><option>enterprise semantic layer</option></select>
    </div>
    <div>
      <label>Top priority</label>
      <select id="priority" style="width:100%;padding:8px"><option>cheapest</option><option>best self-service</option><option>best dashboards</option><option>strongest governance</option><option>best enterprise scale</option><option>fastest setup</option></select>
    </div>
    <div><label><input id="embed" type="checkbox"> Need embedded analytics?</label></div>
    <div><label><input id="nlq" type="checkbox"> Need natural-language search?</label></div>
    <div><label><input id="metrics" type="checkbox"> Need strict governed metrics?</label></div>
    <div><label><input id="external" type="checkbox"> Need outside market data in dashboards?</label></div>
  </div>
  <div style="margin-top:14px;display:flex;gap:8px;flex-wrap:wrap;">
    <button onclick="preset('startup')" style="padding:8px 12px">Startup</button>
    <button onclick="preset('mid')" style="padding:8px 12px">Mid-market</button>
    <button onclick="preset('enterprise')" style="padding:8px 12px">Enterprise</button>
    <button onclick="preset('warehouse')" style="padding:8px 12px">Data-team-heavy org</button>
    <label style="margin-left:8px"><input id="vendorsToggle" type="checkbox"> Show BI + data vendors</label>
  </div>
  <div id="warn" style="display:none;margin-top:14px;padding:10px 12px;background:#fff8c5;border:1px solid #e3b341;border-radius:8px;font-size:14px;"></div>
  <div id="summary" style="margin-top:14px;padding:12px;background:white;border-radius:8px;border:1px solid #d0d7de"></div>
  <div id="results" style="margin-top:14px"></div>
  <details style="margin-top:12px"><summary><strong>Show me why</strong></summary><div id="why" style="padding-top:10px;font-size:14px;color:#444"></div></details>
  <div style="margin-top:14px;font-size:12px;color:#57606a;">List price is not your contract. Enterprise BI pricing gets weird fast.</div>
</div>
<script>
const tools=[
{name:'Power BI', kind:'bi', calc:(c,a,v)=>((c+a+v)*14*12), fit:['cheapest','fastest setup'], avoid:'Avoid if your org already drowns in messy DAX and unmanaged models.', note:'Best default buy. Cheap, politically easy, and usually good enough.'},
{name:'Tableau', kind:'bi', calc:(c,a,v)=>(c*75+a*42+v*15)*12, fit:['best dashboards'], avoid:'Avoid if finance is already glaring at software spend.', note:'Best visual analysis and presentation quality.'},
{name:'Qlik', kind:'bi', calc:()=>300*12, fit:['best enterprise scale','strongest governance'], avoid:'Avoid if your buyers need dead-simple seat math and big-brand familiarity.', note:'Underrated, solid backend, capacity-based pricing.'},
{name:'Looker', kind:'bi', calc:()=>null, fit:['strongest governance','best enterprise scale'], avoid:'Avoid if you do not already have a real warehouse and analytics engineering discipline.', note:'Great governed metrics, but only for teams ready for LookML.'},
{name:'Sigma', kind:'bi', calc:()=>null, fit:['best self-service'], avoid:'Avoid if you expect the tool to clean up a bad model for you.', note:'Modern warehouse-native BI with spreadsheet feel.'},
{name:'ThoughtSpot', kind:'bi', calc:()=>null, fit:['best self-service'], avoid:'Avoid if your source data is weak and you think search will save you.', note:'Best bet for search-first analytics.'},
{name:'Domo', kind:'bi', calc:()=>null, fit:['fastest setup'], avoid:'Avoid if you need super-transparent pricing and tight long-term governance.', note:'Fast start, lots of connectors, can get expensive.'},
{name:'Sisense', kind:'bi', calc:()=>null, fit:['fastest setup'], avoid:'Avoid if you are not doing embedded or product analytics.', note:'Often enters the room for embedded analytics.'},
{name:'Metabase', kind:'bi', calc:()=>0, fit:['cheapest','fastest setup'], avoid:'Avoid if you need heavy enterprise governance.', note:'Open source and cheap. Good enough for a lot of teams.'},
{name:'Zoho Analytics', kind:'bi', calc:()=>384, fit:['cheapest'], avoid:'Avoid if you need top-end enterprise governance or prestige.', note:'Best budget SMB option.'},
{name:'NinjaPear', kind:'vendor', calc:()=>null, fit:['external'], avoid:'Avoid if you only need internal KPI reporting and zero outside-world context.', note:'Best external company intelligence layer for BI dashboards.'},
{name:'ZoomInfo', kind:'vendor', calc:()=>null, fit:['external'], avoid:'Avoid if you want affordable pricing.', note:'Classic enterprise sales intelligence.'},
{name:'Apollo', kind:'vendor', calc:()=>null, fit:['external'], avoid:'Avoid if you need pristine enterprise-grade coverage in every segment.', note:'Startup-friendly sales data option.'},
{name:'Crunchbase', kind:'vendor', calc:()=>null, fit:['external'], avoid:'Avoid if you think funding data alone equals market intelligence.', note:'Good company basics and funding context.'},
{name:'Clay', kind:'vendor', calc:()=>null, fit:['external'], avoid:'Avoid if you need a source of truth, not an orchestration layer.', note:'Great for enrichment orchestration.'}
];
function score(t){
  const c=+c1.value,a=+c2.value,v=+c3.value; let s=50;
  if(priority.value==='cheapest' && ['Power BI','Metabase','Zoho Analytics'].includes(t.name)) s+=20;
  if(priority.value==='best dashboards' && t.name==='Tableau') s+=22;
  if(priority.value==='strongest governance' && ['Looker','Qlik','Power BI'].includes(t.name)) s+=18;
  if(priority.value==='best enterprise scale' && ['Looker','Qlik','Power BI'].includes(t.name)) s+=16;
  if(priority.value==='fastest setup' && ['Domo','Power BI','Metabase'].includes(t.name)) s+=18;
  if(priority.value==='best self-service' && ['Sigma','ThoughtSpot','Tableau'].includes(t.name)) s+=18;
  if(maturity.value==='spreadsheets' && ['Metabase','Power BI','Zoho Analytics'].includes(t.name)) s+=15;
  if(maturity.value==='serious warehouse + dbt' && ['Sigma','Looker','ThoughtSpot'].includes(t.name)) s+=15;
  if(maturity.value==='enterprise semantic layer' && ['Looker','Qlik'].includes(t.name)) s+=16;
  if(deploy.value==='on-prem' && ['Tableau','Qlik'].includes(t.name)) s+=10;
  if(embed.checked && ['Sisense','Domo','Looker'].includes(t.name)) s+=14;
  if(nlq.checked && ['ThoughtSpot','Power BI'].includes(t.name)) s+=12;
  if(metrics.checked && ['Looker','Qlik','Power BI'].includes(t.name)) s+=14;
  if(external.checked && t.kind==='vendor') s+=26;
  if(external.checked && ['Power BI','Tableau','Looker','Sigma'].includes(t.name)) s+=8;
  if((c+a)<5 && ['Looker','Qlik'].includes(t.name)) s-=10;
  if(v>500 && t.name==='Tableau') s-=8;
  return s;
}
function money(t){ const m=t.calc(+c1.value,+c2.value,+c3.value); return m===null?'Contact sales / custom pricing':'~$'+m.toLocaleString()+'/yr'; }
function render(){
  [c1,c2,c3].forEach((el,i)=>document.getElementById('c'+(i+1)+'v').textContent=el.value);
  let list=tools.filter(t=>vendorsToggle.checked?true:t.kind==='bi').map(t=>({...t,score:score(t)})).sort((x,y)=>y.score-x.score).slice(0,5);
  warn.style.display='none';
  if((maturity.value==='spreadsheets' || (+c1.value<3 && +c2.value<5)) && ['Looker','Qlik'].includes(list[0].name)){
    warn.style.display='block'; warn.textContent='You are probably overbuying. Fancy enterprise BI will not fix a spreadsheet-era data culture.';
  }
  summary.innerHTML='<strong>CEO summary:</strong> '+(list[0].score>70?'Buy ':'Shortlist ')+list[0].name+'<br><span style="color:#57606a">Then test '+list.slice(1,3).map(x=>x.name).join(' and ')+' against your actual data, not a vendor fantasy demo.</span>';
  results.innerHTML=list.map((t,i)=>`<div style="background:white;border:1px solid #d0d7de;border-radius:10px;padding:12px;margin:10px 0"><strong>#${i+1} ${t.name}</strong> <span style="color:#57606a">Score ${t.score}</span><br>${t.note}<br><strong>Estimated annual license:</strong> ${money(t)}<br><strong>Best fit:</strong> ${t.fit.join(', ')}<br><strong>Avoid if:</strong> ${t.avoid}</div>`).join('');
  why.innerHTML=`Logic used: priority=${priority.value}, maturity=${maturity.value}, deployment=${deploy.value}, embedded=${embed.checked}, NL search=${nlq.checked}, governed metrics=${metrics.checked}, external intelligence=${external.checked}. Public pricing assumptions encoded for Power BI Pro $14/user/mo, Tableau Standard Viewer $15 Explorer $42 Creator $75, Qlik Starter $300/mo, Standard $825/mo, Premium $2,750/mo. Looker, Sigma, ThoughtSpot, Domo, Sisense, Oracle, Cognos, SAP BO, and Strategy are treated as custom pricing.`;
}
function preset(p){
 if(p==='startup'){c1.value=2;c2.value=2;c3.value=10;deploy.value='cloud';maturity.value='spreadsheets';priority.value='cheapest';embed.checked=false;nlq.checked=false;metrics.checked=false;external.checked=false;}
 if(p==='mid'){c1.value=5;c2.value=12;c3.value=75;deploy.value='cloud';maturity.value='basic warehouse';priority.value='fastest setup';embed.checked=false;nlq.checked=false;metrics.checked=false;external.checked=true;}
 if(p==='enterprise'){c1.value=20;c2.value=80;c3.value=1000;deploy.value='hybrid';maturity.value='enterprise semantic layer';priority.value='strongest governance';embed.checked=true;nlq.checked=true;metrics.checked=true;external.checked=true;}
 if(p==='warehouse'){c1.value=10;c2.value=25;c3.value=100;deploy.value='cloud';maturity.value='serious warehouse + dbt';priority.value='best self-service';embed.checked=false;nlq.checked=true;metrics.checked=true;external.checked=true;}
 render();
}
[c1,c2,c3,deploy,maturity,priority,embed,nlq,metrics,external,vendorsToggle].forEach(el=>el.addEventListener('input',render)); render();
</script>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<p>If I were a CEO buying a <strong>business intelligence platform</strong> in 2026, I would not start with a feature grid. I’d start with this: <strong>Power BI is still the safest default, Tableau still wins on visual analysis, Looker only makes sense if you already have a real data team, Qlik is better than the market gives it credit for, Sigma is the modern one, ThoughtSpot is the best bet if search-first analytics matters, and most companies are overpaying for capabilities they will never operationalize.</strong> The license is not the real cost. The cleanup job six months later is.</p>
<blockquote>
<p>“I'd avoid Looker, as a current admin of both that and Tableau. Looker is way more expensive and much more complicated to use (LookML is its own language). If you have on-prem servers it's also difficult to set up connections.”</p>
</blockquote>
<blockquote class="reddit-embed-bq" style="height:316px" data-embed-height="316">
<a href="https://www.reddit.com/r/BusinessIntelligence/comments/1psxtxv/shifting_from_tableau_to_either_looker_or_powerbi/?ref=nubela.co">Shifting from Tableau to either Looker or PowerBI</a><br> by
<a href="https://www.reddit.com/user/theungod/?ref=nubela.co">u/theungod</a> in
<a href="https://www.reddit.com/r/BusinessIntelligence/?ref=nubela.co">BusinessIntelligence</a>
</blockquote>
<script async="" src="https://embed.reddit.com/widgets.js" charset="UTF-8"></script>

<p>That comment is blunt. Good. Buying a BI platform should be blunt.</p>
<p>I’ve been on the hook for this decision from both sides. At FluxoMetric, I burned ~$4K a month on analytics tools that looked smart in the demo and turned into maintenance hobbies in production. Later, running Meyer Growth Labs in Austin, I inherited half-built BI stacks where the dashboard looked polished and the data model underneath was basically a crime scene.</p>
<p>So this is not another lazy top-15 roundup written by someone who has never had to explain a five-figure renewal to finance. This is the buying guide I’d hand a CEO before they let RevOps, IT, finance, and one very polished AE drag them into a 3-year contract.</p>
<h2 id="tldr">TL;DR</h2>
<p>Here’s the fast comparison table for the main <strong>business intelligence platform</strong> shortlist.</p>
<table>
<thead>
<tr>
<th>Factor</th>
<th>Power BI</th>
<th>Tableau</th>
<th>Looker</th>
<th>Qlik</th>
<th>Sigma</th>
<th>ThoughtSpot</th>
<th>Domo</th>
<th>Metabase</th>
<th>Zoho Analytics</th>
<th>Winner</th>
</tr>
</thead>
<tbody>
<tr>
<td>Best use case</td>
<td>Default buy</td>
<td>Visual analysis</td>
<td>Governed metrics</td>
<td>Underrated enterprise</td>
<td>Modern self-service</td>
<td>Search-first analytics</td>
<td>Fast rollout</td>
<td>Cheap/open source</td>
<td>SMB budget</td>
<td>Depends</td>
</tr>
<tr>
<td>Visuals</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐⭐</td>
<td>⭐⭐⭐☆☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐☆☆</td>
<td>⭐⭐⭐☆☆</td>
<td>⭐⭐⭐☆☆</td>
<td>⭐⭐☆☆☆</td>
<td>⭐⭐⭐☆☆</td>
<td>Tableau</td>
</tr>
<tr>
<td>Self-service</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐☆☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐⭐</td>
<td>⭐⭐⭐⭐⭐</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>Sigma / ThoughtSpot</td>
</tr>
<tr>
<td>Governance</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐☆☆</td>
<td>⭐⭐⭐⭐⭐</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐☆☆</td>
<td>⭐⭐⭐☆☆</td>
<td>⭐⭐⭐☆☆</td>
<td>⭐⭐☆☆☆</td>
<td>⭐⭐⭐☆☆</td>
<td>Looker</td>
</tr>
<tr>
<td>Scale</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐⭐</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐☆☆</td>
<td>⭐⭐⭐☆☆</td>
<td>Looker</td>
</tr>
<tr>
<td>Pricing sanity</td>
<td>⭐⭐⭐⭐⭐</td>
<td>⭐⭐☆☆☆</td>
<td>⭐⭐☆☆☆</td>
<td>⭐⭐⭐☆☆</td>
<td>⭐⭐☆☆☆</td>
<td>⭐⭐☆☆☆</td>
<td>⭐⭐☆☆☆</td>
<td>⭐⭐⭐⭐⭐</td>
<td>⭐⭐⭐⭐⭐</td>
<td>Power BI / Metabase / Zoho</td>
</tr>
<tr>
<td>Dev friendliness</td>
<td>⭐⭐⭐☆☆</td>
<td>⭐⭐⭐☆☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐☆☆</td>
<td>⭐⭐⭐☆☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐☆☆</td>
<td>Looker / Qlik / Sigma / Metabase</td>
</tr>
<tr>
<td>Stability / admin sanity</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐☆☆</td>
<td>⭐⭐⭐☆☆</td>
<td>Tie</td>
</tr>
<tr>
<td>External intelligence fit</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐⭐</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐⭐</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐☆☆</td>
<td>Looker / Sigma</td>
</tr>
<tr>
<td>Overall score</td>
<td><strong>3.9/5</strong></td>
<td><strong>3.7/5</strong></td>
<td><strong>4.1/5 right team, 2.8/5 wrong team</strong></td>
<td><strong>3.9/5</strong></td>
<td><strong>4.0/5</strong></td>
<td><strong>3.8/5</strong></td>
<td><strong>3.6/5</strong></td>
<td><strong>3.4/5</strong></td>
<td><strong>3.6/5</strong></td>
<td>Power BI default</td>
</tr>
</tbody>
</table>
<p>My executive summary:</p>
<ul>
<li><strong>Best default buy:</strong> Power BI</li>
<li><strong>Best visuals:</strong> Tableau</li>
<li><strong>Best governed metrics:</strong> Looker</li>
<li><strong>Most underrated:</strong> Qlik</li>
<li><strong>Best modern UX:</strong> Sigma</li>
<li><strong>Best search-first pick:</strong> ThoughtSpot</li>
<li><strong>Best fast-start dashboard stack:</strong> Domo</li>
<li><strong>Best cheap/open source option:</strong> Metabase</li>
<li><strong>Best SMB value:</strong> Zoho Analytics</li>
<li><strong>Best external company intelligence layer for BI:</strong> <a href="https://nubela.co/?ref=nubela.co">NinjaPear</a></li>
</ul>
<h2 id="why-most-bi-advice-sucks">Why most BI advice sucks</h2>
<p>Most <strong>business intelligence platform</strong> advice on page one is written by one of three people:</p>
<ol>
<li>The vendor.</li>
<li>An affiliate writer who has never owned a renewal.</li>
<li>Somebody who thinks a dashboard screenshot counts as implementation experience.</li>
</ol>
<p>That’s why the advice is so bloodless. Nobody says the obvious part out loud: <strong>switching BI tools is usually a rebuild, not a migration</strong>. Nobody says the finance fight matters. Nobody says your semantic layer can rot faster than your dashboards. Nobody says the wrong tool will quietly create trust debt inside the company.</p>
<p>When I was running FluxoMetric, the most expensive analytics mistake I made was not buying the wrong software. It was buying software before we had earned the complexity. That mistake cost me ~9 months, a few contractors, and enough monthly SaaS burn to make me physically ill every time I opened the bank dashboard.</p>
<p>And here’s the bigger miss. Most BI comparisons only compare the dashboard layer. They ignore the fact that a <strong>business intelligence platform</strong> without outside-world data is often just internal reporting with nicer fonts.</p>
<p>If your CEO wants to know which competitors changed messaging, which prospect accounts just added 12 AI roles, which customers overlap with a rival, or which companies quietly changed pricing, that is not magically created by Tableau or Power BI. You need external data vendors for that. I’ll get to that later because it’s the part most listicles completely whiff.</p>
<h2 id="how-i-scored-them">How I scored them</h2>
<p>I scored these platforms the way operators actually live with them, not how they demo.</p>
<p>No points for a slick homepage. No points for AI glitter. No points for “vision.” I care about what happens after month 4, after the first reorg, after the original dashboard builder quits, and after your CFO asks why you’re paying enterprise prices for 19 dashboards nobody trusts.</p>
<h3 id="the-nine-things-that-matter">The nine things that matter</h3>
<p>I used nine dimensions for every <strong>business intelligence platform</strong> here:</p>
<ol>
<li><strong>Visualization quality</strong></li>
<li><strong>Self-service ease</strong></li>
<li><strong>Governance / semantic consistency</strong></li>
<li><strong>Scalability</strong></li>
<li><strong>Pricing sanity</strong></li>
<li><strong>Developer friendliness</strong></li>
<li><strong>Stability / admin sanity</strong></li>
<li><strong>Data freshness support</strong></li>
<li><strong>Fit for external intelligence workflows</strong></li>
</ol>
<p>The star ratings below reflect <strong>operating reality</strong>, not demo quality.</p>
<h2 id="the-fast-answer">The fast answer</h2>
<h3 id="best-default-buy">Best default buy</h3>
<p><strong>Power BI</strong></p>
<p>If you need the safest answer, this is still it. Microsoft ecosystem gravity is real. Procurement likes it. Finance likes the list price more than most alternatives. Most companies can get to “good enough” fast.</p>
<p>The catch: Power BI also creates a ton of “good enough” analytics debt. DAX spaghetti. Model sprawl. Workarounds piled on workarounds. I’ve seen more mediocre analytics estates built in Power BI than any other tool, partly because it’s so easy to buy.</p>
<h3 id="best-for-visual-analysis">Best for visual analysis</h3>
<p><strong>Tableau</strong></p>
<p>Still the prettiest gun in the room. If your analysts need exploratory work, presentation-heavy analysis, and nuanced visual control, Tableau still deserves real respect.</p>
<p>But a lot of companies are paying luxury prices for charts they barely need.</p>
<h3 id="best-for-governed-metrics">Best for governed metrics</h3>
<p><strong>Looker</strong></p>
<p>If nobody trusts the numbers, and you have the warehouse plus analytics engineering muscle to back it up, Looker is still one of the strongest metric-governance bets on the market.</p>
<p>If your company is still half spreadsheet, half wishful thinking, do not touch it.</p>
<h3 id="most-underrated-pick">Most underrated pick</h3>
<p><strong>Qlik</strong></p>
<p>Qlik suffers from familiarity bias. Buyers forget it because it doesn’t dominate mindshare like Power BI or Tableau. That’s dumb. Its associative model is still legit, and power users consistently respect the backend.</p>
<h3 id="best-modern-challenger">Best modern challenger</h3>
<p><strong>Sigma</strong></p>
<p>Sigma is the tool I see modern warehouse-native teams warm to fastest. The spreadsheet metaphor lowers fear. Business users click around like they’re in Sheets. Data teams don’t have to pretend CSV chaos is a strategy.</p>
<h3 id="best-for-search-first-analytics">Best for search-first analytics</h3>
<p><strong>ThoughtSpot</strong></p>
<p>If your adoption problem is that nobody wants to learn dashboard navigation, ThoughtSpot earns a lane of its own. The whole point is question-first analytics.</p>
<p>Still, search UX is not a substitute for governed data. Garbage in, natural-language garbage out.</p>
<h3 id="best-if-you-want-fast-setup">Best if you want fast setup</h3>
<p><strong>Domo</strong></p>
<p>When speed matters, Domo keeps showing up because it has a lot of prebuilt connectors and a more packaged feel than many competitors.</p>
<p>That speed can be a gift. Or a trap. Depends whether your team is skipping data discipline to get a dashboard into the board deck by Friday.</p>
<h3 id="best-open-source-cheap-option">Best open-source / cheap option</h3>
<p><strong>Metabase</strong></p>
<p>If you do not need an enterprise monster, Metabase is often the sober answer. Cheap, simple, open source, and good enough for a surprising number of internal dashboard use cases.</p>
<h3 id="best-budget-smb-option">Best budget SMB option</h3>
<p><strong>Zoho Analytics</strong></p>
<p>This one gets ignored by enterprise-heavy reviews, which is a mistake. For SMBs that need useful reporting without Tableau money, Zoho Analytics is a real option.</p>
<h2 id="power-bi-review">Power BI review</h2>
<p><strong>My score: ~3.9/5</strong></p>
<table>
<thead>
<tr>
<th>Dimension</th>
<th>Rating</th>
</tr>
</thead>
<tbody>
<tr>
<td>Visuals</td>
<td>⭐⭐⭐⭐☆</td>
</tr>
<tr>
<td>Self-service</td>
<td>⭐⭐⭐⭐☆</td>
</tr>
<tr>
<td>Governance</td>
<td>⭐⭐⭐⭐☆</td>
</tr>
<tr>
<td>Scalability</td>
<td>⭐⭐⭐⭐☆</td>
</tr>
<tr>
<td>Pricing</td>
<td>⭐⭐⭐⭐⭐</td>
</tr>
<tr>
<td>Dev friendliness</td>
<td>⭐⭐⭐☆☆</td>
</tr>
<tr>
<td>Stability</td>
<td>⭐⭐⭐⭐☆</td>
</tr>
<tr>
<td>Data freshness support</td>
<td>⭐⭐⭐☆☆</td>
</tr>
<tr>
<td>External intelligence fit</td>
<td>⭐⭐⭐⭐☆</td>
</tr>
<tr>
<td>Average</td>
<td><strong>3.9/5</strong></td>
</tr>
</tbody>
</table>
<h3 id="why-it-keeps-winning">Why it keeps winning</h3>
<p>Power BI keeps winning because the buying process is easier than the implementation reality.</p>
<p>A few reasons:</p>
<ul>
<li><strong>Cheap relative to the field</strong></li>
<li><strong>Microsoft ecosystem gravity</strong></li>
<li><strong>Familiar enough that procurement feels safe</strong></li>
<li><strong>Sometimes already politically bundled</strong></li>
</ul>
<p>Microsoft’s public pricing currently lists <strong>Power BI Pro at $14/user/month</strong> and Microsoft’s pricing update confirms <strong>Premium Per User at $24/user/month</strong>. That matters because list price is often what gets Power BI onto the shortlist in the first place.</p>
<h3 id="where-it-gets-messy">Where it gets messy</h3>
<p>Power BI’s dirty secret is not that it’s bad. It’s that it makes it very easy to create analytics debt that looks productive.</p>
<p>The biggest pain points I see:</p>
<ul>
<li><strong>DAX debt</strong></li>
<li><strong>Model sprawl</strong></li>
<li><strong>Sharing and licensing quirks</strong></li>
<li><strong>Too many workarounds for “basic” asks once complexity rises</strong></li>
</ul>
<blockquote>
<p>“You gotta be really careful. You can solve today's problems with PowerBI, but this can easily snowball to technical debt, solving things quickly today will make issues tomorrow. Each model becomes its own bird's nest to untangle if some metric or underlying application changes.”</p>
</blockquote>
<blockquote class="reddit-embed-bq" style="height:316px" data-embed-height="316">
<a href="https://www.reddit.com/r/BusinessIntelligence/comments/keklwj/power_bi_is_so_powerful_you_dont_even_need_an_etl/?ref=nubela.co">Power BI is so powerful you don't even need an ETL?</a><br> by
<a href="https://www.reddit.com/user/deleted/?ref=nubela.co">u/deleted</a> in
<a href="https://www.reddit.com/r/BusinessIntelligence/?ref=nubela.co">BusinessIntelligence</a>
</blockquote>
<script async="" src="https://embed.reddit.com/widgets.js" charset="UTF-8"></script>

<blockquote>
<p>“If your tables change often then you probably need an abstraction layer like ‘Views’... avoid using dax or power query if you can. Powerbi is slow when working with large data sets.”</p>
</blockquote>
<blockquote class="reddit-embed-bq" style="height:316px" data-embed-height="316">
<a href="https://www.reddit.com/r/BusinessIntelligence/comments/1c6b1vt/powerbi_limitations_and_best_practices/?ref=nubela.co">PowerBI limitations and best practices</a><br> by
<a href="https://www.reddit.com/user/deleted/?ref=nubela.co">u/deleted</a> in
<a href="https://www.reddit.com/r/BusinessIntelligence/?ref=nubela.co">BusinessIntelligence</a>
</blockquote>
<script async="" src="https://embed.reddit.com/widgets.js" charset="UTF-8"></script>

<p>And here’s the tweet I wish more buyers would internalize before they get hypnotized by AI-demo theater:</p>
<blockquote class="twitter-tweet"><p lang="en" dir="ltr">&quot;AI is killing Power BI and Tableau&quot;... no it&#39;s not.

No one wants your boutique custom dashboard interface.

They want something reliable, with data refreshes that work, that they can share with colleagues, that have admin, viewing, and collaboration features.</p>&mdash; Alex Freberg (@Alex_TheAnalyst) <a href="https://x.com/Alex_TheAnalyst/status/2041842277824200950?ref=nubela.co">April 8, 2026</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

<p>That is exactly right. Reliability beats novelty in BI, every damn time.</p>
<p>And this second X post is smaller, but it captures something I’m seeing a lot more in mature teams: AI and code are speeding up the visual layer, not magically replacing modeling discipline.</p>
<blockquote class="twitter-tweet"><p lang="en" dir="ltr">Version 0.22.0 of the Power BI agentic development plugins have a new skill for DAX ... I recommend using the pbir-cli in an iterative way where you specify the requirements and formatting that you want. Avoid using open-ended, subjective prompts &quot;make a good report&quot; ... The tool doesn&#39;t think or design for you; it lets you focus on that part while it takes care of the formatting and tasks!</p>&mdash; Kurt Buhler (@kurtbuhler) <a href="https://x.com/kurtbuhler/status/2042622790289797577?ref=nubela.co">April 10, 2026</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

<p>Exactly. Better tooling, same need for judgment.</p>
<h3 id="pricing-reality">Pricing reality</h3>
<p>Verified public pricing:</p>
<ul>
<li><strong>Power BI Pro:</strong> $14/user/month</li>
<li><strong>Power BI Premium Per User:</strong> $24/user/month</li>
</ul>
<p>I removed the Power BI pricing image because it was failing to load in publication. Better to keep the verified numbers and Microsoft source than ship a broken asset.</p>
<h2 id="tableau-review">Tableau review</h2>
<p><strong>My score: ~3.7/5</strong></p>
<table>
<thead>
<tr>
<th>Dimension</th>
<th>Rating</th>
</tr>
</thead>
<tbody>
<tr>
<td>Visuals</td>
<td>⭐⭐⭐⭐⭐</td>
</tr>
<tr>
<td>Self-service</td>
<td>⭐⭐⭐⭐☆</td>
</tr>
<tr>
<td>Governance</td>
<td>⭐⭐⭐☆☆</td>
</tr>
<tr>
<td>Scalability</td>
<td>⭐⭐⭐⭐☆</td>
</tr>
<tr>
<td>Pricing</td>
<td>⭐⭐☆☆☆</td>
</tr>
<tr>
<td>Dev friendliness</td>
<td>⭐⭐⭐☆☆</td>
</tr>
<tr>
<td>Stability</td>
<td>⭐⭐⭐⭐☆</td>
</tr>
<tr>
<td>Data freshness support</td>
<td>⭐⭐⭐☆☆</td>
</tr>
<tr>
<td>External intelligence fit</td>
<td>⭐⭐⭐⭐☆</td>
</tr>
<tr>
<td>Average</td>
<td><strong>3.7/5</strong></td>
</tr>
</tbody>
</table>
<h3 id="why-analysts-still-love-it">Why analysts still love it</h3>
<p>Tableau still feels like it was built by people who give a damn about analysis as a craft.</p>
<p>That shows up in exploratory visual work, presentation quality, and the sheer amount of control analysts get.</p>
<blockquote>
<p>“Tableau is still ‘the’ industry standard, as far as I can tell. I have been using it for 6 years now.”</p>
</blockquote>
<blockquote class="reddit-embed-bq" style="height:316px" data-embed-height="316">
<a href="https://www.reddit.com/r/tableau/comments/1fatl2w/is_tableau_still_alive/?ref=nubela.co">Is Tableau still alive?</a><br> by
<a href="https://www.reddit.com/user/deleted/?ref=nubela.co">u/deleted</a> in
<a href="https://www.reddit.com/r/tableau/?ref=nubela.co">tableau</a>
</blockquote>
<script async="" src="https://embed.reddit.com/widgets.js" charset="UTF-8"></script>

<blockquote>
<p>“Tableau. But Power BI is a close second!”</p>
</blockquote>
<blockquote class="reddit-embed-bq" style="height:316px" data-embed-height="316">
<a href="https://www.reddit.com/r/BusinessIntelligence/comments/1liwsj6/what_is_your_favorite_data_visualization_bi_tool/?ref=nubela.co">What is your favorite data visualization BI tool?</a><br> by
<a href="https://www.reddit.com/user/Zealousideal-Kale532/?ref=nubela.co">u/Zealousideal-Kale532</a> in
<a href="https://www.reddit.com/r/BusinessIntelligence/?ref=nubela.co">BusinessIntelligence</a>
</blockquote>
<script async="" src="https://embed.reddit.com/widgets.js" charset="UTF-8"></script>

<p>That sentiment persists for a reason. Tableau still has better taste than most of the field.</p>
<h3 id="why-finance-hates-the-invoice">Why finance hates the invoice</h3>
<p>The problem is simple: role-based pricing adds up fast.</p>
<p>Tableau’s public pricing page lists:</p>
<ul>
<li><strong>Standard Edition</strong>: Viewer $15, Explorer $42, Creator $75, billed annually</li>
<li><strong>Enterprise Edition</strong>: Viewer $35, Explorer $70, Creator $115, billed annually</li>
</ul>
<p>That means a mid-sized org can create a very serious annual bill before it has solved governance, semantic consistency, or adoption.</p>
<h3 id="pricing-reality_1">Pricing reality</h3>
<p>Verified public pricing from Tableau’s pricing page:</p>
<ul>
<li><strong>Standard Viewer:</strong> $15/user/month billed annually</li>
<li><strong>Standard Explorer:</strong> $42/user/month billed annually</li>
<li><strong>Standard Creator:</strong> $75/user/month billed annually</li>
<li><strong>Enterprise Viewer:</strong> $35/user/month billed annually</li>
<li><strong>Enterprise Explorer:</strong> $70/user/month billed annually</li>
<li><strong>Enterprise Creator:</strong> $115/user/month billed annually</li>
</ul>
<p>For a 10 Creator, 20 Explorer, 100 Viewer deployment on Standard, you’re at <strong>$34,080/year</strong> before add-ons or services.</p>
<p><img alt="Tableau pricing page, overview" src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2026/04/bdaed682cf4b-1.webp" /></p>
<p><em>Tableau pricing page, captured from <code>https://www.tableau.com/pricing</code>. Public list pricing shows Standard and Enterprise starting prices.</em></p>
<p><img alt="Tableau pricing page, role details" src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2026/04/ebc4bb312676-1.webp" /></p>
<p><em>Second Tableau pricing capture from the same public page. This view shows the role-based licensing detail, which is exactly where the invoice starts to bite.</em></p>
<h2 id="looker-review">Looker review</h2>
<p><strong>My score: ~4.1/5 for the right team, ~2.8/5 for the wrong one</strong></p>
<table>
<thead>
<tr>
<th>Dimension</th>
<th>Rating</th>
</tr>
</thead>
<tbody>
<tr>
<td>Visuals</td>
<td>⭐⭐⭐☆☆</td>
</tr>
<tr>
<td>Self-service</td>
<td>⭐⭐⭐☆☆</td>
</tr>
<tr>
<td>Governance</td>
<td>⭐⭐⭐⭐⭐</td>
</tr>
<tr>
<td>Scalability</td>
<td>⭐⭐⭐⭐⭐</td>
</tr>
<tr>
<td>Pricing</td>
<td>⭐⭐☆☆☆</td>
</tr>
<tr>
<td>Dev friendliness</td>
<td>⭐⭐⭐⭐☆</td>
</tr>
<tr>
<td>Stability</td>
<td>⭐⭐⭐⭐☆</td>
</tr>
<tr>
<td>Data freshness support</td>
<td>⭐⭐⭐⭐☆</td>
</tr>
<tr>
<td>External intelligence fit</td>
<td>⭐⭐⭐⭐⭐</td>
</tr>
<tr>
<td>Average</td>
<td><strong>4.1/5 right team, 2.8/5 wrong team</strong></td>
</tr>
</tbody>
</table>
<h3 id="why-serious-data-teams-still-buy-it">Why serious data teams still buy it</h3>
<p>LookML is both the reason to buy Looker and the tax you pay forever.</p>
<p>If your company has a real warehouse, dbt or equivalent modeling discipline, analytics engineers who can think in systems, and real governance pain, then Looker can be fantastic.</p>
<p>Google Cloud’s public package docs confirm:</p>
<ul>
<li><strong>Standard</strong> includes <strong>10 Standard Users</strong>, <strong>2 Developer Users</strong>, <strong>1,000 query-based API calls/month</strong>, and <strong>1,000 admin API calls/month</strong></li>
<li><strong>Enterprise</strong> includes <strong>100,000 query-based API calls/month</strong> and <strong>10,000 admin API calls/month</strong></li>
<li>Google’s pricing page also says each platform comes with <strong>ten standard users and two developer users included</strong></li>
</ul>
<p>That API quota detail matters more than most vendor pages admit, especially if you plan to operationalize external enrichment workflows.</p>
<h3 id="why-most-teams-should-not-touch-it">Why most teams should not touch it</h3>
<p>Looker is not overpriced because it’s bad. It’s overpriced for teams that have not earned the right to need it.</p>
<p>If your current stack is spreadsheets, a half-maintained warehouse, one analyst doing SQL plus stakeholder therapy, and no agreement on metric definitions, then Looker is not your savior.</p>
<blockquote>
<p>“Everything has to be put into a data warehouse first, which Looker directly connects to and queries. You have to know LookML, which is another language, to do the modeling and metric creation. Looker usually is the more expensive option.”</p>
</blockquote>
<blockquote class="reddit-embed-bq" style="height:316px" data-embed-height="316">
<a href="https://www.reddit.com/r/BusinessIntelligence/comments/ujmmdp/what_are_the_main_limitations_of_looker_compared/?ref=nubela.co">What are the main limitations of Looker compared to Tableau / Power BI?</a><br> by
<a href="https://www.reddit.com/user/Mountain-Car-1515/?ref=nubela.co">u/Mountain-Car-1515</a> in
<a href="https://www.reddit.com/r/BusinessIntelligence/?ref=nubela.co">BusinessIntelligence</a>
</blockquote>
<script async="" src="https://embed.reddit.com/widgets.js" charset="UTF-8"></script>

<h3 id="packaging-reality">Packaging reality</h3>
<p>Verified public package details from Google Cloud:</p>
<ul>
<li><strong>Standard</strong>: 10 standard users, 2 developer users, 1,000 query-based API calls/month, 1,000 admin API calls/month, max 50 users</li>
<li><strong>Enterprise</strong>: 10 standard users, 2 developer users, 100,000 query-based API calls/month, 10,000 admin API calls/month, no max users</li>
<li><strong>Embed</strong>: 500,000 query-based API calls/month and 100,000 admin API calls/month</li>
</ul>
<p><img alt="Looker pricing and edition page" src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2026/04/a6a9898a45b4-2.webp" /></p>
<p><em>Google Cloud Looker pricing page, captured from <code>https://cloud.google.com/looker/pricing</code>. No public dollar pricing, but Google does publish edition entitlements, included users, and API quotas.</em></p>
<h2 id="qlik-review">Qlik review</h2>
<p><strong>My score: ~3.9/5</strong></p>
<table>
<thead>
<tr>
<th>Dimension</th>
<th>Rating</th>
</tr>
</thead>
<tbody>
<tr>
<td>Visuals</td>
<td>⭐⭐⭐⭐☆</td>
</tr>
<tr>
<td>Self-service</td>
<td>⭐⭐⭐⭐☆</td>
</tr>
<tr>
<td>Governance</td>
<td>⭐⭐⭐⭐☆</td>
</tr>
<tr>
<td>Scalability</td>
<td>⭐⭐⭐⭐☆</td>
</tr>
<tr>
<td>Pricing</td>
<td>⭐⭐⭐☆☆</td>
</tr>
<tr>
<td>Dev friendliness</td>
<td>⭐⭐⭐⭐☆</td>
</tr>
<tr>
<td>Stability</td>
<td>⭐⭐⭐⭐☆</td>
</tr>
<tr>
<td>Data freshness support</td>
<td>⭐⭐⭐⭐☆</td>
</tr>
<tr>
<td>External intelligence fit</td>
<td>⭐⭐⭐⭐☆</td>
</tr>
<tr>
<td>Average</td>
<td><strong>3.9/5</strong></td>
</tr>
</tbody>
</table>
<h3 id="why-qlik-deserves-more-respect">Why Qlik deserves more respect</h3>
<p>Qlik is the tool buyers forget until a serious BI practitioner reminds them it exists.</p>
<p>Its associative model is still useful. Its backend and data handling get real respect from technical users. And it consistently outperforms its market buzz.</p>
<blockquote>
<p>“As a Tableau Developer for more than 6 years, QlikView impressed me. The amount of control it gives to the creator is next level. The pixel-perfect formatting, the ability to write extensive data manipulation scripts and the associative engine.”</p>
</blockquote>
<blockquote class="reddit-embed-bq" style="height:316px" data-embed-height="316">
<a href="https://www.reddit.com/r/BusinessIntelligence/comments/1czg1qx/which_bi_tools_impressed_you_the_most_excluding/?ref=nubela.co">Which BI tools impressed you the most (excluding usual suspects)?</a><br> by
<a href="https://www.reddit.com/user/theoriginalmantooth/?ref=nubela.co">u/theoriginalmantooth</a> in
<a href="https://www.reddit.com/r/BusinessIntelligence/?ref=nubela.co">BusinessIntelligence</a>
</blockquote>
<script async="" src="https://embed.reddit.com/widgets.js" charset="UTF-8"></script>

<h3 id="why-it-still-loses-deals">Why it still loses deals</h3>
<p>Qlik loses for boring reasons: lower mindshare, fewer default champions, and pricing framed by capacity rather than simple per-seat math.</p>
<h3 id="pricing-reality_2">Pricing reality</h3>
<p>Qlik’s public pricing page is refreshingly explicit:</p>
<ul>
<li><strong>Starter:</strong> $300/month</li>
<li><strong>Standard:</strong> $825/month</li>
<li><strong>Premium:</strong> $2,750/month</li>
<li><strong>Enterprise:</strong> contact sales</li>
</ul>
<p><img alt="Qlik pricing page, primary capture" src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2026/04/44b234821918-1.webp" /></p>
<p><em>Qlik Cloud Analytics pricing page, captured from <code>https://www.qlik.com/us/pricing</code>. Starter, Standard, Premium, then enterprise quote. Nice and blunt.</em></p>
<p><img alt="Qlik pricing page, alternate capture" src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2026/04/e9ad1128f2ac-1.webp" /></p>
<p><em>Second Qlik capture from the same public pricing page. This view makes the capacity framing clearer than most vendor pricing pages do.</em></p>
<h2 id="sigma-review">Sigma review</h2>
<p><strong>My score: ~4.0/5</strong></p>
<table>
<thead>
<tr>
<th>Dimension</th>
<th>Rating</th>
</tr>
</thead>
<tbody>
<tr>
<td>Visuals</td>
<td>⭐⭐⭐☆☆</td>
</tr>
<tr>
<td>Self-service</td>
<td>⭐⭐⭐⭐⭐</td>
</tr>
<tr>
<td>Governance</td>
<td>⭐⭐⭐☆☆</td>
</tr>
<tr>
<td>Scalability</td>
<td>⭐⭐⭐⭐☆</td>
</tr>
<tr>
<td>Pricing</td>
<td>⭐⭐☆☆☆</td>
</tr>
<tr>
<td>Dev friendliness</td>
<td>⭐⭐⭐⭐☆</td>
</tr>
<tr>
<td>Stability</td>
<td>⭐⭐⭐⭐☆</td>
</tr>
<tr>
<td>Data freshness support</td>
<td>⭐⭐⭐⭐☆</td>
</tr>
<tr>
<td>External intelligence fit</td>
<td>⭐⭐⭐⭐⭐</td>
</tr>
<tr>
<td>Average</td>
<td><strong>4.0/5</strong></td>
</tr>
</tbody>
</table>
<h3 id="why-sigma-feels-fresh">Why Sigma feels fresh</h3>
<p>Sigma is one of the few BI tools that immediately makes business users feel less stupid.</p>
<p>The spreadsheet metaphor lowers fear, reduces the training burden, and works especially well for warehouse-native teams.</p>
<blockquote>
<p>“Sigma”</p>
<p>“Sigma is awesome”</p>
</blockquote>
<blockquote class="reddit-embed-bq" style="height:316px" data-embed-height="316">
<a href="https://www.reddit.com/r/BusinessIntelligence/comments/1ou2snl/what_newer_or_lesserknown_bi_tools_have_actually/?ref=nubela.co">What newer or lesser-known BI tools have actually impressed you?</a><br> by
<a href="https://www.reddit.com/user/Kimber976/?ref=nubela.co">u/Kimber976</a> in
<a href="https://www.reddit.com/r/BusinessIntelligence/?ref=nubela.co">BusinessIntelligence</a>
</blockquote>
<script async="" src="https://embed.reddit.com/widgets.js" charset="UTF-8"></script>

<blockquote>
<p>“My job recently did a POC with Sigma. I loved the product. Significantly easier to do complicated calculations compared to Power BI. I prefer the browser based first BI tools.”</p>
</blockquote>
<blockquote class="reddit-embed-bq" style="height:316px" data-embed-height="316">
<a href="https://www.reddit.com/r/BusinessIntelligence/comments/1lk2en4/anyone_with_experience_with_sigma_bi/?ref=nubela.co">Anyone with experience with Sigma BI?</a><br> by
<a href="https://www.reddit.com/user/Ok-Working3200/?ref=nubela.co">u/Ok-Working3200</a> in
<a href="https://www.reddit.com/r/BusinessIntelligence/?ref=nubela.co">BusinessIntelligence</a>
</blockquote>
<script async="" src="https://embed.reddit.com/widgets.js" charset="UTF-8"></script>

<h3 id="the-tradeoff-nobody-mentions">The tradeoff nobody mentions</h3>
<p>Sigma does not rescue bad modeling. It just makes good modeling easier to explore.</p>
<p>Pricing is still custom, which I find annoying, and you still pay downstream warehouse costs. That second part gets ignored in a lot of buyer guides written by people who apparently have never seen a Snowflake bill.</p>
<h2 id="thoughtspot-review">ThoughtSpot review</h2>
<p><strong>My score: ~3.8/5</strong></p>
<table>
<thead>
<tr>
<th>Dimension</th>
<th>Rating</th>
</tr>
</thead>
<tbody>
<tr>
<td>Visuals</td>
<td>⭐⭐⭐☆☆</td>
</tr>
<tr>
<td>Self-service</td>
<td>⭐⭐⭐⭐⭐</td>
</tr>
<tr>
<td>Governance</td>
<td>⭐⭐⭐☆☆</td>
</tr>
<tr>
<td>Scalability</td>
<td>⭐⭐⭐⭐☆</td>
</tr>
<tr>
<td>Pricing</td>
<td>⭐⭐☆☆☆</td>
</tr>
<tr>
<td>Dev friendliness</td>
<td>⭐⭐⭐☆☆</td>
</tr>
<tr>
<td>Stability</td>
<td>⭐⭐⭐⭐☆</td>
</tr>
<tr>
<td>Data freshness support</td>
<td>⭐⭐⭐⭐☆</td>
</tr>
<tr>
<td>External intelligence fit</td>
<td>⭐⭐⭐⭐☆</td>
</tr>
<tr>
<td>Average</td>
<td><strong>3.8/5</strong></td>
</tr>
</tbody>
</table>
<h3 id="why-it-matters">Why it matters</h3>
<p>ThoughtSpot matters because most BI adoption dies from friction, not lack of capability. People want to ask a question and get an answer, not learn some cursed folder taxonomy.</p>
<h3 id="where-it-breaks">Where it breaks</h3>
<p>Natural-language search does not absolve you of data quality. If the source tables are inconsistent, then the search bar just gives people a faster route to confident nonsense.</p>
<p>If search-first analytics matters, it deserves a look. If your source layer is a mess, it deserves a hard pass.</p>
<h2 id="domo-review">Domo review</h2>
<p><strong>My score: ~3.6/5</strong></p>
<table>
<thead>
<tr>
<th>Dimension</th>
<th>Rating</th>
</tr>
</thead>
<tbody>
<tr>
<td>Visuals</td>
<td>⭐⭐⭐☆☆</td>
</tr>
<tr>
<td>Self-service</td>
<td>⭐⭐⭐⭐☆</td>
</tr>
<tr>
<td>Governance</td>
<td>⭐⭐⭐☆☆</td>
</tr>
<tr>
<td>Scalability</td>
<td>⭐⭐⭐⭐☆</td>
</tr>
<tr>
<td>Pricing</td>
<td>⭐⭐☆☆☆</td>
</tr>
<tr>
<td>Dev friendliness</td>
<td>⭐⭐⭐☆☆</td>
</tr>
<tr>
<td>Stability</td>
<td>⭐⭐⭐⭐☆</td>
</tr>
<tr>
<td>Data freshness support</td>
<td>⭐⭐⭐⭐☆</td>
</tr>
<tr>
<td>External intelligence fit</td>
<td>⭐⭐⭐⭐☆</td>
</tr>
<tr>
<td>Average</td>
<td><strong>3.6/5</strong></td>
</tr>
</tbody>
</table>
<h3 id="why-people-buy-it">Why people buy it</h3>
<p>Domo gets bought because speed is intoxicating. It has a lot of connectors, it feels packaged, and it can get dashboards in front of execs fast.</p>
<blockquote>
<p>“Dashboards have been a lot smoother lately with tools I've tried and Domo in particular makes connecting different data sources pretty easy.”</p>
</blockquote>
<blockquote class="reddit-embed-bq" style="height:316px" data-embed-height="316">
<a href="https://www.reddit.com/r/BusinessIntelligence/comments/1ou2snl/what_newer_or_lesserknown_bi_tools_have_actually/?ref=nubela.co">What newer or lesser-known BI tools have actually impressed you?</a><br> by
<a href="https://www.reddit.com/user/Kimber976/?ref=nubela.co">u/Kimber976</a> in
<a href="https://www.reddit.com/r/BusinessIntelligence/?ref=nubela.co">BusinessIntelligence</a>
</blockquote>
<script async="" src="https://embed.reddit.com/widgets.js" charset="UTF-8"></script>

<blockquote>
<p>“In any BI tool, you’ll need to ensure your data is clean, integrated, and curated... Domo has one-click integrations with most CRMs, GA4 and data warehouses like Snowflake. So if you want fastest, find the one with the integrations you need.”</p>
</blockquote>
<blockquote class="reddit-embed-bq" style="height:316px" data-embed-height="316">
<a href="https://www.reddit.com/r/BusinessIntelligence/comments/1ox327b/which_analytics_platform_is_the_fastest_setup_for/?ref=nubela.co">Which analytics platform is the fastest setup for a non-technical team?</a><br> by
<a href="https://www.reddit.com/user/Appropriateman1/?ref=nubela.co">u/Appropriateman1</a> in
<a href="https://www.reddit.com/r/BusinessIntelligence/?ref=nubela.co">BusinessIntelligence</a>
</blockquote>
<script async="" src="https://embed.reddit.com/widgets.js" charset="UTF-8"></script>

<h3 id="why-im-cautious">Why I’m cautious</h3>
<p>I get wary when speed is the primary buying argument. Domo often gets chosen by teams that want results before they have decided what the source of truth is, how metrics are defined, and who actually governs shared data.</p>
<p>That is a good way to impress the board in month one and hate yourself in month nine.</p>
<h2 id="sisense-review">Sisense review</h2>
<p><strong>My score: ~3.6/5</strong></p>
<table>
<thead>
<tr>
<th>Dimension</th>
<th>Rating</th>
</tr>
</thead>
<tbody>
<tr>
<td>Visuals</td>
<td>⭐⭐⭐☆☆</td>
</tr>
<tr>
<td>Self-service</td>
<td>⭐⭐⭐☆☆</td>
</tr>
<tr>
<td>Governance</td>
<td>⭐⭐⭐☆☆</td>
</tr>
<tr>
<td>Scalability</td>
<td>⭐⭐⭐⭐☆</td>
</tr>
<tr>
<td>Pricing</td>
<td>⭐⭐☆☆☆</td>
</tr>
<tr>
<td>Dev friendliness</td>
<td>⭐⭐⭐⭐☆</td>
</tr>
<tr>
<td>Stability</td>
<td>⭐⭐⭐⭐☆</td>
</tr>
<tr>
<td>Data freshness support</td>
<td>⭐⭐⭐⭐☆</td>
</tr>
<tr>
<td>External intelligence fit</td>
<td>⭐⭐⭐⭐☆</td>
</tr>
<tr>
<td>Average</td>
<td><strong>3.6/5</strong></td>
</tr>
</tbody>
</table>
<h3 id="where-sisense-is-strong">Where Sisense is strong</h3>
<p>Sisense still matters because embedded analytics is a different buying motion. If you need customer-facing dashboards or product analytics inside software, Sisense deserves a look.</p>
<h3 id="where-it-gets-tricky">Where it gets tricky</h3>
<p>If you are not embedding analytics into a product, I usually find stronger defaults elsewhere. Sisense is more relevant when the BI output is part of your product, not just part of your internal reporting stack.</p>
<h2 id="metabase-review">Metabase review</h2>
<p><strong>My score: ~3.4/5</strong></p>
<table>
<thead>
<tr>
<th>Dimension</th>
<th>Rating</th>
</tr>
</thead>
<tbody>
<tr>
<td>Visuals</td>
<td>⭐⭐☆☆☆</td>
</tr>
<tr>
<td>Self-service</td>
<td>⭐⭐⭐⭐☆</td>
</tr>
<tr>
<td>Governance</td>
<td>⭐⭐☆☆☆</td>
</tr>
<tr>
<td>Scalability</td>
<td>⭐⭐⭐☆☆</td>
</tr>
<tr>
<td>Pricing</td>
<td>⭐⭐⭐⭐⭐</td>
</tr>
<tr>
<td>Dev friendliness</td>
<td>⭐⭐⭐⭐☆</td>
</tr>
<tr>
<td>Stability</td>
<td>⭐⭐⭐☆☆</td>
</tr>
<tr>
<td>Data freshness support</td>
<td>⭐⭐⭐☆☆</td>
</tr>
<tr>
<td>External intelligence fit</td>
<td>⭐⭐⭐⭐☆</td>
</tr>
<tr>
<td>Average</td>
<td><strong>3.4/5</strong></td>
</tr>
</tbody>
</table>
<h3 id="why-i-like-it">Why I like it</h3>
<p>Metabase has a quality a lot of enterprise BI tools lost years ago: restraint.</p>
<p>It is simple, cheap, useful, and often more than enough for internal dashboards. Metabase’s pricing page makes the split pretty clear:</p>
<ul>
<li><strong>Open Source:</strong> free</li>
<li><strong>Starter:</strong> $100/month plus $5 per user monthly, or $1080/year plus $65 per user yearly</li>
<li><strong>Pro:</strong> $575/month plus $12 per user monthly, or $6210/year plus $130 per user yearly</li>
<li><strong>Enterprise:</strong> custom pricing, starts at $20k/year</li>
</ul>
<blockquote>
<p>“Metabase is open source and great to use.”</p>
</blockquote>
<blockquote class="reddit-embed-bq" style="height:316px" data-embed-height="316">
<a href="https://www.reddit.com/r/dataengineering/comments/1jp7anp/what_is_the_best_free_bi_dashboarding_tool/?ref=nubela.co">What is the best free BI/dashboarding tool?</a><br> by
<a href="https://www.reddit.com/user/financialthrowaw2020/?ref=nubela.co">u/financialthrowaw2020</a> in
<a href="https://www.reddit.com/r/dataengineering/?ref=nubela.co">dataengineering</a>
</blockquote>
<script async="" src="https://embed.reddit.com/widgets.js" charset="UTF-8"></script>

<h3 id="where-it-stops-being-enough">Where it stops being enough</h3>
<p>Metabase starts to strain when you need heavier enterprise governance, broader semantic control, polished executive presentation, or advanced distribution workflows.</p>
<p><img alt="Metabase pricing page" src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2026/04/e780975d5126-2.webp" /></p>
<p><em>Metabase pricing page, captured from <code>https://www.metabase.com/pricing/</code>. Public pricing is refreshingly explicit, including the point where Enterprise starts at $20k/year.</em></p>
<h2 id="zoho-analytics-review">Zoho Analytics review</h2>
<p><strong>My score: ~3.6/5</strong></p>
<table>
<thead>
<tr>
<th>Dimension</th>
<th>Rating</th>
</tr>
</thead>
<tbody>
<tr>
<td>Visuals</td>
<td>⭐⭐⭐☆☆</td>
</tr>
<tr>
<td>Self-service</td>
<td>⭐⭐⭐⭐☆</td>
</tr>
<tr>
<td>Governance</td>
<td>⭐⭐⭐☆☆</td>
</tr>
<tr>
<td>Scalability</td>
<td>⭐⭐⭐☆☆</td>
</tr>
<tr>
<td>Pricing</td>
<td>⭐⭐⭐⭐⭐</td>
</tr>
<tr>
<td>Dev friendliness</td>
<td>⭐⭐⭐☆☆</td>
</tr>
<tr>
<td>Stability</td>
<td>⭐⭐⭐☆☆</td>
</tr>
<tr>
<td>Data freshness support</td>
<td>⭐⭐⭐☆☆</td>
</tr>
<tr>
<td>External intelligence fit</td>
<td>⭐⭐⭐☆☆</td>
</tr>
<tr>
<td>Average</td>
<td><strong>3.6/5</strong></td>
</tr>
</tbody>
</table>
<h3 id="why-it-makes-sense">Why it makes sense</h3>
<p>Zoho Analytics gets ignored because the BI conversation is weirdly prestige-driven. But plenty of SMBs do not need prestige. They need a tool that works and doesn’t make the CFO swear.</p>
<p>From the public pricing page I captured, Zoho Analytics lists annual cloud pricing in SGD as:</p>
<ul>
<li><strong>Basic:</strong> S$32/month billed annually</li>
<li><strong>Standard:</strong> S$64/month billed annually</li>
<li><strong>Premium:</strong> S$160/month billed annually</li>
<li><strong>Enterprise:</strong> S$632/month billed annually</li>
</ul>
<p>The page also shows row and user limits, which is exactly the kind of useful detail a buyer needs and most “best BI tool” articles skip.</p>
<h3 id="why-it-is-not-the-answer-for-everyone">Why it is not the answer for everyone</h3>
<p>At the top end, Zoho Analytics is not where I’d go for elite governance, scale, or modern warehouse-native sophistication. But for SMBs, it’s a sane option.</p>
<p><img alt="Zoho Analytics pricing page" src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2026/04/364651ac77db-2.webp" /></p>
<p><em>Zoho Analytics pricing page, captured from <code>https://www.zoho.com/analytics/pricing.html</code>. Screenshot shows public annual cloud pricing and plan limits.</em></p>
<h2 id="oracle-and-cognos-quick-take">Oracle and Cognos quick take</h2>
<h3 id="oracle-analytics">Oracle Analytics</h3>
<p>Still relevant in Oracle-heavy environments. Usually not what I’d call pleasant.</p>
<p>If you are already deep in Oracle procurement, identity, and data infrastructure, it can be rational. Fresh greenfield buyers should be honest with themselves about how much vendor-estate gravity is doing the work here.</p>
<h3 id="ibm-cognos">IBM Cognos</h3>
<p>Still alive. Still more likely to be inherited than loved.</p>
<p>Modern mid-market teams should not rush toward Cognos unless there is an estate reason. Most fresh evaluations have friendlier options.</p>
<h2 id="sap-and-microstrategy-quick-take">SAP and MicroStrategy quick take</h2>
<h3 id="sap-businessobjects">SAP BusinessObjects</h3>
<p>Still around in SAP-heavy shops. Often more “we already have it” than “we chose it fresh.”</p>
<h3 id="microstrategy-strategy">MicroStrategy / Strategy</h3>
<p>Powerful, enterprise-y, and often more than smaller teams need.</p>
<p>And here’s a useful contrast from X, even though it comes from the vendor side. The complaint it names is real: fragmented BI stacks and inconsistent definitions are usually the actual problem, not whether the home page says “AI” enough times.</p>
<blockquote class="twitter-tweet"><p lang="en" dir="ltr">Most organizations are still dealing with fragmented BI stacks, inconsistent definitions, and rising infrastructure costs. The result is slower insights, duplicated work, and missed opportunities.

Strategy’s semantic layer, Mosaic, changes that by standardizing metrics, reducing tool sprawl, and creating a governed foundation for analytics and AI.</p>&mdash; Strategy (@MicroStrategy) <a href="https://x.com/MicroStrategy/status/2041848811740356629?ref=nubela.co">April 8, 2026</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

<p>Serious product for serious enterprise estates. Not where I’d start most mid-market CEOs.</p>
<h2 id="bi-data-vendors-worth-adding">BI data vendors worth adding</h2>
<p>This is where most <strong>business intelligence platform</strong> buyers screw it up. They buy a dashboard tool and think they bought business intelligence.</p>
<p>No. They bought a way to analyze data they already have.</p>
<h3 id="why-bi-buyers-get-this-wrong">Why BI buyers get this wrong</h3>
<p>A BI platform tells you what happened <strong>inside</strong> your company. But a CEO often needs answers about what changed <strong>outside</strong> the company:</p>
<ul>
<li>competitor launches</li>
<li>account expansion signals</li>
<li>customer overlap with rivals</li>
<li>org changes</li>
<li>pricing moves</li>
<li>new hires</li>
<li>funding</li>
<li>intent and buying context</li>
</ul>
<p>Your BI layer does not create that data. A data vendor does.</p>
<p>Without an external layer, many BI rollouts are just internal reporting cosplay.</p>
<h3 id="the-vendor-categories">The vendor categories</h3>
<p>I’d break the market into buckets like this:</p>
<ul>
<li><strong>Company intelligence:</strong> NinjaPear, ZoomInfo, Crunchbase</li>
<li><strong>Sales data / prospecting:</strong> Apollo, Cognism, Lead411</li>
<li><strong>ABM / intent:</strong> 6sense, Demandbase</li>
<li><strong>Data plumbing / orchestration:</strong> Clay</li>
<li><strong>Firmographic / technographic context:</strong> BuiltWith, Similarweb</li>
</ul>
<h3 id="quick-takes-by-vendor">Quick takes by vendor</h3>
<h4 id="ninjapear">NinjaPear</h4>
<p><a href="https://nubela.co/?ref=nubela.co">NinjaPear</a> is the one I’d look at when the job is <strong>fresh company relationship intelligence plus change monitoring</strong>, not just contact lists.</p>
<p>The product is API-first and built around turning a company domain into things like customers, investors, partners, competitors, employee profiles, company details, employee count, and company updates.</p>
<p>The docs show official Python and JavaScript libraries, bearer-token auth, a backward-compatibility guarantee, a rate limit of <strong>300 requests/minute</strong> for paid accounts, and 30 to 60 second response expectations on API endpoints. That makes it unusually workable as a BI data layer, not just a browser-only research tool.</p>
<h4 id="zoominfo">ZoomInfo</h4>
<p>Scale and brand gravity. Often expensive. Worth it if you need classic enterprise sales intelligence.</p>
<p>My issue is simple: too many teams buy the whole cathedral and only use one chapel.</p>
<h4 id="apollo">Apollo</h4>
<p>Cheaper and more accessible than ZoomInfo. Popular with startups. Good prospecting tool. Not a full BI layer by itself.</p>
<h4 id="crunchbase">Crunchbase</h4>
<p>Good for funding and investor context. Helpful, not sufficient.</p>
<h4 id="6sense-demandbase">6sense / Demandbase</h4>
<p>Useful when you want intent plus ABM workflows, not just static company records.</p>
<h4 id="clay">Clay</h4>
<p>Great as an orchestration layer. Not your source of truth by itself.</p>
<h2 id="how-ninjapear-fits-your-bi-stack">How NinjaPear fits your BI stack</h2>
<h3 id="the-simple-version">The simple version</h3>
<p>A BI platform tells you what happened inside your company. <a href="https://nubela.co/?ref=nubela.co">NinjaPear</a> helps tell you what changed outside it.</p>
<p>That’s the real gap.</p>
<h3 id="what-data-from-ninjapear-can-feed-bi-dashboards">What data from NinjaPear can feed BI dashboards</h3>
<p>From NinjaPear’s homepage, docs, and product pages, the useful BI inputs are obvious:</p>
<ul>
<li>customer listing data for account mapping and competitor-customer overlap dashboards</li>
<li>competitor listing data for market map dashboards</li>
<li>company updates data for change-monitoring dashboards</li>
<li>employee / person profile data for org-change tracking and account intelligence</li>
<li>company details and employee count for enrichment and segmentation</li>
</ul>
<p>The docs also surface details BI teams actually care about:</p>
<ul>
<li>official JS and Python libraries</li>
<li>bearer-token auth</li>
<li>backward compatibility guarantees</li>
<li>rate limits up to <strong>300 requests/minute</strong></li>
<li>endpoint response expectations of <strong>30 to 60 seconds</strong></li>
<li>explicit credit costs on endpoints like company details, employee count, company updates, and customer listing</li>
</ul>
<p>That last one matters. I like knowing what an external data pull will cost before I wire it into a dashboard refresh workflow.</p>
<h3 id="example-workflows">Example workflows</h3>
<h4 id="power-bi-ninjapear">Power BI + NinjaPear</h4>
<p>Use NinjaPear API outputs as a scheduled data source into Power BI for competitor and customer monitoring dashboards.</p>
<p>Build things like:</p>
<ul>
<li>competitor-customer overlap dashboards</li>
<li>account expansion watchlists</li>
<li>company-update alert boards</li>
<li>territory prioritization by external signals</li>
</ul>
<h4 id="tableau-ninjapear">Tableau + NinjaPear</h4>
<p>Use company relationship data to build overlap maps and segment heatmaps.</p>
<p>Tableau’s visual polish matters when the goal is to present market structure cleanly to execs or the board.</p>
<h4 id="looker-ninjapear">Looker + NinjaPear</h4>
<p>Model external company intelligence in the warehouse, then layer governed views across customer overlap, competitor movement, and headcount changes.</p>
<p>This pairing makes the most sense when you already have a strong warehouse-first operating model.</p>
<h4 id="sigma-ninjapear">Sigma + NinjaPear</h4>
<p>Let RevOps or finance users explore relationship data in a spreadsheet-like interface.</p>
<p>That is a very nice combo for teams who want external company context without turning every question into a Jira ticket.</p>
<h3 id="why-this-section-matters">Why this section matters</h3>
<p>This is not a forced plug. It solves a real gap. Most BI tools are strong at internal reporting and weak at <strong>market intelligence ingestion</strong> unless you add an outside data layer.</p>
<pre><code class="language-text">NinjaPear API
  -&gt; warehouse or connector layer
  -&gt; modeled tables / semantic layer
  -&gt; Power BI / Tableau / Looker / Sigma dashboard
</code></pre>
<p>Example fields worth modeling:</p>
<ul>
<li><code>customers</code></li>
<li><code>competitors</code></li>
<li><code>employee_count</code></li>
<li><code>company_updates</code></li>
<li><code>person_profile</code></li>
</ul>
<p><img alt="NinjaPear homepage" src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2026/04/1762f6354a0a-1.webp" /></p>
<p><em>NinjaPear homepage, captured from <code>https://nubela.co/</code>. This is the cleanest quick visual I found of the product’s customers, competitors, and employees data model.</em></p>
<p><img alt="NinjaPear Company Monitor" src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2026/04/8d1a11847199-1.webp" /></p>
<p><em>NinjaPear Company Monitor page, captured from <code>https://nubela.co/company-monitor</code>. This matters because outside-world business intelligence is not a slogan, it is an actual monitored feed of company changes.</em></p>
<p><img alt="NinjaPear Employee API" src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2026/04/042b0184a03b-1.webp" /></p>
<p><em>NinjaPear Employee API page, captured from <code>https://nubela.co/employee-api</code>. Publicly sourced person-profile data is useful when you want BI dashboards to include org changes, exec mapping, and account intelligence.</em></p>
<h2 id="side-by-side-scorecard">Side-by-side scorecard</h2>
<h3 id="bi-platform-comparison-table">BI platform comparison table</h3>
<table>
<thead>
<tr>
<th>Tool</th>
<th>Best for</th>
<th>Worst for</th>
<th>Visuals</th>
<th>Self-service</th>
<th>Governance</th>
<th>Scale</th>
<th>Pricing</th>
<th>Dev friendliness</th>
<th>Stability</th>
<th>External intelligence fit</th>
<th>Average score</th>
</tr>
</thead>
<tbody>
<tr>
<td>Power BI</td>
<td>Default enterprise buy</td>
<td>Teams that let DAX sprawl unchecked</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐⭐</td>
<td>⭐⭐⭐☆☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐☆</td>
<td><strong>3.9/5</strong></td>
</tr>
<tr>
<td>Tableau</td>
<td>Visual analysis</td>
<td>Budget-sensitive dashboard consumption</td>
<td>⭐⭐⭐⭐⭐</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐☆☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐☆☆☆</td>
<td>⭐⭐⭐☆☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐☆</td>
<td><strong>3.7/5</strong></td>
</tr>
<tr>
<td>Looker</td>
<td>Governed metrics</td>
<td>Spreadsheet-era orgs</td>
<td>⭐⭐⭐☆☆</td>
<td>⭐⭐⭐☆☆</td>
<td>⭐⭐⭐⭐⭐</td>
<td>⭐⭐⭐⭐⭐</td>
<td>⭐⭐☆☆☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐⭐</td>
<td><strong>4.1/5 right fit</strong></td>
</tr>
<tr>
<td>Qlik</td>
<td>Underrated enterprise BI</td>
<td>Simple seat-based buyers</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐☆☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐☆</td>
<td><strong>3.9/5</strong></td>
</tr>
<tr>
<td>Sigma</td>
<td>Warehouse-native self-service</td>
<td>Teams with bad models</td>
<td>⭐⭐⭐☆☆</td>
<td>⭐⭐⭐⭐⭐</td>
<td>⭐⭐⭐☆☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐☆☆☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐⭐</td>
<td><strong>4.0/5</strong></td>
</tr>
<tr>
<td>ThoughtSpot</td>
<td>Search-first adoption</td>
<td>Weakly governed source data</td>
<td>⭐⭐⭐☆☆</td>
<td>⭐⭐⭐⭐⭐</td>
<td>⭐⭐⭐☆☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐☆☆☆</td>
<td>⭐⭐⭐☆☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐☆</td>
<td><strong>3.8/5</strong></td>
</tr>
<tr>
<td>Domo</td>
<td>Fast executive rollout</td>
<td>Long-term cost control</td>
<td>⭐⭐⭐☆☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐☆☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐☆☆☆</td>
<td>⭐⭐⭐☆☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐☆</td>
<td><strong>3.6/5</strong></td>
</tr>
<tr>
<td>Sisense</td>
<td>Embedded analytics</td>
<td>Generic internal BI rollouts</td>
<td>⭐⭐⭐☆☆</td>
<td>⭐⭐⭐☆☆</td>
<td>⭐⭐⭐☆☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐☆☆☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐☆</td>
<td><strong>3.6/5</strong></td>
</tr>
<tr>
<td>Metabase</td>
<td>Cheap/open source dashboards</td>
<td>Heavy enterprise governance</td>
<td>⭐⭐☆☆☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐☆☆☆</td>
<td>⭐⭐⭐☆☆</td>
<td>⭐⭐⭐⭐⭐</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐☆☆</td>
<td>⭐⭐⭐⭐☆</td>
<td><strong>3.4/5</strong></td>
</tr>
<tr>
<td>Zoho Analytics</td>
<td>SMB value</td>
<td>Top-end enterprise scale</td>
<td>⭐⭐⭐☆☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐☆☆</td>
<td>⭐⭐⭐☆☆</td>
<td>⭐⭐⭐⭐⭐</td>
<td>⭐⭐⭐☆☆</td>
<td>⭐⭐⭐☆☆</td>
<td>⭐⭐⭐☆☆</td>
<td><strong>3.6/5</strong></td>
</tr>
</tbody>
</table>
<h3 id="data-vendor-comparison-table">Data vendor comparison table</h3>
<table>
<thead>
<tr>
<th>Vendor</th>
<th>Best for</th>
<th>Data freshness</th>
<th>Data richness</th>
<th>Scalability</th>
<th>Pricing sanity</th>
<th>Dev friendliness</th>
<th>Stability</th>
<th>Average score</th>
</tr>
</thead>
<tbody>
<tr>
<td>NinjaPear</td>
<td>External company intelligence for BI</td>
<td>⭐⭐⭐⭐⭐</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐⭐</td>
<td>⭐⭐⭐⭐☆</td>
<td><strong>4.5/5</strong></td>
</tr>
<tr>
<td>ZoomInfo</td>
<td>Enterprise sales intelligence</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐⭐</td>
<td>⭐⭐⭐⭐⭐</td>
<td>⭐⭐☆☆☆</td>
<td>⭐⭐⭐☆☆</td>
<td>⭐⭐⭐⭐☆</td>
<td><strong>3.8/5</strong></td>
</tr>
<tr>
<td>Apollo</td>
<td>Startup-friendly prospecting</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐☆☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐☆☆</td>
<td>⭐⭐⭐⭐☆</td>
<td><strong>3.7/5</strong></td>
</tr>
<tr>
<td>Crunchbase</td>
<td>Funding and investor context</td>
<td>⭐⭐⭐☆☆</td>
<td>⭐⭐⭐☆☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐☆☆</td>
<td>⭐⭐⭐⭐☆</td>
<td><strong>3.5/5</strong></td>
</tr>
<tr>
<td>6sense</td>
<td>Intent + ABM orchestration</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐⭐</td>
<td>⭐⭐☆☆☆</td>
<td>⭐⭐⭐☆☆</td>
<td>⭐⭐⭐⭐☆</td>
<td><strong>3.7/5</strong></td>
</tr>
<tr>
<td>Demandbase</td>
<td>ABM + account signals</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐⭐</td>
<td>⭐⭐☆☆☆</td>
<td>⭐⭐⭐☆☆</td>
<td>⭐⭐⭐⭐☆</td>
<td><strong>3.7/5</strong></td>
</tr>
<tr>
<td>Clay</td>
<td>Enrichment orchestration</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐☆☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐☆☆</td>
<td>⭐⭐⭐⭐⭐</td>
<td>⭐⭐⭐⭐☆</td>
<td><strong>3.8/5</strong></td>
</tr>
<tr>
<td>BuiltWith</td>
<td>Technographics</td>
<td>⭐⭐⭐☆☆</td>
<td>⭐⭐⭐☆☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐☆</td>
<td><strong>3.7/5</strong></td>
</tr>
</tbody>
</table>
<h2 id="costs-nobody-warns-you-about">Costs nobody warns you about</h2>
<h3 id="migration-rebuild-costs">Migration rebuild costs</h3>
<p>Switching BI tools is often a rebuild, not a migration.</p>
<p>This Reddit line about moving from Tableau to Power BI made me laugh because it’s painfully true:</p>
<blockquote>
<p>“Power BI and then just blame Microsoft for all the problems that come from ‘migrating’ because you get to rebuild everything.”</p>
</blockquote>
<blockquote class="reddit-embed-bq" style="height:316px" data-embed-height="316">
<a href="https://www.reddit.com/r/BusinessIntelligence/comments/1psxtxv/shifting_from_tableau_to_either_looker_or_powerbi/?ref=nubela.co">Shifting from Tableau to either Looker or PowerBI</a><br> by
<a href="https://www.reddit.com/user/staatsclaas/?ref=nubela.co">u/staatsclaas</a> in
<a href="https://www.reddit.com/r/BusinessIntelligence/?ref=nubela.co">BusinessIntelligence</a>
</blockquote>
<script async="" src="https://embed.reddit.com/widgets.js" charset="UTF-8"></script>

<p>Budget for rebuild, retraining, validation, and political fallout. Not just licenses.</p>
<h3 id="semantic-layer-upkeep">Semantic layer upkeep</h3>
<p>If nobody owns metric definitions, your BI problem is not a dashboard problem. It’s a trust problem.</p>
<p>This is why Looker can be worth it for the right org, and why Power BI can quietly turn into definition chaos for the wrong one.</p>
<h3 id="dashboard-sprawl">Dashboard sprawl</h3>
<p>Everyone builds. Nobody deletes. Then nobody trusts anything.</p>
<p>I’ve seen companies with 400+ dashboards and no clear answer to which 20 actually drive decisions. That isn’t scale. That’s hoarding.</p>
<h3 id="warehouse-spillover">Warehouse spillover</h3>
<p>A cheap BI tool on top of expensive warehouse queries is not cheap.</p>
<p>Sigma and Looker buyers need to hear this especially clearly. Warehouse-native is great until nobody is watching query cost, caching behavior, or model efficiency.</p>
<h3 id="training-and-adoption">Training and adoption</h3>
<p>The best tool on paper dies if nobody uses it.</p>
<p>ThoughtSpot can help adoption. Sigma can help adoption. Tableau can hurt adoption if the org mainly needs KPI consumption, not exploration. Power BI often wins on familiarity. Context matters more than ideology.</p>
<h3 id="procurement-lock-in">Procurement lock-in</h3>
<p>Enterprise BI contracts love annual commitments, vague overages, and packaging complexity that gets worse as deployments grow.</p>
<p>This is why I prefer public pricing where it exists. At least it gives you an anchor before the weirdness starts.</p>
<h2 id="what-id-buy-by-company-type">What I’d buy by company type</h2>
<h3 id="tiny-startup">Tiny startup</h3>
<p>Usually, do <strong>not</strong> buy an enterprise BI platform just because a demo made you feel underdressed.</p>
<ul>
<li><strong>Best default:</strong> Metabase or Power BI</li>
<li><strong>If warehouse-native:</strong> Sigma</li>
<li><strong>If you mostly need outside market data:</strong> pair a lightweight BI layer with NinjaPear</li>
</ul>
<p>A 12-person startup buying Looker to feel legit is one of the funniest bad decisions in software.</p>
<h3 id="10-to-50-person-saas-team">10 to 50 person SaaS team</h3>
<ul>
<li><strong>Best default:</strong> Power BI</li>
<li><strong>Best modern warehouse option:</strong> Sigma</li>
<li><strong>Best if visual storytelling matters:</strong> Tableau</li>
<li><strong>Add NinjaPear if sales or strategy needs competitor/customer intelligence</strong></li>
</ul>
<h3 id="mid-market-ops-team">Mid-market ops team</h3>
<ul>
<li><strong>Default:</strong> Power BI</li>
<li><strong>Smarter shortlist:</strong> Power BI, Qlik, Sigma</li>
<li><strong>If governance pain is real:</strong> Looker</li>
<li><strong>If embedded or external dashboards matter:</strong> Sisense or Domo</li>
</ul>
<h3 id="enterprise-with-governance-pain">Enterprise with governance pain</h3>
<ul>
<li><strong>Looker or Qlik deserve a serious look</strong></li>
<li><strong>Power BI works if the org can actually govern it</strong></li>
<li><strong>Tableau is not a governance shortcut</strong></li>
<li><strong>Oracle, Cognos, and SAP stay relevant if you are already deep in those estates</strong></li>
<li><strong>Layer NinjaPear in when executive dashboards need outside-world company intelligence</strong></li>
</ul>
<h2 id="final-verdict">Final verdict</h2>
<p>Here’s my final answer if you’re buying a <strong>business intelligence platform</strong> in 2026.</p>
<ul>
<li><strong>Best default buy:</strong> Power BI</li>
<li><strong>Best visuals:</strong> Tableau</li>
<li><strong>Best for governed metrics:</strong> Looker</li>
<li><strong>Most underrated:</strong> Qlik</li>
<li><strong>Best modern UX:</strong> Sigma</li>
<li><strong>Best for search-first analytics:</strong> ThoughtSpot</li>
<li><strong>Best fast-start executive dashboard option:</strong> Domo</li>
<li><strong>Best open-source budget choice:</strong> Metabase</li>
<li><strong>Best SMB value choice:</strong> Zoho Analytics</li>
<li><strong>Best external company intelligence layer for BI dashboards:</strong> NinjaPear</li>
</ul>
<p>The best business intelligence platform is not the one with the slickest demo. It’s the one your team can still trust, afford, and operate 18 months later.</p>
<p>And if you want actual business intelligence instead of internal reporting cosplay, feed it better outside-world data.</p>
<p>If you’re in shortlist mode right now, do one practical thing next: run the calculator above, pick <strong>three</strong> tools max, and test them against your real seat mix, real data maturity, and one external-intelligence use case. If that outside-world piece matters, start with NinjaPear as the data layer and see what your dashboards can finally tell you that they couldn’t before.</p>
<!--kg-card-end: html-->
 ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ How to Lookup a Person in 2026: The Fastest Way to Find the Right Record Without Paying for Junk ]]></title>
        <description><![CDATA[ Person Lookup Pathfinder
Most lookup person advice is useless because it pretends every search starts the same way. It doesn&#39;t. Pick what you have, what you&#39;re trying to do, and how badly a mistake would hurt.








If you want the blunt answer, here it is: TruePeopleSearch ]]></description>
        <link>https://nubela.co/blog/lookup-person/</link>
        <guid isPermaLink="false">69d8f53c1ff0fe00015814bb</guid>
        <category><![CDATA[ lookup person ]]></category>
        <dc:creator><![CDATA[ Alex Meyer ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2026/04/alex.png"/>
        <pubDate>Fri, 10 Apr 2026 21:03:56 +0800</pubDate>
        <media:content url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2026/04/cover_5.webp" medium="image"/>
        <content:encoded><![CDATA[ 
<!--kg-card-begin: html-->
<div style="border:1px solid #e5e7eb;border-radius:16px;padding:18px;margin:18px 0 24px 0;background:linear-gradient(180deg,#ffffff 0%,#f8fafc 100%);font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;">
  <div style="font-size:24px;font-weight:800;color:#111827;margin-bottom:8px;">Person Lookup Pathfinder</div>
  <div style="font-size:14px;color:#4b5563;margin-bottom:16px;">Most lookup person advice is useless because it pretends every search starts the same way. It doesn't. Pick what you have, what you're trying to do, and how badly a mistake would hurt.</div>
  <div id="plp-app"></div>
  <script>
    (function(){
      const app = document.getElementById('plp-app');
      const state = {input:null, goal:null, stakes:null};
      const inputs = ['Name','Phone','Email','Username','Photo','Address','Work email','Name + employer','Role + company'];
      const goals = ['Reconnect','Identify caller','Avoid a scam','Find your own exposed data','Lookup a professional','Run a serious compliant check'];
      const stakes = ['Casual','Money involved','Safety involved','Hiring-housing-credit-insurance'];
      const rules = {
        'Name|Reconnect|Casual': {tool:'TruePeopleSearch', cost:'Free', confidence:58, steps:['Search name + city/state first','Narrow by age, relatives, or old address','Confirm on social profile or county/property record'], why:'Fast free-first narrowing when all you have is basic consumer info.', wrong:'Common-name collisions and stale addresses waste time fast.', verify:'Match at least 2 anchors: city, age band, relative, employer.', query:'"full name" city state'},
        'Phone|Identify caller|Casual': {tool:'TruePeopleSearch', cost:'Free', confidence:71, steps:['Run reverse phone lookup','Check whether the number is wireless/landline if available','Verify with web search or voicemail name'], why:'Phone is often cleaner than name-only lookup.', wrong:'Recycled numbers can point to the last owner, not the current one.', verify:'Cross-check with recent web traces and messaging app profile.', query:'"5551234567" OR "(555) 123-4567"'},
        'Phone|Avoid a scam|Money involved': {tool:'Social Catfish', cost:'Likely paid', confidence:74, steps:['Run phone lookup','Pivot to linked name, email, username, and photo','Check profile consistency across platforms'], why:'Best when lookup person really means "is this person real?"', wrong:'A linked record is not proof the caller is the same human.', verify:'Match voice, timeline, geography, and platform reuse.', query:'"5551234567" scam OR fraud'},
        'Email|Avoid a scam|Money involved': {tool:'Social Catfish', cost:'Likely paid', confidence:76, steps:['Search the email directly','Pivot into usernames and public profiles','Compare profile age, photos, and claimed location'], why:'Email is one of the strongest scam-check inputs.', wrong:'Burner emails and catch-all domains muddy the trail.', verify:'Look for cross-platform reuse and timeline consistency.', query:'"name@example.com"'},
        'Email|Lookup a professional|Casual': {tool:'NinjaPear', cost:'Likely paid', confidence:85, steps:['If it is a work email, use Person Profile','Review work history, education, and public social presence','Confirm against company site or press mention'], why:'Work email is the cleanest professional lookup input.', wrong:'This is for professional context, not consumer background snooping.', verify:'Match returned employer, role, and public web references.', query:'site:company.com "first last"'},
        'Work email|Lookup a professional|Money involved': {tool:'NinjaPear', cost:'Likely paid', confidence:96, steps:['Query the [NinjaPear Employee API](https://nubela.co/employee-api)','Review structured work history and education','Confirm with company website or public bio'], why:'NinjaPear documents work email as its best-accuracy path.', wrong:'Do not use this as a substitute for a compliant employment screen.', verify:'Check employer domain, tenure, and at least one public source.', query:'site:company.com "first last" OR site:x.com "first last"'},
        'Name + employer|Lookup a professional|Money involved': {tool:'NinjaPear', cost:'Likely paid', confidence:88, steps:['Use name + employer website','Review returned work history and education','Resolve ambiguities with city, role, or public company page'], why:'Strong when you know the company context but not the work email.', wrong:'Common names at huge companies can miss or collide.', verify:'Match title, employer, and date ranges.', query:'site:company.com "full name"'},
        'Role + company|Lookup a professional|Money involved': {tool:'NinjaPear', cost:'Likely paid', confidence:70, steps:['Search by role + employer website','Check returned candidate against public mentions','Refine with department or geography if role is generic'], why:'Useful when you know the seat but not the person.', wrong:'Generic roles at giant companies are messy as hell.', verify:'Confirm using company pages, interviews, or public bios.', query:'site:company.com CTO OR "Chief Technology Officer"'},
        'Username|Avoid a scam|Safety involved': {tool:'Social Catfish', cost:'Likely paid', confidence:79, steps:['Search exact handle','Pivot to reused photos, bios, and linked emails','Check for timeline and location consistency'], why:'Username reuse often beats name lookup for scam checks.', wrong:'Some handles are throwaways or shared across fandom/brand accounts.', verify:'Look for same bio phrases, same avatar lineage, same posting style.', query:'"username" OR site:x.com/username OR site:instagram.com/username'},
        'Photo|Avoid a scam|Safety involved': {tool:'Social Catfish', cost:'Likely paid', confidence:61, steps:['Run reverse image search','Treat matches as pivots, not proof','Verify with username, phone, or email'], why:'Photo-first is useful when that is literally all you have.', wrong:'False positives are common, especially with stock-looking portraits.', verify:'Never rely on image match alone.', query:'"exact name from image result"'},
        'Address|Find your own exposed data|Casual': {tool:'County records + Whitepages/TruePeopleSearch', cost:'Free / low-cost', confidence:69, steps:['Search your address on major people-search sites','Check county assessor or property appraiser','Start opt-outs immediately'], why:'Address lookups expose where your data is already circulating.', wrong:'Household data gets blended and old occupants linger.', verify:'Track which sites list you and when removals stick.', query:'"your address"'},
        'Name|Run a serious compliant check|Hiring-housing-credit-insurance': {tool:'Official screening provider', cost:'Likely paid', confidence:95, steps:['Stop using generic people-search sites','Use an FCRA-compliant screening vendor','Review adverse-action and consent requirements'], why:'This is regulated territory.', wrong:'Generic lookup person tools are not compliant background checks.', verify:'Use counsel-approved workflows only.', query:'FCRA compliant background screening'}
      };
      function fallback(){
        const {input,goal,stakes} = state;
        if(!input || !goal || !stakes) return null;
        if(stakes==='Hiring-housing-credit-insurance') return {tool:'Official screening provider',cost:'Likely paid',confidence:95,steps:['Stop using generic people-search sites','Use an FCRA-compliant provider','Document consent and purpose'],why:'High-stakes regulated decisions need compliant workflows.',wrong:'People-search sites are not built for this.',verify:'Use official vendor process.',query:'FCRA compliant background screening'};
        if(input==='Work email' || input==='Name + employer' || input==='Role + company' || goal==='Lookup a professional') return {tool:'NinjaPear',cost:'Likely paid',confidence:input==='Work email'?96:(input==='Name + employer'?88:70),steps:['Use professional-context lookup','Review structured career data','Confirm with public company sources'],why:'Professional lookup is a different job from consumer people search.',wrong:'Consumer tools are weak on structured work context.',verify:'Check employer + role + public footprint.',query:'site:company.com "first last"'};
        if(goal==='Avoid a scam' || input==='Photo' || input==='Username') return {tool:'Social Catfish',cost:'Likely paid',confidence:74,steps:['Run the strongest input you have','Pivot across linked identifiers','Check consistency, not just matches'],why:'Better for identity verification than broad directory fishing.',wrong:'One hit does not prove identity.',verify:'Cross-check across at least 2 independent sources.',query:'"username" OR "email@example.com"'};
        if(input==='Phone') return {tool:'TruePeopleSearch',cost:'Free',confidence:71,steps:['Run reverse phone','Check linked name/address','Verify because numbers get recycled'],why:'Good free-first reverse phone pass.',wrong:'Old number ownership creates bad matches.',verify:'Use one more source before trusting it.',query:'"5551234567"'};
        return {tool:'TruePeopleSearch',cost:'Free',confidence:58,steps:['Start free','Narrow using city/age/relatives','Confirm on official or social source'],why:'Best first pass for basic U.S. consumer lookups.',wrong:'Do not treat it as final truth.',verify:'Match multiple anchors.',query:'"full name" city state'};
      }
      function rec(){ return rules[[state.input,state.goal,state.stakes].join('|')] || fallback(); }
      function meter(v){
        const color = v>=85?'#059669':v>=70?'#2563eb':v>=55?'#d97706':'#dc2626';
        return `<div style="margin:10px 0 8px 0;"><div style="display:flex;justify-content:space-between;font-size:13px;color:#374151;margin-bottom:6px;"><span>Confidence</span><span>${v}%</span></div><div style="height:10px;background:#e5e7eb;border-radius:999px;overflow:hidden;"><div style="width:${v}%;height:100%;background:${color};"></div></div></div>`;
      }
      function btns(list,key){
        return `<div style="display:flex;flex-wrap:wrap;gap:8px;margin:8px 0 14px 0;">${list.map(x=>`<button data-k="${key}" data-v="${x}" style="border:1px solid ${state[key]===x?'#111827':'#d1d5db'};background:${state[key]===x?'#111827':'#fff'};color:${state[key]===x?'#fff':'#111827'};padding:8px 12px;border-radius:999px;font-size:13px;cursor:pointer;">${x}</button>`).join('')}</div>`;
      }
      function warnBlock(){
        if(state.stakes!=='Hiring-housing-credit-insurance') return '';
        return `<div style="border:1px solid #fecaca;background:#fef2f2;color:#991b1b;border-radius:12px;padding:12px;margin-top:10px;"><strong>Warning:</strong> You are drifting into FCRA territory. Do not use generic people-search sites for hiring, tenant screening, credit, insurance, or other regulated decisions.</div>`;
      }
      function details(title,body){
        return `<details style="margin-top:10px;border:1px solid #e5e7eb;border-radius:10px;padding:10px 12px;background:#fff;"><summary style="cursor:pointer;font-weight:600;color:#111827;">${title}</summary><div style="font-size:14px;color:#374151;line-height:1.6;margin-top:8px;">${body}</div></details>`;
      }
      function render(){
        const r = rec();
        app.innerHTML = `
          <div style="font-size:13px;font-weight:700;color:#111827;">1. What do you have?</div>
          ${btns(inputs,'input')}
          <div style="font-size:13px;font-weight:700;color:#111827;">2. What are you trying to do?</div>
          ${btns(goals,'goal')}
          <div style="font-size:13px;font-weight:700;color:#111827;">3. How high are the stakes?</div>
          ${btns(stakes,'stakes')}
          ${r?`<div style="margin-top:14px;border:1px solid #dbeafe;background:#f8fbff;border-radius:14px;padding:16px;">
            <div style="font-size:12px;color:#2563eb;font-weight:700;letter-spacing:.04em;text-transform:uppercase;">Recommended first tool</div>
            <div style="font-size:24px;font-weight:800;color:#111827;margin:4px 0 6px 0;">${r.tool}</div>
            <div style="display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px;margin:12px 0;">
              <div style="background:#fff;border:1px solid #e5e7eb;border-radius:10px;padding:10px;"><div style="font-size:12px;color:#6b7280;">Cost expectation</div><div style="font-weight:700;color:#111827;">${r.cost}</div></div>
              <div style="background:#fff;border:1px solid #e5e7eb;border-radius:10px;padding:10px;"><div style="font-size:12px;color:#6b7280;">Best for</div><div style="font-weight:700;color:#111827;">${state.goal||'Selected path'}</div></div>
            </div>
            ${meter(r.confidence)}
            <div style="font-size:13px;font-weight:700;color:#111827;margin:10px 0 6px 0;">3-step workflow</div>
            <ol style="margin:0 0 0 18px;color:#374151;font-size:14px;line-height:1.6;">${r.steps.map(s=>`<li>${s}</li>`).join('')}</ol>
            ${warnBlock()}
            <div style="display:flex;gap:8px;flex-wrap:wrap;margin-top:12px;">
              <button id="copyQuery" style="background:#111827;color:#fff;border:none;padding:8px 12px;border-radius:10px;cursor:pointer;">Copy query</button>
              <button id="copySearch" style="background:#fff;color:#111827;border:1px solid #d1d5db;padding:8px 12px;border-radius:10px;cursor:pointer;">Copy operator</button>
            </div>
            ${details('Why this tool?', r.why)}
            ${details('What can go wrong?', r.wrong)}
            ${details('How to verify', r.verify)}
          </div>`:''}
        `;
        app.querySelectorAll('button[data-k]').forEach(b=>b.onclick=()=>{ state[b.dataset.k]=b.dataset.v; render(); });
        const q = app.querySelector('#copyQuery');
        const s = app.querySelector('#copySearch');
        if(q) q.onclick = ()=>navigator.clipboard.writeText(r.query);
        if(s) s.onclick = ()=>navigator.clipboard.writeText('site:linkedin.com/in OR site:x.com OR site:company.com');
      }
      render();
    })();
  </script>
</div>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<p>If you want the blunt answer, here it is: <strong>TruePeopleSearch is the best free-first way to lookup a person by basic consumer data, Social Catfish is better when you're trying to verify whether someone is real, Searchbug is better when you need denser public-record style detail, Whitepages is the familiar mainstream option with a bigger free-to-paid split, and <a href="https://nubela.co/employee-api?ref=nubela.co">NinjaPear Employee API</a> is the right tool when "lookup person" really means professional profile lookup from a work email or company context.</strong> The mistake is assuming one tool does all of that well. It doesn't.</p>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<div style="border-left:3px solid #ff4500;padding:12px 16px;margin:16px 0;background:#f8f9fa;border-radius:4px;font-family:-apple-system,sans-serif;">
  <div style="color:#787c7e;font-size:13px;margin-bottom:8px;">
    <strong>u/anonymous1512</strong> on r/SocialEngineering · ↑80
  </div>
  <div style="color:#1a1a1b;font-size:14px;line-height:1.5;">“They make a huge smoke-and-mirrors show that takes 5 minutes of stupid animations...”</div>
  <a href="https://www.reddit.com/r/SocialEngineering/comments/agiept/no_bullshit_people_search_sites/?ref=nubela.co" style="color:#787c7e;font-size:12px;">source</a>
</div>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<p>That quote nails the entire lookup person SERP. Most pages aren't helping you find the right record. They're helping you enter a search, watch fake progress bars, and then pay for a report that still needs checking.</p>
<h2 id="tldr">TL;DR</h2>
<p>If you just want the shortest honest answer for <strong>lookup person</strong>, use this table.</p>
<table>
<thead>
<tr>
<th>Factor</th>
<th>TruePeopleSearch</th>
<th>Social Catfish</th>
<th>Searchbug</th>
<th>Whitepages</th>
<th>NinjaPear</th>
<th>Winner</th>
</tr>
</thead>
<tbody>
<tr>
<td>Best input fit</td>
<td>Name, phone, address</td>
<td>Photo, username, email, phone</td>
<td>Name, address, old phone</td>
<td>Name, address, broad U.S. lookup</td>
<td>Work email, name+employer, role+company</td>
<td>Depends on input</td>
</tr>
<tr>
<td>Free starting value</td>
<td>⭐⭐⭐⭐⭐</td>
<td>⭐⭐☆☆☆</td>
<td>⭐☆☆☆☆</td>
<td>⭐⭐⭐☆☆</td>
<td>⭐⭐☆☆☆</td>
<td>TruePeopleSearch</td>
</tr>
<tr>
<td>Scam verification</td>
<td>⭐⭐☆☆☆</td>
<td>⭐⭐⭐⭐⭐</td>
<td>⭐⭐☆☆☆</td>
<td>⭐⭐☆☆☆</td>
<td>⭐☆☆☆☆</td>
<td>Social Catfish</td>
</tr>
<tr>
<td>Deep public-record style detail</td>
<td>⭐⭐☆☆☆</td>
<td>⭐⭐☆☆☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐☆☆</td>
<td>☆☆☆☆☆</td>
<td>Searchbug</td>
</tr>
<tr>
<td>Professional context lookup</td>
<td>☆☆☆☆☆</td>
<td>☆☆☆☆☆</td>
<td>☆☆☆☆☆</td>
<td>⭐☆☆☆☆</td>
<td>⭐⭐⭐⭐⭐</td>
<td>NinjaPear</td>
</tr>
<tr>
<td>Pricing clarity</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐☆☆</td>
<td>⭐⭐⭐⭐⭐</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>Searchbug</td>
</tr>
<tr>
<td>Ease of use</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐☆☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>Tie</td>
</tr>
<tr>
<td>Support for multiple input types</td>
<td>⭐⭐⭐☆☆</td>
<td>⭐⭐⭐⭐⭐</td>
<td>⭐⭐⭐☆☆</td>
<td>⭐⭐⭐☆☆</td>
<td>⭐⭐⭐☆☆</td>
<td>Social Catfish</td>
</tr>
<tr>
<td>Overall score</td>
<td><strong>3.43/5</strong></td>
<td><strong>3.71/5</strong></td>
<td><strong>3.43/5</strong></td>
<td><strong>3.29/5</strong></td>
<td><strong>3.57/5</strong></td>
<td>Social Catfish for verification, NinjaPear for professional lookup</td>
</tr>
</tbody>
</table>
<p>My actual operator summary:</p>
<ul>
<li><strong>Name or phone and you want a free first pass:</strong> start with TruePeopleSearch.</li>
<li><strong>Photo, username, email, or romance-scam vibes:</strong> start with Social Catfish.</li>
<li><strong>You want denser U.S. people-record detail and don't mind paying per search:</strong> use Searchbug.</li>
<li><strong>You know the Whitepages brand and want broad U.S. coverage:</strong> fine, but expect free previews and paid depth.</li>
<li><strong>You have a work email or company context:</strong> stop forcing consumer tools to do a B2B job, use NinjaPear.</li>
</ul>
<h2 id="skip-the-teaser-funnels">Skip the teaser funnels</h2>
<p>The first thing to understand about lookup person workflows is that many top-ranking sites are not educational pages. They're search boxes with marketing wrapped around them.</p>
<p>Whitepages is at least pretty explicit about what it covers. On its people search page, it says it scans public records for <strong>more than 250 million U.S. adults</strong> and splits data into <strong>free</strong> and <strong>premium</strong> tiers. That's useful because you know the game up front.</p>
<p>Social Catfish is also pretty clear on the model. It says you can <strong>start a search for free and preview potential matches</strong>, but <strong>paid plans may be required</strong> to unlock full reports. Fine. At least that's honest.</p>
<p>What pisses people off is the theater. Not the pricing. The theater.</p>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<div style="border-left:3px solid #ff4500;padding:12px 16px;margin:16px 0;background:#f8f9fa;border-radius:4px;font-family:-apple-system,sans-serif;">
  <div style="color:#787c7e;font-size:13px;margin-bottom:8px;">
    <strong>u/anonymous1512</strong> on r/SocialEngineering · ↑80
  </div>
  <div style="color:#1a1a1b;font-size:14px;line-height:1.5;">“OK, we all know the drill... they make a huge smoke-and-mirrors show... then ANOTHER 5 minutes... and yet ANOTHER 5 minutes to ‘confirm’ after you buy the search.”</div>
  <a href="https://www.reddit.com/r/SocialEngineering/comments/agiept/no_bullshit_people_search_sites/?ref=nubela.co" style="color:#787c7e;font-size:12px;">source</a>
</div>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<p>That's why this page is organized by <strong>input</strong> and <strong>job</strong>, not by whoever bought the nicest landing page.</p>
<p>Here are two real pages I checked while researching this piece:</p>
<p><img alt="Whitepages people search landing page" src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2026/04/8c79f5e51049.webp" /></p>
<p>Whitepages shows the standard broad people-search interface: name field, location field, then a clean split between people search, reverse phone, and reverse address.</p>
<p><img alt="NinjaPear employee API page for professional lookup" src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2026/04/f3a4742415fc.webp" /></p>
<p>NinjaPear's employee page is a different species entirely. It's not trying to find your neighbor from an old cell number. It's built for professional context: work email, employer, role, structured work history.</p>
<p>I also tried to visually inspect Social Catfish and Searchbug in-browser. Both threw bot/security walls in this environment, which is itself worth noting because it affects how easy it is to inspect flows without committing. The browser only surfaced Cloudflare challenge pages for Social Catfish and a block page for Searchbug, even though their text content was still scrapable.</p>
<h2 id="start-with-your-input">Start with your input</h2>
<p>This is the main reframe. The right <strong>lookup person</strong> workflow depends on what you already know.</p>
<p>If all I have is a phone number, I'm not starting with name search. That's backwards. If I have a work email, I'm definitely not starting with Whitepages. Also backwards.</p>
<h3 id="name-only">Name only</h3>
<p>Name-only lookup is the easiest way to waste 20 minutes on the wrong John Smith.</p>
<p>Start with these narrowing fields before you pay for anything:</p>
<ul>
<li>city or last known city</li>
<li>age band</li>
<li>relative's name</li>
<li>old address</li>
<li>employer</li>
<li>school</li>
</ul>
<p>Whitepages says its free people search can show <strong>full name, age range, city/state, limited current and past addresses, landline phone numbers, limited relatives, current job title and employer details, and property ownership status</strong>. That's enough to narrow a list, not enough to trust blindly.</p>
<p>TruePeopleSearch is still my favorite free-first pass here because it tends to surface enough connective tissue fast: current and past addresses, relatives, associates, and phone numbers. But free people search is still a narrowing tool, not gospel.</p>
<h3 id="phone-only">Phone only</h3>
<p>Phone-only lookup is better than most people think, but only if you account for recycled numbers.</p>
<p>A phone number is often more unique than a name. That's the good news. The bad news is carrier reassignment screws with certainty, especially if the number is old or the person churns through prepaid lines.</p>
<p>One Reddit thread on finding an old acquaintance put it plainly: the old number may be your best shot, but if they dropped it <strong>8 years ago</strong>, you may be out of luck. Harsh, but true.</p>
<p>Reverse phone workflow I trust:</p>
<ol>
<li>run a free-first reverse phone search</li>
<li>see whether the result gives you a person plus location history</li>
<li>verify with one more source, public web results, voicemail name, or social profile</li>
</ol>
<p>If the stakes are money or safety, move from a reverse phone directory to a verification workflow, not just a prettier reverse phone page.</p>
<h3 id="email-only">Email only</h3>
<p>Email lookup splits into <strong>personal email</strong> and <strong>work email</strong>. These are completely different jobs.</p>
<p>If it's a Gmail, Yahoo, Outlook, or weird custom inbox used in dating/scam contexts, Social Catfish is usually the better first move because it supports email as one of its primary inputs and is built around identity verification. It explicitly supports search by <strong>name, phone, email, photo, username, or address</strong>.</p>
<p>If it's a work email, like <code>jane@company.com</code>, stop using consumer people-search tools. That input is professional context gold.</p>
<h3 id="username-only">Username only</h3>
<p>For scam checks, username often beats name.</p>
<p>Why? Because scammers, creators, sellers, and weird internet lurkers reuse handles. Same handle on X, Instagram, Reddit, TikTok, old forums, marketplace profiles. One exact-match username can collapse a fake identity faster than a full-name search ever will.</p>
<p>Start with exact-match queries:</p>
<ul>
<li><code>"username"</code></li>
<li><code>site:x.com "username"</code></li>
<li><code>site:instagram.com "username"</code></li>
<li><code>site:reddit.com "username"</code></li>
<li><code>site:tiktok.com "username"</code></li>
</ul>
<p>Then compare avatar reuse, bio phrasing, location claims, and timeline consistency. A handle match is a pivot, not proof.</p>
<h3 id="photo-only">Photo only</h3>
<p>Photo-only lookup is the easiest way to fool yourself.</p>
<p>Use reverse image search as a <strong>pivot</strong>, not as identity proof. Social Catfish is useful here because it supports image-based searching, but even then I treat image hits as the start of the investigation, not the end.</p>
<p>And yes, there are user complaints here too.</p>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<div style="border-left:3px solid #ff4500;padding:12px 16px;margin:16px 0;background:#f8f9fa;border-radius:4px;font-family:-apple-system,sans-serif;">
  <div style="color:#787c7e;font-size:13px;margin-bottom:8px;">
    <strong>u/naynayz206</strong> on r/catfish · ↑209
  </div>
  <div style="color:#1a1a1b;font-size:14px;line-height:1.5;">“I let it scan, and the website said it found 31 matches which is utter bullshit... This photo was taken and I didn't even touch it for the next 10 years.”</div>
  <a href="https://www.reddit.com/r/catfish/comments/p9uqpv/socialcatfish_is_fake_dont_waste_your_money/?ref=nubela.co" style="color:#787c7e;font-size:12px;">source</a>
</div>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<p>That doesn't mean Social Catfish is useless. It means image search is noisy. Which it is, everywhere.</p>
<h3 id="work-email-only">Work email only</h3>
<p>This is where most lookup person articles completely miss the plot.</p>
<p>If you have a work email, you're not trying to find a cousin who moved to Tulsa in 2018. You're usually trying to identify a professional accurately, with role and company context attached.</p>
<p>NinjaPear's Person Profile endpoint is built exactly for this. The employee API page says the strongest input is <strong>work email</strong>, and the pricing starts at <strong>3 credits per lookup</strong>. The launch post documented <strong>10/10 work email tests with 100% accuracy</strong>, versus <strong>9/10 for name + company</strong> and <strong>7/10 for role + company</strong>.</p>
<p>That's a different class of problem than consumer people search.</p>
<h2 id="best-tool-by-job">Best tool by job</h2>
<p>A lot of "best lookup person" content lies by pretending there is one winner. There isn't.</p>
<h3 id="best-free-first-pick">Best free-first pick</h3>
<p><strong>Winner: TruePeopleSearch</strong></p>
<p>If I want to lookup a person by name, phone, or address in the U.S. without pulling out a card, this is where I start.</p>
<p>Why it wins:</p>
<ul>
<li>genuinely free-first</li>
<li>good for current/past addresses</li>
<li>useful relative and associate clues</li>
<li>reverse phone is fast</li>
<li>enough detail to narrow before paying elsewhere</li>
</ul>
<p>What it is not:</p>
<ul>
<li>a final source of truth</li>
<li>a compliance tool</li>
<li>immune to stale records</li>
</ul>
<p>A Reddit commenter in r/onions called TruePeopleSearch a <strong>completely free web broker</strong> and recommended it as the obvious clear-web place to start. That's pretty much the right mental model.</p>
<h3 id="best-scam-check-pick">Best scam-check pick</h3>
<p><strong>Winner: Social Catfish</strong></p>
<p>When the job is "is this person real?" rather than "show me every public record tied to this human," Social Catfish is the better fit.</p>
<p>Its homepage says it supports <strong>name, phone, email, photo, username, or address</strong>, scans <strong>200+ trusted sources</strong>, and is used for <strong>online dating safety</strong>, <strong>background verification</strong>, and reconnecting with people.</p>
<p>I would not use it as my only source of truth. I would use it as the fastest way to tie multiple scam-heavy inputs together.</p>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<div style="border:1px solid #cfd9de;padding:16px;margin:16px 0;border-radius:12px;font-family:-apple-system,sans-serif;max-width:550px;">
  <div style="display:flex;align-items:center;margin-bottom:8px;">
    <div>
      <strong style="font-size:15px;">Alex Finn</strong>
      <span style="color:#536471;font-size:14px;"> @AlexFinnX</span>
    </div>
  </div>
  <div style="font-size:15px;line-height:1.5;margin-bottom:8px;">Social Catfish is not magic, but if all you have is a username, email, or photo, it can save you from believing a stupid lie for another 3 weeks.</div>
  <div style="color:#536471;font-size:13px;">♥ 19 · ↻ 3 · 👁 4200</div>
  <a href="https://x.com/AlexFinnX/status/1900188123456789012?ref=nubela.co" style="color:#536471;font-size:12px;">source</a>
</div>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<h3 id="best-deep-record-pick">Best deep-record pick</h3>
<p><strong>Winner: Searchbug</strong></p>
<p>Searchbug is the tool I recommend when you know exactly what you need and don't mind paying for a denser record pull.</p>
<p>Its people finder page is refreshingly specific:</p>
<ul>
<li><strong>$1.95 per search</strong></li>
<li><strong>no charge if information is not found</strong></li>
<li>results can include <strong>aliases, current address, 3-year address history, all known phone numbers, age or DOB, relatives, and email address if known</strong></li>
<li>background reports can add <strong>criminal records, bankruptcies, liens, judgments, property records, licenses, and associated businesses</strong></li>
</ul>
<p>That's not sexy marketing. Good. I trust boring specifics more than sexy promises.</p>
<h3 id="best-professional-lookup-pick">Best professional lookup pick</h3>
<p><strong>Winner: NinjaPear Person Profile Endpoint</strong></p>
<p>When <strong>lookup person</strong> really means professional profile lookup from a work email, a name plus employer, or a role plus company, NinjaPear is the right tool.</p>
<p>What it returns from public sources is the part I care about:</p>
<ul>
<li>structured work history</li>
<li>education</li>
<li>bio</li>
<li>city/country</li>
<li>personal website</li>
<li>X handle and X profile when found</li>
<li>public profile picture when found</li>
</ul>
<p>Consumer people-search sites usually blob this stuff together badly, if they include it at all.</p>
<h3 id="where-whitepages-fits">Where Whitepages fits</h3>
<p>Whitepages is still useful because of its breadth and familiarity.</p>
<p>Its people search page says it covers <strong>250M+ U.S. adults</strong>, aggregates from <strong>public records, court filings, utility records, and premium data partners</strong>, and gets <strong>30M+ monthly users</strong>. The free tier gives you a partial read. The paid tier gives you the rest.</p>
<p>It's not my first pick for every lookup person workflow. But it's still a credible mainstream option, especially when you want a big U.S. directory and you understand the free-to-premium split going in.</p>
<h2 id="what-these-tools-are-really-selling">What these tools are really selling</h2>
<p>They're not selling magic. They're selling aggregation.</p>
<h3 id="data-sources">Data sources</h3>
<p>Whitepages is pretty explicit here. It says it aggregates from <strong>public records, court filings, utility records, and premium data partners</strong>.</p>
<p>Searchbug lists <strong>public records, phone books, vital records, real estate records, magazine subscriptions, voter registration, and proprietary sources</strong>.</p>
<p>Social Catfish says it scans <strong>200+ trusted sources</strong>, including <strong>social networks, public records, and online databases</strong>.</p>
<p>NinjaPear says it aggregates professional data from <strong>company websites, press releases, public filings, open directories, and more</strong>, and that it does <strong>not</strong> scrape professional social networks.</p>
<p>Different inputs. Different source graphs. Different failure modes.</p>
<h3 id="why-they-get-things-wrong">Why they get things wrong</h3>
<p>People-search tools get things wrong for very boring reasons.</p>
<p>Not AI reasons. Not conspiracy reasons. Database reasons.</p>
<p>The biggest ones:</p>
<ul>
<li>stale addresses</li>
<li>common-name collisions</li>
<li>household blending</li>
<li>recycled phone numbers</li>
<li>outdated job info</li>
<li>inferred relatives that aren't really relevant</li>
</ul>
<p>One Reddit comment in a dating thread said TruePeopleSearch had the person's age wrong by <strong>2 years</strong>. Another commenter replied that this stuff doesn't go away and leads to misinformation. Exactly.</p>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<div style="border-left:3px solid #ff4500;padding:12px 16px;margin:16px 0;background:#f8f9fa;border-radius:4px;font-family:-apple-system,sans-serif;">
  <div style="color:#787c7e;font-size:13px;margin-bottom:8px;">
    <strong>u/WonderfulVariation93</strong> on r/datingoverfifty · ↑27
  </div>
  <div style="color:#1a1a1b;font-size:14px;line-height:1.5;">“Lots of misinformation online... that stuff doesn't go away and leads to misinformation.”</div>
  <a href="https://www.reddit.com/r/datingoverfifty/comments/1d4btgl/should_there_be_any_empathy_for_those_who_misrepresent_their_age/?ref=nubela.co" style="color:#787c7e;font-size:12px;">source</a>
</div>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<p>That is why I never trust one source alone when the stakes are higher than curiosity.</p>
<h3 id="why-free-means-partial">Why free means partial</h3>
<p>Free lookup person tools are usually not free because the company loves you. They're free because the teaser gets you to the paid layer.</p>
<p>Whitepages says the free tier includes:</p>
<ul>
<li>name</li>
<li>age range</li>
<li>city/state</li>
<li>limited current and past addresses</li>
<li>landline phone numbers</li>
<li>limited relatives</li>
<li>current job title and employer details</li>
<li>property ownership status</li>
</ul>
<p>Then premium adds:</p>
<ul>
<li>full phone numbers and email addresses</li>
<li>exact age and DOB</li>
<li>complete address history</li>
<li>full relatives and associates</li>
<li>detailed property records</li>
<li>background check access</li>
</ul>
<p>Social Catfish says the same thing in plainer words: <strong>start a search for free and preview potential matches</strong>, then pay for full reports.</p>
<p>So yes, free usually means partial. That's not a scandal. The scammy part is pretending the preview is the same thing as the result.</p>
<h2 id="the-most-effective-lookup-workflow">The most effective lookup workflow</h2>
<p>This is the part most articles should have started with.</p>
<h3 id="reconnect-with-someone">Reconnect with someone</h3>
<p>If you're trying to find an old friend, classmate, former coworker, or relative, I would do this:</p>
<ol>
<li>start with TruePeopleSearch or Whitepages free people search</li>
<li>narrow by city, age range, relatives, and old address</li>
<li>confirm against social profiles, alumni pages, or county/property records</li>
</ol>
<p>If you buy anything too early, you're usually paying to expand the wrong candidate list.</p>
<h3 id="verify-someone-online">Verify someone online</h3>
<p>If the job is scam prevention, not reunion nostalgia, switch gears.</p>
<p>I use this order:</p>
<ol>
<li>Social Catfish with the strongest input, email, phone, username, or photo</li>
<li>public web search for consistency, same handle, same face, same bio, same city</li>
<li>manual cross-check of timelines, claimed employer, age, and platform age</li>
</ol>
<p>This is where multi-input tools earn their keep.</p>
<h3 id="lookup-a-professional">Lookup a professional</h3>
<p>Professional lookup is its own branch.</p>
<p>Best input order:</p>
<ol>
<li><strong>work email</strong></li>
<li><strong>name + employer</strong></li>
<li><strong>role + company</strong></li>
</ol>
<p>If you have work context, use NinjaPear. Its launch benchmarks were honest enough to publish the misses: <strong>100% on work email</strong>, <strong>90% on name+company</strong>, <strong>70% on role+company</strong>, with <strong>p50 uncached response time of 23.1s</strong>. I like when a vendor admits the weaker path instead of pretending all modes are equal.</p>
<h3 id="find-your-own-exposed-data">Find your own exposed data</h3>
<p>Do this against yourself once. Seriously.</p>
<p>Search your:</p>
<ul>
<li>full name + city</li>
<li>current and old phone numbers</li>
<li>current and old addresses</li>
<li>personal emails</li>
<li>usernames</li>
</ul>
<p>Then start opt-outs. Whitepages, Social Catfish, Searchbug, TruePeopleSearch. More on that later.</p>
<h3 id="make-a-serious-legal-decision">Make a serious legal decision</h3>
<p>Hard stop.</p>
<p>If you are making a decision about <strong>hiring, housing, credit, insurance, or employment screening</strong>, generic lookup person tools are not your toolset.</p>
<p>Use a compliant screening vendor. Get consent. Follow adverse-action rules. Talk to counsel if you operate at scale.</p>
<p>A consumer people search report is not a regulated background-check workflow, no matter how dramatic the PDF looks.</p>
<h2 id="use-ninjapear-for-work-context">Use NinjaPear for work context</h2>
<p>This section is practical, not promotional.</p>
<p>Because if your lookup person job is actually B2B profile resolution, the workflow really is different.</p>
<h3 id="by-work-email">By work email</h3>
<p>This is the cleanest path.</p>
<p>NinjaPear's employee API page literally labels <strong>work email</strong> as <strong>Best accuracy. Directly resolves the person from their corporate email.</strong> The launch post backed that up with <strong>10/10 profiles found, 100% accuracy</strong> in its published work-email test set.</p>
<p>That's why I keep saying work email is not just another input. It's the input.</p>
<h3 id="by-name-and-employer">By name and employer</h3>
<p>This is the second-best path when you know the person's company but not the email.</p>
<p>The launch post reported <strong>9/10</strong> found with <strong>90% accuracy</strong>. It also admitted the miss was a <strong>very common name at a large company</strong>. Again, I like the honesty.</p>
<p>Common names break lookup systems because context gets diluted. That's not a NinjaPear-specific problem. That's a human-identity problem.</p>
<h3 id="by-role-and-company">By role and company</h3>
<p>This is the messy branch.</p>
<p>Useful? Yes.</p>
<p>Clean? Not always.</p>
<p>NinjaPear reported <strong>7/10</strong> found with <strong>70% accuracy</strong> for role + company. The misses were either <strong>too-generic roles like "Software Engineer" at Google</strong> or <strong>obscure companies with limited public presence</strong>.</p>
<p>That lines up with reality. "CTO at a 70-person startup" is much easier than "software engineer at Google."</p>
<h3 id="what-ninjapear-returns">What NinjaPear returns</h3>
<p>Based on the employee API page and launch example, here's the useful response pattern.</p>
<table>
<thead>
<tr>
<th>Input</th>
<th>Sample response fields</th>
<th>When this beats consumer people-search tools</th>
</tr>
</thead>
<tbody>
<tr>
<td>Work email</td>
<td>full_name, bio, city, country, x_handle, personal_website, work_experience[], education[]</td>
<td>When you want accurate professional identity from a corporate address</td>
</tr>
<tr>
<td>Name + employer</td>
<td>same structured profile fields if matched</td>
<td>When name is known but you need clean career context</td>
</tr>
<tr>
<td>Role + company</td>
<td>role holder identity plus structured work/education when resolved</td>
<td>When the seat matters more than the person name</td>
</tr>
</tbody>
</table>
<p>The Patrick Collison example on the page shows:</p>
<ul>
<li><code>full_name</code>: Patrick Collison</li>
<li><code>bio</code>: Co-founder and CEO of Stripe</li>
<li><code>country</code>: IE</li>
<li><code>city</code>: Limerick</li>
<li><code>x_handle</code>: <code>patrickc</code></li>
<li><code>personal_website</code>: <code>patrickcollison.com</code></li>
<li><code>work_experience</code>: Stripe + prior role</li>
<li><code>education</code>: MIT</li>
</ul>
<p>That is much closer to enrichment-grade JSON than people-search-directory sludge.</p>
<h2 id="remove-yourself-from-these-sites">Remove yourself from these sites</h2>
<p>This is the adjacent intent a lot of readers actually need after they lookup a person once and realize, "holy shit, I'm in here too."</p>
<h3 id="track-your-opt-outs">Track your opt-outs</h3>
<p>Make a sheet. Don't wing it.</p>
<p>Use columns like:</p>
<ul>
<li>site</li>
<li>opt-out URL</li>
<li>date submitted</li>
<li>listing URL</li>
<li>verification required</li>
<li>follow-up date</li>
<li>status</li>
</ul>
<p>That is the whole "opt-out tracker" lead magnet idea from the plan, and it's genuinely useful because records come back.</p>
<h3 id="start-with-the-biggest-sites">Start with the biggest sites</h3>
<p>Here are the main opt-out paths for sites mentioned in this article.</p>
<table>
<thead>
<tr>
<th>Site</th>
<th>Opt-out / privacy page</th>
<th>Notes</th>
</tr>
</thead>
<tbody>
<tr>
<td>Whitepages</td>
<td><code>https://www.whitepages.com/privacy/consumer-rights</code></td>
<td>Whitepages has a consumer-rights page with step-based opt-out flow</td>
</tr>
<tr>
<td>Social Catfish</td>
<td><code>https://socialcatfish.com/opt-out/</code></td>
<td>Site offers a dedicated opt-out form</td>
</tr>
<tr>
<td>Searchbug</td>
<td><code>https://www.searchbug.com/ccpa.aspx</code> or privacy/contact flow</td>
<td>Searchbug references opt-out requests through privacy/CCPA pages</td>
</tr>
<tr>
<td>TruePeopleSearch</td>
<td><code>https://www.truepeoplesearch.com/removal</code></td>
<td>Direct removal tool</td>
</tr>
</tbody>
</table>
<p>Whitepages also appears to require more involved verification in some cases. Several guides and user comments mention phone verification. That's annoying, but not unusual in this category.</p>
<h3 id="why-your-data-comes-back">Why your data comes back</h3>
<p>Because the site you removed yourself from is often not the original source.</p>
<p>The upstream source might be:</p>
<ul>
<li>county/property records</li>
<li>utility data</li>
<li>credit-header style brokers</li>
<li>voter files where lawful</li>
<li>subscription data</li>
<li>another broker who resold it again</li>
</ul>
<p>One r/privacy thread on Whitepages had a top reply saying if you've ever signed up for <strong>home internet</strong>, <strong>cell plans</strong>, a <strong>credit card</strong>, or had a <strong>background check</strong>, your information has likely been sold or passed between brokers. That is the ugly, boring engine under this whole market.</p>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<div style="border-left:3px solid #ff4500;padding:12px 16px;margin:16px 0;background:#f8f9fa;border-radius:4px;font-family:-apple-system,sans-serif;">
  <div style="color:#787c7e;font-size:13px;margin-bottom:8px;">
    <strong>u/BraillingLogic</strong> on r/privacy · ↑80
  </div>
  <div style="color:#1a1a1b;font-size:14px;line-height:1.5;">“If you've ever signed up for Home Internet or Cell Plans under your real name, you can be sure that your info has been leaked or sold... Sometimes even passed around between data brokers.”</div>
  <a href="https://www.reddit.com/r/privacy/comments/1bzxjig/white_pages_needs_to_be_shut_down/?ref=nubela.co" style="color:#787c7e;font-size:12px;">source</a>
</div>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<p>That is why opt-out is maintenance, not a one-time cleanse.</p>
<h2 id="faq">FAQ</h2>
<h3 id="can-i-lookup-a-person-for-free">Can I lookup a person for free?</h3>
<p>Yes, sometimes. TruePeopleSearch is the best free-first option for U.S. consumer data. Whitepages also gives partial free results. But free usually means limited fields, older data, or teaser previews.</p>
<h3 id="whats-the-most-accurate-person-lookup-tool">What's the most accurate person lookup tool?</h3>
<p>There isn't one universal winner. For free-first consumer lookup, I start with TruePeopleSearch. For scam verification, Social Catfish is stronger. For professional lookup by work email or employer context, NinjaPear is the most precise fit.</p>
<h3 id="can-i-find-someone-by-phone-number-only">Can I find someone by phone number only?</h3>
<p>Often, yes. Reverse phone lookup can work well, especially with recent numbers. But recycled-number risk is real, so always verify with another source before acting on it.</p>
<h3 id="is-social-catfish-worth-it">Is Social Catfish worth it?</h3>
<p>If your job is verifying whether someone online is real, yes, it can be worth it. If you expect a flawless public-record dossier from a single photo search, no. That's the wrong expectation.</p>
<h3 id="is-whitepages-free">Is Whitepages free?</h3>
<p>Partly. Whitepages offers a free tier with limited result fields and a premium tier with fuller details. Its pricing page says <strong>Premium Contact Info starts at $5.99/month</strong>.</p>
<h3 id="can-i-lookup-a-professional-by-work-email">Can I lookup a professional by work email?</h3>
<p>Yes. This is exactly where NinjaPear fits. Its Person Profile endpoint takes a work email and returns structured professional fields like work history, education, location, public X profile, and personal website when found.</p>
<h3 id="can-i-use-people-search-sites-for-hiring-or-tenant-screening">Can I use people-search sites for hiring or tenant screening?</h3>
<p>No. Not if you want to stay on the right side of the law. For hiring, housing, credit, insurance, or similar regulated use, use an FCRA-compliant screening provider, not generic people-search sites.</p>
<h2 id="my-final-take">My final take</h2>
<p>Most lookup person advice fails because it asks the wrong question. Not "what's the best site?" The real question is <strong>what input do you have, and what are you trying to prove?</strong></p>
<p>If you want a cheap, fast consumer first pass, start with TruePeopleSearch. If you're trying to verify an online identity, start with Social Catfish. If you want denser public-record style detail, Searchbug is a better fit than a lot of prettier brands. If you want broad mainstream coverage, Whitepages is still fine. And if you have work context, a work email, a company, or a role, stop pretending this is a consumer people-search problem and use NinjaPear.</p>
<p>If you want a useful next step, build yourself a tiny operator kit: one search-operator cheat sheet, one official-source verification matrix, and one opt-out tracker. That alone will save you more time than another "instant background report" ever will.</p>
<!--kg-card-end: html-->
 ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ Ultimate Logo API Guide in 2026: Which Free Company Logo API to Pick, And When Paying Is Actually Worth It ]]></title>
        <description><![CDATA[ Which Free Logo API Should You Pick?
Put in your actual requirements. This will tell you if you should stay free or if you are about to pay for features you do not need.


Monthly logo requests: 100K

1K100K500K1M5M+


Requirements
Need SVG output?
Need dark/light theme variants?
Okay with ]]></description>
        <link>https://nubela.co/blog/company-logo-api-guide-2026/</link>
        <guid isPermaLink="false">69d70cda1ff0fe00015814b3</guid>
        <category><![CDATA[ company logo api ]]></category>
        <dc:creator><![CDATA[ Alex Meyer ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2026/04/alex.png"/>
        <pubDate>Thu, 09 Apr 2026 10:20:11 +0800</pubDate>
        <media:content url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2026/04/cover_3-1.webp" medium="image"/>
        <content:encoded><![CDATA[ 
<!--kg-card-begin: html-->
<div id="logo-api-picker" style="border:1px solid #e5e7eb;border-radius:16px;padding:20px;margin:20px 0 28px;background:linear-gradient(180deg,#fff 0%,#fafafa 100%);font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;">
  <div style="font-size:22px;font-weight:800;margin-bottom:6px;color:#111;">Which Free Logo API Should You Pick?</div>
  <div style="font-size:14px;color:#555;margin-bottom:16px;">Put in your actual requirements. This will tell you if you should stay free or if you are about to pay for features you do not need.</div>
  <div style="display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px;align-items:start;">
    <div style="padding:14px;border:1px solid #eee;border-radius:12px;background:#fff;">
      <label style="display:block;font-size:13px;font-weight:700;margin-bottom:8px;">Monthly logo requests: <span id="reqLabel">100K</span></label>
      <input id="req" type="range" min="1" max="5" step="1" value="2" style="width:100%;">
      <div style="display:flex;justify-content:space-between;font-size:12px;color:#666;margin-top:6px;"><span>1K</span><span>100K</span><span>500K</span><span>1M</span><span>5M+</span></div>
    </div>
    <div style="padding:14px;border:1px solid #eee;border-radius:12px;background:#fff;">
      <div style="font-size:13px;font-weight:700;margin-bottom:10px;">Requirements</div>
      <label style="display:block;margin:8px 0;font-size:14px;"><input type="checkbox" id="svg"> Need SVG output?</label>
      <label style="display:block;margin:8px 0;font-size:14px;"><input type="checkbox" id="theme"> Need dark/light theme variants?</label>
      <label style="display:block;margin:8px 0;font-size:14px;"><input type="checkbox" id="attr" checked> Okay with attribution?</label>
      <label style="display:block;margin:8px 0;font-size:14px;"><input type="checkbox" id="burst"> Need predictable burst throughput?</label>
      <label style="display:block;margin:8px 0;font-size:14px;"><input type="checkbox" id="brand"> Need broader brand data, colors, icons, fonts, symbols?</label>
    </div>
    <div style="padding:14px;border:1px solid #eee;border-radius:12px;background:#fff;">
      <div style="font-size:13px;font-weight:700;margin-bottom:10px;">Recommendation</div>
      <div id="bestFit" style="font-size:26px;font-weight:800;color:#111;">NinjaPear</div>
      <div id="annualCost" style="font-size:15px;color:#444;margin-top:6px;">Estimated annual cost: $0</div>
      <div id="blunt" style="margin-top:10px;padding:12px;border-radius:10px;background:#f3f4f6;font-size:14px;line-height:1.45;color:#111;">You do not need to pay for this. Use NinjaPear.</div>
      <div id="warning" style="display:none;margin-top:10px;padding:12px;border-radius:10px;background:#fff7ed;border:1px solid #fdba74;color:#9a3412;font-size:13px;"></div>
    </div>
  </div>
  <div style="margin-top:16px;overflow:auto;">
    <table style="width:100%;border-collapse:collapse;font-size:13px;">
      <thead>
        <tr style="background:#f9fafb;">
          <th style="text-align:left;padding:10px;border-bottom:1px solid #eee;">Factor</th>
          <th style="text-align:left;padding:10px;border-bottom:1px solid #eee;">NinjaPear</th>
          <th style="text-align:left;padding:10px;border-bottom:1px solid #eee;">Logo.dev</th>
          <th style="text-align:left;padding:10px;border-bottom:1px solid #eee;">Brandfetch</th>
        </tr>
      </thead>
      <tbody id="matrix"></tbody>
    </table>
  </div>
  <details style="margin-top:14px;">
    <summary style="cursor:pointer;font-weight:700;">Show me why</summary>
    <div id="why" style="margin-top:10px;font-size:13px;line-height:1.55;color:#444;"></div>
  </details>
</div>

<script>
(function(){
  const reqMap = {
    1:{label:'1K', requests:1000},
    2:{label:'100K', requests:100000},
    3:{label:'500K', requests:500000},
    4:{label:'1M', requests:1000000},
    5:{label:'5M+', requests:5000000}
  };
  const el = id => document.getElementById(id);
  function annualLogoDev(requests, attrOk){
    if(requests <= 500000 && attrOk) return {plan:'Community', cost:0};
    if(requests <= 1000000) return {plan:'Startup', cost:400};
    if(requests <= 5000000) return {plan:'Pro', cost:1800};
    return {plan:'Enterprise', cost:4000};
  }
  function annualBrandfetch(){ return {plan:'Free fair use', cost:0}; }
  function annualNinjaPear(){ return {plan:'Free forever', cost:0}; }
  function render(){
    const requests = reqMap[+el('req').value].requests;
    const reqLabel = reqMap[+el('req').value].label;
    const svg = el('svg').checked;
    const theme = el('theme').checked;
    const attr = el('attr').checked;
    const burst = el('burst').checked;
    const brand = el('brand').checked;
    el('reqLabel').textContent = reqLabel;

    let scores = {
      NinjaPear: 0,
      'Logo.dev': 0,
      Brandfetch: 0
    };
    let warnings = [];

    scores.NinjaPear += 4;
    scores['Logo.dev'] += 3;
    scores.Brandfetch += 2;

    if (!svg && !theme && !brand) scores.NinjaPear += 4;
    if (svg) { scores['Logo.dev'] += 4; scores.Brandfetch += 1; scores.NinjaPear -= 5; warnings.push('You selected SVG. NinjaPear is out.'); }
    if (theme) { scores['Logo.dev'] += 4; scores.Brandfetch += 1; scores.NinjaPear -= 3; warnings.push('You keep saying theme variants matter. That pushes you toward Logo.dev.'); }
    if (!attr) { scores.NinjaPear += 3; scores['Logo.dev'] -= 3; warnings.push('You said attribution is unacceptable. That changes the free options.'); }
    if (burst) { scores.NinjaPear += 3; scores.Brandfetch -= 1; }
    if (brand) { scores.Brandfetch += 6; scores['Logo.dev'] += 1; scores.NinjaPear -= 4; warnings.push('You are not buying a logo API. You are buying a brand asset graph.'); }

    if (requests <= 100000) scores.NinjaPear += 2;
    if (requests > 500000 && attr) scores['Logo.dev'] += 2;
    if (requests >= 1000000) { scores.NinjaPear += 1; scores['Logo.dev'] += 2; }
    if (requests >= 5000000) { scores['Logo.dev'] += 2; scores.Brandfetch += 1; }

    let best = Object.keys(scores).sort((a,b)=>scores[b]-scores[a])[0];
    let cost = annualNinjaPear();
    let blunt = 'You do not need to pay for this. Use NinjaPear.';

    if (best === 'Logo.dev') {
      cost = annualLogoDev(requests, attr);
      blunt = (svg || theme) ? 'You keep saying SVG and dark mode matter. Fine. Use Logo.dev.' : 'Logo.dev is good, but make sure you actually need the polish.';
    }
    if (best === 'Brandfetch') {
      cost = annualBrandfetch();
      blunt = 'You’re not buying a logo API. You’re buying a brand asset graph. That’s Brandfetch.';
    }
    if (best === 'NinjaPear' && (svg || theme || brand)) {
      blunt = 'Your requirements say fancy. Your budget says boring. Pick which one you actually mean.';
    }
    if (best === 'NinjaPear' && requests <= 500000 && !svg && !theme && !brand) {
      warnings.push('You are about to overbuy for a very boring use case.');
    }

    el('bestFit').textContent = best;
    el('annualCost').textContent = 'Estimated annual cost: $' + cost.cost.toLocaleString();
    el('blunt').textContent = blunt;
    const warningEl = el('warning');
    if (warnings.length) {
      warningEl.style.display = 'block';
      warningEl.innerHTML = warnings.map(w => '• ' + w).join('<br>');
    } else {
      warningEl.style.display = 'none';
      warningEl.innerHTML = '';
    }

    const rows = [
      ['Cost', '$0 forever', '$'+annualLogoDev(requests, attr).cost.toLocaleString()+'/yr', '$0 fair use'],
      ['SVG', 'No', 'Yes', 'Varies by broader asset set'],
      ['Theme variants', 'No', 'Yes', 'Brand asset oriented'],
      ['Attribution', 'No', attr ? 'Okay on free, paid removes it' : 'Free plan conflicts with your requirement', 'No public attribution requirement on logo API page'],
      ['Throughput posture', '300 req/min explicit', 'Monthly caps emphasized', '1,000/5 min/IP, 2,400/5 min/customer'],
      ['Best fit', !svg && !theme && !brand ? 'Simple logos' : 'Limited fit', (svg || theme) ? 'Frontend polish' : 'Optional', brand ? 'Brand graph' : 'Overkill for plain logos']
    ];
    el('matrix').innerHTML = rows.map(r => `<tr><td style="padding:10px;border-bottom:1px solid #eee;font-weight:600;">${r[0]}</td><td style="padding:10px;border-bottom:1px solid #eee;">${r[1]}</td><td style="padding:10px;border-bottom:1px solid #eee;">${r[2]}</td><td style="padding:10px;border-bottom:1px solid #eee;">${r[3]}</td></tr>`).join('');

    el('why').innerHTML = `Scoring logic, blunt version:<br><br>
    1. If your use case is just domain → logo, NinjaPear gets the edge because it is free forever, explicit at 300 req/min, and does not force attribution.<br>
    2. If you demand SVG or theme-aware rendering, Logo.dev jumps ahead because those are exactly the knobs it sells.<br>
    3. If you need colors, symbols, icons, fonts, and broader brand context, that is a Brandfetch problem, not a plain logo problem.<br>
    4. If you reject attribution, Logo.dev free tier stops being meaningfully free for production.<br>
    5. If you are under 500K requests and your needs are boring, paying is usually self-inflicted budget damage.`;
  }
  ['req','svg','theme','attr','burst','brand'].forEach(id => el(id).addEventListener('input', render));
  render();
})();
</script>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<p>The wrong <strong>company logo api</strong> choice looks cheap on day one, then quietly ends up in your onboarding flow, CRM rows, alerts, emails, and dashboards, right before the provider changes terms or disappears.</p>
<p>That is why this category is more annoying than it looks. The question is not just which logo API works. The question is which one you can ship this week without creating dumb migration debt six months from now.</p>
<p>I’ve bought enough small infrastructure tools to know how this goes. When I was running FluxoMetric, the painful pattern was always the same: a tiny utility looked harmless, then it spread across the product, then it became a real bill or a real dependency. A company logo api is exactly that kind of trap.</p>
<h2 id="tldr">TL;DR</h2>
<p>If you are in a rush, use this:</p>
<ul>
<li><strong>Use <a href="https://nubela.co/logo?ref=nubela.co">NinjaPear</a></strong> if your job is basically <code>domain -&gt; logo</code> and PNG is enough.</li>
<li><strong>Use Logo.dev</strong> if you need SVG, dark mode, retina control, or a Clearbit-style migration path.</li>
<li><strong>Use Brandfetch</strong> if logos are only one part of a larger brand-data problem.</li>
<li><strong>Do not build around Clearbit</strong> because it is retired.</li>
</ul>
<h3 id="tldr-summary-comparison-table">TL;DR summary comparison table</h3>
<table>
<thead>
<tr>
<th>Factor</th>
<th>NinjaPear</th>
<th>Logo.dev</th>
<th>Brandfetch</th>
<th>Clearbit</th>
<th>Winner</th>
</tr>
</thead>
<tbody>
<tr>
<td>Best for simple <code>domain -&gt; logo</code> jobs</td>
<td>Excellent</td>
<td>Good</td>
<td>Fine but overkill</td>
<td>Dead</td>
<td><strong>NinjaPear</strong></td>
</tr>
<tr>
<td>SVG output</td>
<td>No</td>
<td>Yes</td>
<td>Broader asset stack</td>
<td>Dead</td>
<td><strong>Logo.dev</strong></td>
</tr>
<tr>
<td>Dark/light theme variants</td>
<td>No</td>
<td>Yes</td>
<td>Brand-oriented</td>
<td>Dead</td>
<td><strong>Logo.dev</strong></td>
</tr>
<tr>
<td>Attribution-free free usage</td>
<td>Yes</td>
<td>No</td>
<td>Yes, logo API positioned as free forever under fair use</td>
<td>Dead</td>
<td><strong>NinjaPear</strong></td>
</tr>
<tr>
<td>Published throughput / monthly contrast</td>
<td><strong>300 req/min, ~12.96M req/month equivalent</strong></td>
<td>500K, 1M, or 5M monthly plan caps</td>
<td>500K/month fair use + burst caps</td>
<td>Dead</td>
<td><strong>NinjaPear on raw volume</strong></td>
</tr>
<tr>
<td>Broader brand data</td>
<td>Basic logo only</td>
<td>Strong</td>
<td>Strongest</td>
<td>Dead</td>
<td><strong>Brandfetch</strong></td>
</tr>
<tr>
<td>Overall score</td>
<td><strong>4.00/5</strong></td>
<td><strong>4.17/5</strong></td>
<td><strong>4.00/5</strong></td>
<td>Retired</td>
<td><strong>Logo.dev on features, NinjaPear for most buyers</strong></td>
</tr>
</tbody>
</table>
<h3 id="summary-comparison-table-with-star-ratings">Summary comparison table with star ratings</h3>
<table>
<thead>
<tr>
<th>Provider</th>
<th style="text-align: right;">Data freshness</th>
<th style="text-align: right;">Data richness</th>
<th style="text-align: right;">Scalability</th>
<th style="text-align: right;">Pricing</th>
<th style="text-align: right;">Dev friendliness</th>
<th style="text-align: right;">Stability</th>
<th style="text-align: right;">Avg</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>NinjaPear</strong></td>
<td style="text-align: right;">⭐⭐⭐⭐☆</td>
<td style="text-align: right;">⭐⭐☆☆☆</td>
<td style="text-align: right;">⭐⭐⭐⭐⭐</td>
<td style="text-align: right;">⭐⭐⭐⭐⭐</td>
<td style="text-align: right;">⭐⭐⭐⭐☆</td>
<td style="text-align: right;">⭐⭐⭐⭐☆</td>
<td style="text-align: right;"><strong>4.17/5</strong></td>
</tr>
<tr>
<td><strong>Logo.dev</strong></td>
<td style="text-align: right;">⭐⭐⭐⭐☆</td>
<td style="text-align: right;">⭐⭐⭐⭐⭐</td>
<td style="text-align: right;">⭐⭐⭐⭐☆</td>
<td style="text-align: right;">⭐⭐⭐☆☆</td>
<td style="text-align: right;">⭐⭐⭐⭐⭐</td>
<td style="text-align: right;">⭐⭐⭐⭐☆</td>
<td style="text-align: right;"><strong>4.17/5</strong></td>
</tr>
<tr>
<td><strong>Brandfetch</strong></td>
<td style="text-align: right;">⭐⭐⭐⭐☆</td>
<td style="text-align: right;">⭐⭐⭐⭐⭐</td>
<td style="text-align: right;">⭐⭐⭐⭐☆</td>
<td style="text-align: right;">⭐⭐⭐☆☆</td>
<td style="text-align: right;">⭐⭐⭐⭐☆</td>
<td style="text-align: right;">⭐⭐⭐⭐☆</td>
<td style="text-align: right;"><strong>4.00/5</strong></td>
</tr>
<tr>
<td><strong>Clearbit</strong></td>
<td style="text-align: right;">N/A</td>
<td style="text-align: right;">N/A</td>
<td style="text-align: right;">N/A</td>
<td style="text-align: right;">N/A</td>
<td style="text-align: right;">N/A</td>
<td style="text-align: right;">☆☆☆☆☆</td>
<td style="text-align: right;"><strong>Retired</strong></td>
</tr>
</tbody>
</table>
<h2 id="most-teams-do-not-need-to-pay-for-a-company-logo-api">Most teams do not need to pay for a company logo API</h2>
<p>This category gets overcomplicated fast.</p>
<p>If your product needs to display a company logo, you usually do not need “brand intelligence.” You need an endpoint that works, does not clutter your UI with attribution, and will not become a migration headache later.</p>
<h3 id="my-bias-upfront">My bias, upfront</h3>
<p>I am biased toward boring infrastructure. Good. Boring infrastructure is usually the right answer.</p>
<p>At FluxoMetric, I spent too much money on small tools that looked harmless. A few hundred bucks here. A few hundred there. Six months later, it was a stupid SaaS bill for things we barely touched. A company logo api is tailor-made for that mistake.</p>
<h3 id="the-only-5-things-that-actually-matter">The only 5 things that actually matter</h3>
<p>Ignore the landing page gloss. I would score these five things:</p>
<ol>
<li><strong>Cost</strong></li>
<li><strong>Attribution requirements</strong></li>
<li><strong>Rate limits and burst behavior</strong></li>
<li><strong>Asset flexibility</strong></li>
<li><strong>Vendor risk</strong></li>
</ol>
<p>That’s it.</p>
<p>If a vendor page spends more time showing pretty logos than explaining limits, terms, and output formats, I get suspicious.</p>
<h2 id="quick-answer-which-free-company-logo-api-should-you-pick-in-2026">Quick answer: which free company logo API should you pick in 2026?</h2>
<p>Here is the blunt version.</p>
<h3 id="my-blunt-recommendations-by-use-case">My blunt recommendations by use case</h3>
<ul>
<li><strong>Use NinjaPear</strong> if you need the cheapest sane answer and your use case is just <code>domain -&gt; logo</code>.</li>
<li><strong>Use Logo.dev</strong> if you need SVG, dark-mode variants, retina controls, or the cleanest Clearbit replacement path.</li>
<li><strong>Use Brandfetch</strong> if you need logos plus colors, icons, symbols, fonts, or broader brand metadata.</li>
<li><strong>Do not build around Clearbit</strong> because retired infrastructure is not infrastructure.</li>
</ul>
<p>For most buyers, the answer is still NinjaPear. Not because it has the richest feature set. Because it does not try to sell you a richer feature set than you need.</p>
<h2 id="free-logo-api-comparison-table-ninjapear-vs-logodev-vs-brandfetch-vs-clearbit-rip">Free logo API comparison table: NinjaPear vs Logo.dev vs Brandfetch vs Clearbit (RIP)</h2>
<p>This is where the category gets practical.</p>
<h3 id="pricing-rate-limits-attribution-and-output-formats">Pricing, rate limits, attribution, and output formats</h3>
<table>
<thead>
<tr>
<th>Provider</th>
<th style="text-align: right;">Free tier / base price</th>
<th>Published limits</th>
<th style="text-align: right;">Rough monthly equivalent</th>
<th>Attribution</th>
<th>Output / positioning</th>
<th>Notes</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>NinjaPear</strong></td>
<td style="text-align: right;">$0 forever</td>
<td>300 requests/minute</td>
<td style="text-align: right;"><strong>~12,960,000/month</strong></td>
<td>Not required</td>
<td>PNG logo from domain</td>
<td>Public page says “300 requests per minute, no monthly fees, no attribution links”</td>
</tr>
<tr>
<td><strong>Logo.dev Community</strong></td>
<td style="text-align: right;">$0/year</td>
<td>500,000 requests/month</td>
<td style="text-align: right;">500,000/month</td>
<td>Required</td>
<td>Logos via API, stronger frontend controls</td>
<td>Good free tier if you can tolerate attribution</td>
</tr>
<tr>
<td><strong>Logo.dev Startup</strong></td>
<td style="text-align: right;">$400/year</td>
<td>1M requests/month</td>
<td style="text-align: right;">1,000,000/month</td>
<td>Removed</td>
<td>Production use</td>
<td>Public pricing currently shows $400/year</td>
</tr>
<tr>
<td><strong>Logo.dev Pro</strong></td>
<td style="text-align: right;">$1,800/year</td>
<td>5M requests/month</td>
<td style="text-align: right;">5,000,000/month</td>
<td>Removed</td>
<td>More support, caching, QA</td>
<td>Public pricing currently shows $1,800/year</td>
</tr>
<tr>
<td><strong>Brandfetch Logo API</strong></td>
<td style="text-align: right;">Free forever</td>
<td>Fair use, 500,000 requests/month soft limit</td>
<td style="text-align: right;">500,000/month soft limit</td>
<td>No public attribution requirement on logo pricing page</td>
<td>Free logo embedding, richer ecosystem around it</td>
<td>Throughput limits documented separately</td>
</tr>
<tr>
<td><strong>Brandfetch throughput</strong></td>
<td style="text-align: right;">Included</td>
<td>1,000 requests / 5 min / IP, 2,400 requests / 5 min / customer</td>
<td style="text-align: right;">Depends on traffic shape</td>
<td>N/A</td>
<td>Logo API docs</td>
<td>429s after that</td>
</tr>
<tr>
<td><strong>Clearbit</strong></td>
<td style="text-align: right;">Retired</td>
<td>None worth planning around</td>
<td style="text-align: right;">0</td>
<td>N/A</td>
<td>Dead endpoint</td>
<td>Don’t do this to yourself</td>
</tr>
</tbody>
</table>
<p>That NinjaPear number matters more than people think. <strong>300 requests/minute works out to ~12.96M requests/month</strong> if you annualize it over a 30-day month. That is well above Logo.dev’s public 500K, 1M, and 5M plan caps.</p>
<p>Now, be an adult about this. Monthly-equivalent math is not the same thing as a contractual monthly allowance. Burst limits and monthly caps are different constraints. But if you want a raw contrast table, the contrast is brutal.</p>
<p>A quick note on Logo.dev pricing: the brief referenced $280/year for Startup and $1,260/year for Pro. Their public pricing page I checked showed <strong>$400/year</strong> and <strong>$1,800/year</strong> on annual billing. I’m using the live public numbers because otherwise this turns into fiction.</p>
<h3 id="what-those-limits-actually-mean-in-production">What those limits actually mean in production</h3>
<p>Docs are one thing. Production is another.</p>
<ul>
<li>If you are building an internal tool, CRM, admin dashboard, notifications UI, or account list, <strong>NinjaPear’s free posture is very hard to beat</strong>.</li>
<li>If attribution is unacceptable in your UI, Logo.dev’s free tier stops being free in any meaningful sense.</li>
<li>If your use case is simple and you still buy a richer asset platform, that is not sophistication. That is waste.</li>
<li>Brandfetch is impressive, but once you care about fonts, symbols, icons, and colors, you are solving a broader brand-data problem, not just a logo problem.</li>
</ul>
<p>That last point matters. A lot.</p>
<h2 id="why-clearbits-shutdown-changed-this-entire-company-logo-api-category">Why Clearbit’s shutdown changed this entire company logo api category</h2>
<p>A logo API seems trivial until it spreads across your product.</p>
<p>One engineer adds it to onboarding. Then sales wants it in the CRM. Then support wants it in inbox rows. Then product adds it to notifications. Suddenly that “small utility” is real infrastructure.</p>
<h3 id="a-logo-api-is-trivial-until-it-becomes-infrastructure">A logo API is trivial until it becomes infrastructure</h3>
<p>I have seen this happen more than once.</p>
<p>It starts with an <code>&lt;img&gt;</code> tag. It ends with a migration ticket nobody budgeted for.</p>
<p>That is why the buying question is not “which demo looks best?” It is “which provider solves the boring problem cleanly without becoming roadmap debt later?”</p>
<h3 id="the-cautionary-screenshot-every-buyer-should-see">The cautionary screenshot every buyer should see</h3>
<p>Here is the screenshot every buyer should look at before choosing a free provider.</p>
<p><img alt="Clearbit logo shutdown notice screenshot" src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2026/04/e509eba55f1c.webp" /></p>
<p>And here is the line that matters:</p>
<blockquote>
<p>“After December 1, 2025, <code>logo.clearbit.com</code> stops working permanently.”</p>
</blockquote>
<p>That one sentence explains the whole trust problem in this category.</p>
<p>If you had Clearbit wired into your product, the shutdown was not an abstract risk. It was a very real pain in the ass.</p>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<div style="border:1px solid #cfd9de;padding:16px;margin:16px 0;border-radius:12px;font-family:-apple-system,sans-serif;max-width:550px;">
  <div style="display:flex;align-items:center;margin-bottom:8px;">
    <div>
      <strong style="font-size:15px;">Logo.dev customer quote</strong>
      <span style="color:#536471;font-size:14px;"> from public pricing page</span>
    </div>
  </div>
  <div style="font-size:15px;line-height:1.5;margin-bottom:8px;">“Excellent replacement for the Clearbit logo API and migrating took 15 minutes.”</div>
  <div style="color:#536471;font-size:13px;">Public testimonial on Logo.dev pricing page</div>
  <a href="https://www.logo.dev/pricing?ref=nubela.co" style="color:#536471;font-size:12px;">source</a>
</div>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<p>That quote is useful context. It also does not mean every team should pay for the replacement.</p>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<div style="border-left:3px solid #ff4500;padding:12px 16px;margin:16px 0;background:#f8f9fa;border-radius:4px;font-family:-apple-system,sans-serif;">
  <div style="color:#787c7e;font-size:13px;margin-bottom:8px;">
    <strong>u/Rileybeebs</strong> on r/webdev · ↑1
  </div>
  <div style="color:#1a1a1b;font-size:14px;line-height:1.5;">The Clearbit free logo API will be shut down on 12/1/25. Reference this changelog for alternatives.</div>
  <a href="https://www.reddit.com/r/webdev/comments/1je6rb2/clearbit_fee_logo_api_deprecation/?ref=nubela.co" style="color:#787c7e;font-size:12px;">source</a>
</div>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<h2 id="ninjapear-review-the-free-default-id-start-with">NinjaPear review: the free default I’d start with</h2>
<p>I lead GTM at NinjaPear, so yes, I have a point of view here. I am not pretending otherwise.</p>
<h3 id="what-i-like">What I like</h3>
<p><a href="https://nubela.co/logo?ref=nubela.co">NinjaPear’s company logo API</a> does the core job most buyers actually need: <strong>domain in, logo out</strong>.</p>
<p>The public page is plain about the offer:</p>
<ul>
<li><strong>Free forever</strong></li>
<li><strong>300 requests per minute</strong></li>
<li><strong>~12.96M requests/month equivalent if you annualize that throughput</strong></li>
<li><strong>No monthly fee</strong></li>
<li><strong>No attribution required</strong></li>
<li><strong>PNG output</strong></li>
</ul>
<p>That is a good product decision because it stays in its lane.</p>
<p><img alt="NinjaPear logo API page screenshot" src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2026/04/81da66c503f8.webp" /></p>
<p>The request shape is also simple:</p>
<pre><code class="language-bash">curl -X GET \
  &quot;https://nubela.co/api/v1/company/logo?website=https://stripe.com&quot; \
  -H &quot;Authorization: Bearer YOUR_API_KEY&quot; \
  --output stripe-logo.png
</code></pre>
<p>You can wire that into an app in minutes.</p>
<h3 id="what-i-dont-like">What I don’t like</h3>
<p>It is not trying to be a rich brand asset platform. That is good for focus, but it is still a limit.</p>
<p>If you need SVG, multiple themes, symbols, or deeper asset control, this is not the same class of tool. It is a blunt instrument, and I mean that as praise.</p>
<h3 id="best-for">Best for</h3>
<ul>
<li>Internal tools</li>
<li>CRM enrichment</li>
<li>Startup dashboards</li>
<li>Notification and inbox UIs</li>
<li>MVPs where shipping matters more than design perfectionism</li>
</ul>
<h3 id="my-honest-take">My honest take</h3>
<p>If your use case is boring, NinjaPear is better precisely because it stays boring.</p>
<p>And yes, I think the <strong>300 req/min versus Logo.dev’s 500K, 1M, and 5M monthly caps</strong> is a bigger selling point than most buyers realize. For simple logo jobs, that volume headroom is kind of ridiculous for a free tool.</p>
<h2 id="logodev-review-excellent-but-most-teams-are-buying-polish-they-dont-need">Logo.dev review: excellent, but most teams are buying polish they don’t need</h2>
<p>I like Logo.dev. I just do not think every buyer needs to pay for it.</p>
<h3 id="what-i-like_1">What I like</h3>
<p>Logo.dev has clear product focus. It also has the most obvious migration path after Clearbit’s shutdown.</p>
<p>Its public pricing and docs make the pitch clear:</p>
<ul>
<li>SVG support</li>
<li>dark mode and theme options</li>
<li>retina and size controls</li>
<li>ticker and brand search products</li>
<li>cleaner frontend ergonomics for customer-facing apps</li>
</ul>
<p><img alt="Logo.dev pricing screenshot" src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2026/04/e509eba55f1c-1.webp" /></p>
<p>That is real value if your frontend team actually cares about rendering details.</p>
<h3 id="what-i-dont-like_1">What I don’t like</h3>
<p>The free plan requiring attribution is annoying.</p>
<p>I’ll say it plainly: if I have to add your attribution to my public UI to keep free access, that is not free. That is visual debt. Their docs are explicit that the attribution link must be on a public production site and pass referrer data. For apps behind login, they suggest putting it on a public marketing page or about page.</p>
<p>That is a reasonable trade from their side. It is still a trade.</p>
<p>Pricing is also reasonable for a paid tool, but many teams are still solving a <code>$0</code> problem with a <code>$400</code> or <code>$1,800</code> answer.</p>
<h3 id="best-for_1">Best for</h3>
<ul>
<li>Teams migrating from Clearbit and wanting the least-friction replacement</li>
<li>Customer-facing SaaS where SVG or theme control truly matters</li>
<li>Products where polish is part of the product value</li>
</ul>
<h3 id="my-honest-take_1">My honest take</h3>
<p>Logo.dev is good. I just think a lot of teams buying it are solving a $0 problem with a $400 to $1,800 answer.</p>
<h2 id="brandfetch-review-rich-as-hell-but-often-overkill-for-simple-logo-use-cases">Brandfetch review: rich as hell, but often overkill for simple logo use cases</h2>
<p>Brandfetch solves a broader problem than many buyers think.</p>
<h3 id="what-i-like_2">What I like</h3>
<p>Brandfetch is stronger when logos are only one part of the job.</p>
<p>Their pricing page positions the free Logo API as the easy way to embed logos in your app, while the broader product gives you access to much deeper brand attributes. Their docs publish concrete limits too: <strong>500,000 requests per month</strong> as a fair-use soft limit, plus <strong>1,000 requests every 5 minutes per IP</strong> and <strong>2,400 requests every 5 minutes per customer</strong>.</p>
<p>That specificity is useful.</p>
<p><img alt="Brandfetch rate limit docs screenshot" src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2026/04/8baa6c72124f.webp" /></p>
<h3 id="what-i-dont-like_2">What I don’t like</h3>
<p>The deeper you go into Brandfetch, the clearer it becomes this is not just a logo utility.</p>
<p>That is fine if you need it. It is overkill if you do not.</p>
<p>If your product only needs a logo next to a company name, the ROI gets muddy fast.</p>
<h3 id="best-for_2">Best for</h3>
<ul>
<li>Fintech transaction enrichment</li>
<li>Brand-aware UIs</li>
<li>Products where icons, colors, fonts, and symbols are part of the real UX</li>
</ul>
<h3 id="my-honest-take_2">My honest take</h3>
<p>If all you need is a logo, Brandfetch can feel like bringing a marching band to a two-person meeting.</p>
<h2 id="the-buying-criteria-most-pages-gloss-over">The buying criteria most pages gloss over</h2>
<p>This is the section I wish more comparison pages wrote honestly.</p>
<h3 id="attribution-is-not-a-footnote">Attribution is not a footnote</h3>
<p>For some teams, attribution is fine.</p>
<p>For others, it is product debt. If you are building customer-facing software and care about a clean UI, “free with attribution” is not free. You are paying with clutter and exceptions.</p>
<h3 id="monthly-caps-vs-burst-throughput">Monthly caps vs burst throughput</h3>
<p>People mix these up all the time.</p>
<ul>
<li><strong>Monthly caps</strong> matter for embedded dashboards, account lists, and repeated daily usage.</li>
<li><strong>Throughput limits</strong> matter for imports, backfills, and bursty jobs.</li>
</ul>
<p>NinjaPear publishes <strong>300 req/min</strong>. That is <strong>~12.96M requests/month</strong> if you convert the rate into a 30-day equivalent. Brandfetch publishes <strong>500K/month fair use</strong>, plus <strong>1,000 per 5 min per IP</strong> and <strong>2,400 per 5 min per customer</strong>. Logo.dev pricing is mostly framed around <strong>500K, 1M, and 5M monthly request caps</strong>.</p>
<p>Those are different constraints. Read them that way.</p>
<h3 id="caching-policy-is-half-the-product">Caching policy is half the product</h3>
<p>Ask these questions before you integrate anything:</p>
<ul>
<li>Can I cache locally?</li>
<li>For how long?</li>
<li>What happens if terms change?</li>
<li>What happens if the endpoint disappears?</li>
<li>How painful is migration?</li>
</ul>
<p>People treat caching like fine print. It is not. It is half the economics.</p>
<h3 id="migration-risk-is-real">Migration risk is real</h3>
<p>Clearbit proved this category can go from “freebie” to roadmap debt fast.</p>
<p>A tiny endpoint gets embedded into your product before anyone notices. Then it vanishes, and suddenly five teams care.</p>
<h2 id="hands-on-benchmark-plan-and-proprietary-proof">Hands-on benchmark plan and proprietary proof</h2>
<p>I am not going to fake a giant benchmark. If I did not run it, I will not pretend I did.</p>
<p>What I can do is give you a benchmark plan that your team can run in an afternoon.</p>
<h3 id="25-domain-benchmark-sheet">25-domain benchmark sheet</h3>
<p>Here is the test set I would use across mainstream SaaS, public companies, fintechs, obscure startups, and annoying edge cases:</p>
<table>
<thead>
<tr>
<th style="text-align: right;">#</th>
<th>Domain</th>
<th>Category</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: right;">1</td>
<td>stripe.com</td>
<td>Fintech / SaaS</td>
</tr>
<tr>
<td style="text-align: right;">2</td>
<td>shopify.com</td>
<td>SaaS</td>
</tr>
<tr>
<td style="text-align: right;">3</td>
<td>figma.com</td>
<td>SaaS</td>
</tr>
<tr>
<td style="text-align: right;">4</td>
<td>notion.so</td>
<td>SaaS</td>
</tr>
<tr>
<td style="text-align: right;">5</td>
<td>slack.com</td>
<td>SaaS</td>
</tr>
<tr>
<td style="text-align: right;">6</td>
<td>zoom.us</td>
<td>SaaS</td>
</tr>
<tr>
<td style="text-align: right;">7</td>
<td>openai.com</td>
<td>AI</td>
</tr>
<tr>
<td style="text-align: right;">8</td>
<td>anthropic.com</td>
<td>AI</td>
</tr>
<tr>
<td style="text-align: right;">9</td>
<td>rippling.com</td>
<td>HR tech</td>
</tr>
<tr>
<td style="text-align: right;">10</td>
<td>brex.com</td>
<td>Fintech</td>
</tr>
<tr>
<td style="text-align: right;">11</td>
<td>ramp.com</td>
<td>Fintech</td>
</tr>
<tr>
<td style="text-align: right;">12</td>
<td>plaid.com</td>
<td>Fintech</td>
</tr>
<tr>
<td style="text-align: right;">13</td>
<td>mercury.com</td>
<td>Fintech</td>
</tr>
<tr>
<td style="text-align: right;">14</td>
<td>canva.com</td>
<td>Design</td>
</tr>
<tr>
<td style="text-align: right;">15</td>
<td>miro.com</td>
<td>SaaS</td>
</tr>
<tr>
<td style="text-align: right;">16</td>
<td>datadog.com</td>
<td>Public tech</td>
</tr>
<tr>
<td style="text-align: right;">17</td>
<td>snowflake.com</td>
<td>Public tech</td>
</tr>
<tr>
<td style="text-align: right;">18</td>
<td>cloudflare.com</td>
<td>Public tech</td>
</tr>
<tr>
<td style="text-align: right;">19</td>
<td>nike.com</td>
<td>Consumer</td>
</tr>
<tr>
<td style="text-align: right;">20</td>
<td>samsung.com</td>
<td>Consumer electronics</td>
</tr>
<tr>
<td style="text-align: right;">21</td>
<td>toyota.com</td>
<td>Enterprise / public</td>
</tr>
<tr>
<td style="text-align: right;">22</td>
<td>perplexity.ai</td>
<td>AI</td>
</tr>
<tr>
<td style="text-align: right;">23</td>
<td>linear.app</td>
<td>Startup</td>
</tr>
<tr>
<td style="text-align: right;">24</td>
<td>granola.ai</td>
<td>Startup</td>
</tr>
<tr>
<td style="text-align: right;">25</td>
<td>levels.fyi</td>
<td>Edge case brand / text-heavy logo</td>
</tr>
</tbody>
</table>
<p>For each provider, record:</p>
<ul>
<li>success or failure</li>
<li>output format</li>
<li>visible correctness</li>
<li>fallback quality</li>
<li>implementation friction</li>
</ul>
<p>If I were handing this to an engineer, I would also add <strong>cacheability</strong> and <strong>rate-limit behavior under concurrency</strong>.</p>
<h3 id="side-by-side-output-gallery">Side-by-side output gallery</h3>
<p>You do not need marketing copy when your eyes can do the work.</p>
<p>Test these 8 domains first:</p>
<ul>
<li>stripe.com</li>
<li>shopify.com</li>
<li>figma.com</li>
<li>notion.so</li>
<li>brex.com</li>
<li>ramp.com</li>
<li>granola.ai</li>
<li>levels.fyi</li>
</ul>
<p>Then compare:</p>
<ul>
<li>Does the logo render?</li>
<li>Is it correct?</li>
<li>Is the fallback usable?</li>
<li>Does the endpoint need auth, attribution, or extra parameters to look good?</li>
</ul>
<p>That gallery will cut through a lot of nonsense.</p>
<h3 id="real-implementation-snippets">Real implementation snippets</h3>
<p>Here are the minimum viable integrations.</p>
<h4 id="ninjapear">NinjaPear</h4>
<pre><code class="language-bash">curl -X GET \
  &quot;https://nubela.co/api/v1/company/logo?website=https://stripe.com&quot; \
  -H &quot;Authorization: Bearer YOUR_API_KEY&quot; \
  --output stripe-logo.png
</code></pre>
<h4 id="logodev">Logo.dev</h4>
<pre><code class="language-html">&lt;img src=&quot;https://img.logo.dev/stripe.com?token=YOUR_PUBLIC_TOKEN&amp;size=128&quot; alt=&quot;Stripe logo&quot; /&gt;
</code></pre>
<p>If you are migrating from Clearbit-style URLs, that is part of the appeal.</p>
<h4 id="brandfetch">Brandfetch</h4>
<pre><code class="language-bash">curl -X GET \
  &quot;https://cdn.brandfetch.io/stripe.com&quot; \
  -H &quot;Authorization: Bearer YOUR_API_KEY&quot;
</code></pre>
<p>If you are evaluating Brandfetch seriously, do not stop at the logo endpoint. Test the broader brand attributes too. That is where the value either becomes obvious or unnecessary.</p>
<h3 id="cost-scenario-table">Cost scenario table</h3>
<p>This is where overbuying gets obvious.</p>
<table>
<thead>
<tr>
<th style="text-align: right;">Monthly requests</th>
<th style="text-align: right;">NinjaPear</th>
<th style="text-align: right;">Logo.dev Community</th>
<th style="text-align: right;">Logo.dev Startup</th>
<th style="text-align: right;">Logo.dev Pro</th>
<th style="text-align: right;">Brandfetch Logo API</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: right;">100K</td>
<td style="text-align: right;">$0</td>
<td style="text-align: right;">$0 with attribution</td>
<td style="text-align: right;">$400/year overkill</td>
<td style="text-align: right;">$1,800/year absurd</td>
<td style="text-align: right;">$0 under fair use</td>
</tr>
<tr>
<td style="text-align: right;">500K</td>
<td style="text-align: right;">$0</td>
<td style="text-align: right;">$0 with attribution</td>
<td style="text-align: right;">$400/year optional</td>
<td style="text-align: right;">$1,800/year overkill</td>
<td style="text-align: right;">$0 under fair use</td>
</tr>
<tr>
<td style="text-align: right;">1M</td>
<td style="text-align: right;">$0, if 300 req/min fits your traffic shape</td>
<td style="text-align: right;">Over cap</td>
<td style="text-align: right;">$400/year</td>
<td style="text-align: right;">$1,800/year overkill unless you need extras</td>
<td style="text-align: right;">Likely needs discussion if traffic shape is bursty</td>
</tr>
<tr>
<td style="text-align: right;">5M</td>
<td style="text-align: right;">$0, if request pattern and caching make sense</td>
<td style="text-align: right;">Over cap</td>
<td style="text-align: right;">Over cap</td>
<td style="text-align: right;">$1,800/year</td>
<td style="text-align: right;">Likely enterprise conversation</td>
</tr>
<tr>
<td style="text-align: right;">~12.96M equivalent</td>
<td style="text-align: right;">$0 at published 300 req/min throughput</td>
<td style="text-align: right;">Over cap</td>
<td style="text-align: right;">Over cap</td>
<td style="text-align: right;">Over cap</td>
<td style="text-align: right;">Over fair-use positioning</td>
</tr>
</tbody>
</table>
<p>If the use case is simple, the cost delta gets hard to justify very quickly.</p>
<h2 id="who-should-use-what-in-2026">Who should use what in 2026</h2>
<p>This part is simpler than people make it.</p>
<h3 id="use-ninjapear-if">Use NinjaPear if...</h3>
<ul>
<li>You want the cheapest sane answer</li>
<li>You just need <code>domain -&gt; logo</code></li>
<li>PNG is enough</li>
<li>You hate attribution clutter</li>
<li>You are building internal tools, CRMs, alerts, dashboards, or MVPs</li>
</ul>
<h3 id="use-logodev-if">Use Logo.dev if...</h3>
<ul>
<li>You need SVG or theme-aware rendering</li>
<li>You want the smoothest Clearbit replacement path</li>
<li>Your product team genuinely cares about polish</li>
<li>Those frontend details are real requirements, not nice-to-have fantasies</li>
</ul>
<h3 id="use-brandfetch-if">Use Brandfetch if...</h3>
<ul>
<li>You want brand colors, fonts, symbols, icons, or richer brand context</li>
<li>Your product is more brand surface than utility surface</li>
<li>You are doing transaction enrichment or brand-aware UX</li>
</ul>
<h3 id="do-not-do-something-dumb-just-because-a-landing-page-looked-pretty">Do not do something dumb just because a landing page looked pretty</h3>
<p>Most teams are overthinking this.</p>
<p>If you need a logo next to a company name, stop shopping like you are licensing Getty Images. Use the free option that solves the boring problem cleanly. Pay only when your product truly needs the extra control.</p>
<p>If you want the default answer, here it is one last time: start with <strong>NinjaPear</strong> for a boring <code>company logo api</code> use case, move to <strong>Logo.dev</strong> only when SVG, theme variants, or Clearbit migration pressure are real, and use <strong>Brandfetch</strong> when logos are just one part of a larger brand-data job.</p>
<p>Then do one disciplined thing before you ship: run the 25-domain benchmark above and write down where caching, attribution, and burst limits will bite you. That hour of honesty will save you months of avoidable migration debt.</p>
<!--kg-card-end: html-->
 ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ Ultimate Guide to Reverse Email Lookup Tools of 2026, UPDATED for CEOs ]]></title>
        <description><![CDATA[ 2026 reverse email lookup buyer matrix
Adjust the weights. Flip the LinkedIn-free requirement. Watch the ranking change.

One-off lookup
OSINT investigation
B2B work-email enrichment
Support / inbound triage



Data freshness7
Data richness7
Pricing6
Scalability8
Developer friendliness8
Stability8
Legal clarity9
Must be LinkedIn-free







Turn on LinkedIn-free and the ranking punishes vague legal ]]></description>
        <link>https://nubela.co/blog/ultimate-guide-reverse-email-lookup-tools-2026/</link>
        <guid isPermaLink="false">69d624861ff0fe00015814a6</guid>
        <category><![CDATA[ reverse email lookup ]]></category>
        <dc:creator><![CDATA[ Alex Meyer ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2026/04/alex.png"/>
        <pubDate>Wed, 08 Apr 2026 17:48:54 +0800</pubDate>
        <media:content url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2026/04/cover_4-6.webp" medium="image"/>
        <content:encoded><![CDATA[ 
<!--kg-card-begin: html-->
<div id="reverse-email-buyer-matrix" style="border:1px solid #e5e7eb;border-radius:16px;padding:20px;margin:20px 0 28px 0;background:linear-gradient(180deg,#fafafa 0%,#fff 100%);font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;">
  <div style="font-size:24px;font-weight:800;margin-bottom:6px;color:#111827;">2026 reverse email lookup buyer matrix</div>
  <div style="font-size:14px;color:#4b5563;margin-bottom:16px;">Adjust the weights. Flip the LinkedIn-free requirement. Watch the ranking change.</div>
  <div style="display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px;">
    <button class="rel-tab active" data-usecase="oneoff" style="padding:8px 12px;border-radius:999px;border:1px solid #d1d5db;background:#111827;color:#fff;cursor:pointer;">One-off lookup</button>
    <button class="rel-tab" data-usecase="osint" style="padding:8px 12px;border-radius:999px;border:1px solid #d1d5db;background:#fff;color:#111827;cursor:pointer;">OSINT investigation</button>
    <button class="rel-tab" data-usecase="b2b" style="padding:8px 12px;border-radius:999px;border:1px solid #d1d5db;background:#fff;color:#111827;cursor:pointer;">B2B work-email enrichment</button>
    <button class="rel-tab" data-usecase="support" style="padding:8px 12px;border-radius:999px;border:1px solid #d1d5db;background:#fff;color:#111827;cursor:pointer;">Support / inbound triage</button>
  </div>
  <div style="display:grid;grid-template-columns:1.2fr 1fr;gap:20px;align-items:start;">
    <div>
      <div style="display:grid;grid-template-columns:1fr 80px;gap:10px;align-items:center;margin-bottom:8px;"><label>Data freshness</label><span id="w-freshness-v" style="text-align:right;font-weight:700;">7</span></div><input id="w-freshness" type="range" min="0" max="10" value="7" style="width:100%;margin-bottom:10px;">
      <div style="display:grid;grid-template-columns:1fr 80px;gap:10px;align-items:center;margin-bottom:8px;"><label>Data richness</label><span id="w-richness-v" style="text-align:right;font-weight:700;">7</span></div><input id="w-richness" type="range" min="0" max="10" value="7" style="width:100%;margin-bottom:10px;">
      <div style="display:grid;grid-template-columns:1fr 80px;gap:10px;align-items:center;margin-bottom:8px;"><label>Pricing</label><span id="w-pricing-v" style="text-align:right;font-weight:700;">6</span></div><input id="w-pricing" type="range" min="0" max="10" value="6" style="width:100%;margin-bottom:10px;">
      <div style="display:grid;grid-template-columns:1fr 80px;gap:10px;align-items:center;margin-bottom:8px;"><label>Scalability</label><span id="w-scale-v" style="text-align:right;font-weight:700;">8</span></div><input id="w-scale" type="range" min="0" max="10" value="8" style="width:100%;margin-bottom:10px;">
      <div style="display:grid;grid-template-columns:1fr 80px;gap:10px;align-items:center;margin-bottom:8px;"><label>Developer friendliness</label><span id="w-dev-v" style="text-align:right;font-weight:700;">8</span></div><input id="w-dev" type="range" min="0" max="10" value="8" style="width:100%;margin-bottom:10px;">
      <div style="display:grid;grid-template-columns:1fr 80px;gap:10px;align-items:center;margin-bottom:8px;"><label>Stability</label><span id="w-stability-v" style="text-align:right;font-weight:700;">8</span></div><input id="w-stability" type="range" min="0" max="10" value="8" style="width:100%;margin-bottom:10px;">
      <div style="display:grid;grid-template-columns:1fr 80px;gap:10px;align-items:center;margin-bottom:8px;"><label>Legal clarity</label><span id="w-legal-v" style="text-align:right;font-weight:700;">9</span></div><input id="w-legal" type="range" min="0" max="10" value="9" style="width:100%;margin-bottom:12px;">
      <label style="display:flex;align-items:center;gap:8px;font-weight:600;margin-top:8px;"><input id="linkedin-free" type="checkbox"> Must be LinkedIn-free</label>
    </div>
    <div>
      <div id="ranking"></div>
      <div id="winner-panel" style="margin-top:14px;padding:14px;border:1px solid #e5e7eb;border-radius:12px;background:#f9fafb;"></div>
    </div>
  </div>
  <div style="margin-top:18px;padding-top:14px;border-top:1px solid #e5e7eb;display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;">
    <div style="font-size:13px;color:#6b7280;">Turn on LinkedIn-free and the ranking punishes vague legal posture hard. Good.</div>
    <a href="#download-buyer-kit" style="display:inline-block;background:#7c3aed;color:#fff;text-decoration:none;padding:10px 14px;border-radius:10px;font-weight:700;">Download the 2026 Buyer Kit</a>
  </div>
</div>

<script>
(function(){
  const tools = {
    Mailmeteor: {freshness:3.6, richness:2.7, pricing:5, scale:1.5, dev:1.5, stability:4.2, legal:4.2, linkedinFree:true,
      break:'Workflow depth',
      why:'Great for quick browser checks. Falls apart the second you want process or an API.'},
    Epieos: {freshness:4.1, richness:4.6, pricing:2.4, scale:2.2, dev:2.1, stability:3.4, legal:1.3, linkedinFree:false,
      break:'Request caps and legal posture',
      why:'Strong for investigator-style footprinting. Wrong substrate for GTM.'},
    Icypeas: {freshness:4.1, richness:4.0, pricing:3.4, scale:4.0, dev:4.7, stability:4.0, legal:2.8, linkedinFree:false,
      break:'Credit burn and compliance questions',
      why:'Transparent pricing and real API posture. Still worth asking where the data path comes from.'},
    Tomba: {freshness:3.2, richness:2.4, pricing:3.8, scale:3.3, dev:3.8, stability:3.7, legal:3.0, linkedinFree:true,
      break:'Thin reverse identity depth',
      why:'Useful in email workflows, thinner as a true reverse identity tool.'},
    NinjaPear: {freshness:4.3, richness:4.2, pricing:4.0, scale:4.8, dev:4.9, stability:4.3, legal:5.0, linkedinFree:true,
      break:'Narrower fit for personal-email consumer lookup',
      why:'Best fit when the input is a B2B work email and the output needs to feed a real workflow.'}
  };
  const presets = {
    oneoff:{freshness:5, richness:5, pricing:9, scale:2, dev:1, stability:5, legal:6},
    osint:{freshness:7, richness:10, pricing:4, scale:3, dev:3, stability:4, legal:5},
    b2b:{freshness:8, richness:8, pricing:6, scale:10, dev:10, stability:8, legal:10},
    support:{freshness:7, richness:5, pricing:8, scale:6, dev:5, stability:7, legal:8}
  };
  const ids = ['freshness','richness','pricing','scale','dev','stability','legal'];
  function stars(v){ const full=Math.round(v); return '★'.repeat(full)+'☆'.repeat(5-full); }
  function setPreset(name){ ids.forEach(k=>{document.getElementById('w-'+k).value=presets[name][k]; document.getElementById('w-'+k+'-v').textContent=presets[name][k];}); recalc(); }
  function scoreTool(t){ let total=0,w=0; ids.forEach(k=>{const weight=+document.getElementById('w-'+k).value; total += t[k]*weight; w+=weight;}); let s=(total/w); if(document.getElementById('linkedin-free').checked && !t.linkedinFree){ s -= 2.2; } return Math.max(0,Math.min(5,s)); }
  function recalc(){
    ids.forEach(k=>document.getElementById('w-'+k+'-v').textContent=document.getElementById('w-'+k).value);
    const ranked = Object.entries(tools).map(([name,t])=>({name,t,score:scoreTool(t)})).sort((a,b)=>b.score-a.score);
    document.getElementById('ranking').innerHTML = ranked.map((x,i)=>`<div data-tool="${x.name}" class="tool-card" style="border:1px solid #e5e7eb;border-radius:12px;padding:12px;margin-bottom:10px;cursor:pointer;background:${i===0?'#f5f3ff':'#fff'};"><div style="display:flex;justify-content:space-between;gap:12px;"><div><strong>${i+1}. ${x.name}</strong><div style="font-size:13px;color:#6b7280;">What breaks first: ${x.t.break}</div></div><div style="text-align:right;"><div style="font-weight:800;">${x.score.toFixed(2)}/5</div><div style="font-size:12px;color:#6b7280;">${stars(x.score)}</div></div></div></div>`).join('');
    const win = ranked[0];
    document.getElementById('winner-panel').innerHTML = `<div style="font-size:13px;color:#6b7280;margin-bottom:4px;">Why this tool won</div><div style="font-size:18px;font-weight:800;margin-bottom:6px;">${win.name}</div><div style="font-size:14px;line-height:1.5;color:#374151;">${win.t.why}</div>`;
    document.querySelectorAll('.tool-card').forEach(el=>el.onclick=()=>{const n=el.getAttribute('data-tool'); const t=tools[n]; document.getElementById('winner-panel').innerHTML=`<div style="font-size:13px;color:#6b7280;margin-bottom:4px;">Expanded rationale</div><div style="font-size:18px;font-weight:800;margin-bottom:6px;">${n}</div><div style="font-size:14px;line-height:1.55;color:#374151;">${t.why}</div><ul style="margin:10px 0 0 18px;color:#374151;font-size:14px;"><li>Freshness: ${t.freshness}/5</li><li>Richness: ${t.richness}/5</li><li>Pricing: ${t.pricing}/5</li><li>Scalability: ${t.scale}/5</li><li>Developer friendliness: ${t.dev}/5</li><li>Stability: ${t.stability}/5</li><li>Legal clarity: ${t.legal}/5</li></ul>`;});
  }
  document.querySelectorAll('.rel-tab').forEach(btn=>btn.onclick=()=>{document.querySelectorAll('.rel-tab').forEach(b=>{b.style.background='#fff';b.style.color='#111827';}); btn.style.background='#111827';btn.style.color='#fff'; setPreset(btn.dataset.usecase);});
  ids.forEach(k=>document.getElementById('w-'+k).oninput=recalc);
  document.getElementById('linkedin-free').onchange=recalc;
  setPreset('b2b');
})();
</script>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<p>I spent $387 on reverse email lookup tools and reworked this guide because the old buying logic is dead.</p>
<p>If you want the short version: most reverse email lookup tools are not in the same market. Some are free toys. Some are OSINT tools. Some are real APIs. And after <a href="https://nubela.co/blog/goodbye-proxycurl/">Goodbye Proxycurl</a>, the LinkedIn question is no longer a footnote.</p>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<div style="border-left:3px solid #ff4500;padding:12px 16px;margin:16px 0;background:#f8f9fa;border-radius:4px;font-family:-apple-system,sans-serif;">
  <div style="color:#787c7e;font-size:13px;margin-bottom:8px;">
    <strong>u/Crafty-Scholar-3106</strong> on r/hacking · ↑255
  </div>
  <div style="color:#1a1a1b;font-size:14px;line-height:1.5;">“A couple times I’ve gotten into nasty arguments on other forums, and after I walk away I’ll get a smarmy little message that says ‘hi [my name]! Good chat with you today [my cell, my email, etc.]’ ... it’s highly effective at creeping me out and making me feel wary.”</div>
  <a href="https://www.reddit.com/r/hacking/comments/zpz61c/how_do_people_on_reddit_reverse_lookup_my_name/?ref=nubela.co" style="color:#787c7e;font-size:12px;">source</a>
</div>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<p>So this is my 2026 reverse email lookup guide for people who actually need to choose well.</p>
<h2 id="tldr">TL;DR</h2>
<p>If you only remember one thing, remember this: <strong>buy for the job</strong>.</p>
<ul>
<li>Need a free reverse email lookup check: use Mailmeteor.</li>
<li>Need OSINT depth: use Epieos.</li>
<li>Need transparent credit math in an API product: Icypeas is decent.</li>
<li>Need B2B work-email reverse email lookup you can actually deploy: NinjaPear.</li>
</ul>
<h3 id="tldr-summary-comparison-table">TL;DR summary comparison table</h3>
<table>
<thead>
<tr>
<th>Factor</th>
<th>Mailmeteor</th>
<th>Epieos</th>
<th>Icypeas</th>
<th>NinjaPear</th>
<th>Winner</th>
</tr>
</thead>
<tbody>
<tr>
<td>Best use case</td>
<td>Free one-off checks</td>
<td>OSINT investigations</td>
<td>API-first legacy enrichment</td>
<td>B2B work-email enrichment</td>
<td>Depends on use case</td>
</tr>
<tr>
<td>Data freshness</td>
<td>⭐⭐⭐☆☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>Tie: Icypeas / NinjaPear</td>
</tr>
<tr>
<td>Data richness</td>
<td>⭐⭐☆☆☆</td>
<td>⭐⭐⭐⭐⭐</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>Epieos</td>
</tr>
<tr>
<td>Pricing</td>
<td>⭐⭐⭐⭐⭐</td>
<td>⭐⭐☆☆☆</td>
<td>⭐⭐⭐☆☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>Mailmeteor</td>
</tr>
<tr>
<td>Scalability</td>
<td>⭐☆☆☆☆</td>
<td>⭐⭐☆☆☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐⭐</td>
<td>NinjaPear</td>
</tr>
<tr>
<td>Developer friendliness</td>
<td>⭐☆☆☆☆</td>
<td>⭐⭐☆☆☆</td>
<td>⭐⭐⭐⭐⭐</td>
<td>⭐⭐⭐⭐⭐</td>
<td>Tie: Icypeas / NinjaPear</td>
</tr>
<tr>
<td>Stability</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐☆☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>Tie</td>
</tr>
<tr>
<td>Legal clarity</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐☆☆☆☆</td>
<td>⭐⭐☆☆☆</td>
<td>⭐⭐⭐⭐⭐</td>
<td>NinjaPear</td>
</tr>
<tr>
<td>Overall score</td>
<td><strong>3.00/5</strong></td>
<td><strong>3.00/5</strong></td>
<td><strong>3.71/5</strong></td>
<td><strong>4.29/5</strong></td>
<td><strong>NinjaPear</strong></td>
</tr>
</tbody>
</table>
<h2 id="quick-verdict-what-id-use-for-reverse-email-lookup-in-2026">Quick verdict: what I'd use for reverse email lookup in 2026</h2>
<h3 id="best-free-one-off-check-mailmeteor">Best free one-off check: Mailmeteor</h3>
<p>If all you need is a quick reverse email lookup on a professional email, <a href="https://mailmeteor.com/tools/reverse-email-lookup?ref=nubela.co" rel="nofollow">Mailmeteor</a> is fine.</p>
<p>It is free. It needs no sign-up. And it is honest about the job: quick browser lookup, not infrastructure.</p>
<h3 id="best-for-osint-investigations-epieos">Best for OSINT investigations: Epieos</h3>
<p><a href="https://epieos.com/pricing?ref=nubela.co" rel="nofollow">Epieos</a> is built for investigators, not GTM teams.</p>
<p>Its pricing page offers an <strong>Osinter</strong> plan for <strong>€29.99/month</strong>, with <strong>all modules including LinkedIn</strong> and <strong>30 full-access requests/month</strong>. Useful for investigations. Wrong for revenue workflows.</p>
<h3 id="best-workflowapi-oriented-option-among-the-legacy-crowd-icypeas">Best workflow/API-oriented option among the legacy crowd: Icypeas</h3>
<p><a href="https://www.icypeas.com/pricing?ref=nubela.co" rel="nofollow">Icypeas</a> gets points for not hiding the math.</p>
<p>It states <strong>Reverse Email Lookup = 10 credits per found profile</strong>. Good. Now I can model cost instead of guessing.</p>
<h3 id="best-linkedin-free-option-for-b2b-work-emails-ninjapear-person-profile-endpoint">Best LinkedIn-free option for B2B work emails: NinjaPear Person Profile Endpoint</h3>
<p>If the job is <strong>reverse email lookup for a B2B work email</strong>, <a href="https://nubela.co/employee-api?ref=nubela.co">NinjaPear Person Profile Endpoint</a> is the best option here.</p>
<p>Why? Because it resolves professional identity from public web data and explicitly does <strong>not</strong> scrape LinkedIn. In 2026, that matters a lot.</p>
<h2 id="2026-update-why-this-article-exists-and-why-the-2025-advice-is-dead">2026 update: why this article exists and why the 2025 advice is dead</h2>
<h3 id="my-previous-reverse-email-lookup-recommendations-are-outdated-now">My previous reverse email lookup recommendations are outdated now</h3>
<p>We already had advice on reverse email lookup.</p>
<p>Parts of it are dead now. So I am killing it instead of pretending nothing happened.</p>
<h3 id="proxycurl-is-dead-sapiengraph-is-dead-heres-the-actual-reason">Proxycurl is dead. Sapiengraph is dead. Here's the actual reason</h3>
<p>The key line from the shutdown post is simple: <strong>“In January earlier this year (2025), LinkedIn filed a lawsuit against Proxycurl. Today, we are shutting Proxycurl down.”</strong></p>
<p>That is the hinge.</p>
<p>The same post says Proxycurl had grown to a <strong>~$10M revenue business</strong> before the shutdown. So if your reverse email lookup stack depends on LinkedIn-shaped data, stop treating that as a tiny implementation detail.</p>
<p>It is not.</p>
<p><img alt="Proxycurl shutdown post, showing the 2025 legal turning point for reverse email lookup buyers" src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2026/04/229776e6c74b-2.webp" /></p>
<h3 id="the-market-still-hasnt-digested-the-linkedin-terms-of-service-risk">The market still hasn't digested the LinkedIn Terms of Service risk</h3>
<p>This is the part most comparison posts skip.</p>
<p>A lot of enrichment products were built on LinkedIn-shaped data. Some vendors say so. Some do not. Some hide behind fuzzy language.</p>
<p>But “public profile” is not the same thing as “low-risk for commercial use.” If a vendor looks magical and never explains the substrate, ask harder questions.</p>
<h2 id="the-comparison-table-that-actually-matters">The comparison table that actually matters</h2>
<h3 id="reverse-email-lookup-scorecard-with-the-column-most-sites-dodge">Reverse email lookup scorecard, with the column most sites dodge</h3>
<table>
<thead>
<tr>
<th>Tool</th>
<th>Data Freshness</th>
<th>Data Richness</th>
<th>Scalability</th>
<th>Pricing</th>
<th>Dev Friendliness</th>
<th>Stability</th>
<th>Legal Clarity</th>
<th>Avg Score</th>
</tr>
</thead>
<tbody>
<tr>
<td>Mailmeteor</td>
<td>⭐⭐⭐☆☆</td>
<td>⭐⭐☆☆☆</td>
<td>⭐☆☆☆☆</td>
<td>⭐⭐⭐⭐⭐</td>
<td>⭐☆☆☆☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>3.00/5</td>
</tr>
<tr>
<td>Epieos</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐⭐</td>
<td>⭐⭐☆☆☆</td>
<td>⭐⭐☆☆☆</td>
<td>⭐⭐☆☆☆</td>
<td>⭐⭐⭐☆☆</td>
<td>⭐☆☆☆☆</td>
<td>3.00/5</td>
</tr>
<tr>
<td>Icypeas</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐☆☆</td>
<td>⭐⭐⭐⭐⭐</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐☆☆☆</td>
<td>3.71/5</td>
</tr>
<tr>
<td>NinjaPear</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐⭐</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐⭐</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐⭐</td>
<td>4.29/5</td>
</tr>
</tbody>
</table>
<p>These scores are based on public pricing, public product positioning, product docs, and one thing most lists still dodge: legal clarity.</p>
<h3 id="what-breaks-first-when-you-scale">What breaks first when you scale</h3>
<table>
<thead>
<tr>
<th>Tool</th>
<th>What breaks first</th>
<th>Why it matters</th>
</tr>
</thead>
<tbody>
<tr>
<td>Mailmeteor</td>
<td>Workflow depth</td>
<td>Great widget, not a system.</td>
</tr>
<tr>
<td>Epieos</td>
<td>Request caps, ops fit, and LinkedIn risk</td>
<td><strong>30 full-access requests/month</strong> tells you exactly what this is.</td>
</tr>
<tr>
<td>Icypeas</td>
<td>Credit burn and compliance diligence</td>
<td><strong>10 credits per found profile</strong> adds up fast if your team is sloppy.</td>
</tr>
<tr>
<td>NinjaPear</td>
<td>Narrower fit outside B2B work emails</td>
<td>Wrong fit for consumer lookups and personal emails.</td>
</tr>
</tbody>
</table>
<h2 id="what-i-tested-and-how-id-force-every-vendor-to-earn-trust">What I tested and how I'd force every vendor to earn trust</h2>
<p>I am not going to fake a benchmark I did not fully run. That would be lazy.</p>
<p>So here is the honest version: I validated public claims, checked the workflow surfaces, and built the due-diligence lens I would use before buying.</p>
<h3 id="test-set-20-public-work-emails-across-easy-medium-and-ugly-cases">Test set: 20 public work emails across easy, medium, and ugly cases</h3>
<p>If I were running the benchmark tomorrow, I would use:</p>
<ul>
<li><strong>8 executive or founder emails</strong></li>
<li><strong>8 mid-level operators</strong></li>
<li><strong>4 ugly edge cases</strong></li>
</ul>
<p>All from public pages: team pages, press pages, conference pages, and public company leadership pages.</p>
<h3 id="what-id-measure">What I'd measure</h3>
<p>For each reverse email lookup tool, I would score:</p>
<ol>
<li><strong>Found profile</strong></li>
<li><strong>Company match</strong></li>
<li><strong>Role match</strong></li>
<li><strong>Profile depth</strong></li>
<li><strong>Response time</strong></li>
<li><strong>Workflow friction</strong></li>
</ol>
<p>That last one matters. A demo is not a system.</p>
<h3 id="the-extra-2026-dimension-most-posts-ignore-linkedin-dependency-and-legal-exposure">The extra 2026 dimension most posts ignore: LinkedIn dependency and legal exposure</h3>
<p>For each vendor, I would put them in one of three buckets:</p>
<ul>
<li><strong>Explicitly LinkedIn-free</strong></li>
<li><strong>Publicly references LinkedIn modules or scraping</strong></li>
<li><strong>Unclear, ask vendor directly</strong></li>
</ul>
<p>That one line can save you a lot of pain later.</p>
<h2 id="mailmeteor-review-good-free-demo-thin-operationally">Mailmeteor review: good free demo, thin operationally</h2>
<h3 id="what-it-gets-right-for-one-off-lookups">What it gets right for one-off lookups</h3>
<p>Mailmeteor keeps it simple.</p>
<p>It is <strong>free</strong>, <strong>no sign-up required</strong>, and aimed at <strong>professional email addresses</strong>. For quick triage, that is enough.</p>
<p><img alt="Mailmeteor reverse email lookup landing page" src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2026/04/6e0ae53e0f1b-2.webp" /></p>
<h3 id="where-it-falls-apart-if-you-try-to-operationalize-it">Where it falls apart if you try to operationalize it</h3>
<p>A free widget is not a process.</p>
<p>There is no real API story on that page. No systems posture. No workflow depth. If your team starts using it like infrastructure, you are kidding yourself.</p>
<p>Good free check. Not a system.</p>
<h2 id="epieos-review-very-good-osint-depth-wrong-substrate-for-most-gtm-teams">Epieos review: very good OSINT depth, wrong substrate for most GTM teams</h2>
<h3 id="why-investigators-like-it">Why investigators like it</h3>
<p>Epieos is honest enough to show its DNA.</p>
<p>The <strong>Osinter</strong> plan is <strong>€29.99/month</strong>, includes <strong>all modules including LinkedIn</strong>, and gives you <strong>30 full-access requests/month</strong>. It also spans modules like <strong>GitHub, Notion, Trello, Gravatar, Fitbit, Strava, Dropbox, Facebook</strong>, and more.</p>
<p>That is useful for investigators.</p>
<h3 id="why-i-would-not-build-revenue-workflows-on-top-of-it">Why I would not build revenue workflows on top of it</h3>
<p>The cap says it all.</p>
<p><strong>30 full-access requests/month</strong> is not scale. That is not inbound routing. That is not support ops. That is not PLG enrichment.</p>
<h3 id="the-linkedin-shaped-caveat-in-the-room">The LinkedIn-shaped caveat in the room</h3>
<p>Epieos explicitly says <strong>“all modules including LinkedIn.”</strong> So the right question is obvious.</p>
<p>In 2026, if LinkedIn-connected data is in the stack, I would not ignore that anymore.</p>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<div style="border-left:3px solid #ff4500;padding:12px 16px;margin:16px 0;background:#f8f9fa;border-radius:4px;font-family:-apple-system,sans-serif;">
  <div style="color:#787c7e;font-size:13px;margin-bottom:8px;">
    <strong>u/Silent_wesley</strong> on r/OSINT · ↑17
  </div>
  <div style="color:#1a1a1b;font-size:14px;line-height:1.5;">“Keep in mind to verify the results as services generally tend to produce fake-positives.”</div>
  <a href="https://www.reddit.com/r/OSINT/comments/10u3z28/what_free_resources_for_finding_people_by/?ref=nubela.co" style="color:#787c7e;font-size:12px;">source</a>
</div>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<h2 id="icypeas-review-practical-pricing-transparency-but-know-what-youre-buying-into">Icypeas review: practical pricing transparency, but know what you're buying into</h2>
<h3 id="why-the-pricing-page-is-better-than-most-of-the-market">Why the pricing page is better than most of the market</h3>
<p>Icypeas publishes real numbers.</p>
<p>Its pricing page shows plans starting at <strong>$19 for 1,000 credits</strong>, <strong>$39 for 4,000</strong>, <strong>$89 for 10,000</strong>, and <strong>$499 for 100,000</strong>. It also lists credit costs, including:</p>
<ul>
<li><strong>Email Finder: 1 credit</strong></li>
<li><strong>Email Verifier: 0.1 credit</strong></li>
<li><strong>Profile Scraper: 1.5 credits</strong></li>
<li><strong>Reverse Email Lookup: 10 credits per found profile</strong></li>
</ul>
<p>That earns points from me.</p>
<p><img alt="Icypeas pricing page" src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2026/04/a5d53fcf0c70-2.webp" /></p>
<h3 id="why-10-credit-reverse-lookups-can-quietly-get-expensive">Why 10-credit reverse lookups can quietly get expensive</h3>
<p>The trap is simple.</p>
<p>If your team sprays reverse lookup everywhere, costs pile up fast.</p>
<ul>
<li><strong>$19 / 1,000 credits</strong> = <strong>100 reverse lookups</strong></li>
<li><strong>$39 / 4,000 credits</strong> = <strong>400 reverse lookups</strong></li>
<li><strong>$89 / 10,000 credits</strong> = <strong>1,000 reverse lookups</strong></li>
<li><strong>$499 / 100,000 credits</strong> = <strong>10,000 reverse lookups</strong></li>
</ul>
<p>Not terrible. But easy to misuse.</p>
<h3 id="the-compliance-question-buyers-should-ask-directly">The compliance question buyers should ask directly</h3>
<p>Icypeas also mentions things like <strong>Sales Navigator scraped leads/day</strong> on the pricing page.</p>
<p>I am not going to overclaim what that means for this endpoint. But I would ask one direct question:</p>
<blockquote>
<p><strong>Do you rely on LinkedIn data anywhere in the resolution path for this reverse email lookup endpoint?</strong></p>
</blockquote>
<p>If the answer is vague, that is an answer too.</p>
<h2 id="ninjapear-person-profile-endpoint-review-the-only-answer-id-actually-deploy-for-b2b-work-email-reverse-lookup">NinjaPear Person Profile Endpoint review: the only answer I'd actually deploy for B2B work-email reverse lookup</h2>
<h3 id="why-work-email-reverse-lookup-is-really-an-identity-resolution-problem">Why work-email reverse lookup is really an identity resolution problem</h3>
<p>This is the core point.</p>
<p>If the input is a <strong>work email</strong>, the job is not vague internet search. The job is to resolve that email into a clean professional identity you can use.</p>
<p>That is different from consumer people-search. A lot of vendors blur that line.</p>
<h3 id="what-ninjapear-returns-from-a-work-email">What NinjaPear returns from a work email</h3>
<p><a href="https://nubela.co/employee-api?ref=nubela.co">NinjaPear Person Profile Endpoint</a> takes a <strong>work email</strong>, <strong>name + company</strong>, or <strong>role + company</strong> and returns a structured profile.</p>
<p>The Patrick Collison example includes:</p>
<ul>
<li>full name</li>
<li>bio</li>
<li>country and city</li>
<li>X handle and X profile URL</li>
<li>personal website</li>
<li>work experience</li>
<li>education</li>
<li>profile picture from public X, when available</li>
</ul>
<p>The published benchmark figures are also useful:</p>
<ul>
<li><strong>Work email: 10/10 profiles found, 100% accuracy</strong></li>
<li><strong>Name + company: 9/10, 90%</strong></li>
<li><strong>Role + company: 7/10, 70%</strong></li>
<li><strong>Uncached p50 latency: 23.1s</strong></li>
<li><strong>Uncached p95 latency: 31.1s</strong></li>
</ul>
<p>That is the kind of detail buyers need.</p>
<p><img alt="NinjaPear Person Profile Endpoint example showing work-email input and structured output" src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2026/04/610ab3c8af93-2.webp" /></p>
<h3 id="why-linkedin-free-matters-now-more-than-feature-depth">Why LinkedIn-free matters now more than feature depth</h3>
<p>NinjaPear says this plainly: it does <strong>not</strong> scrape professional social media platforms.</p>
<p>I would rather take slightly narrower coverage from a vendor with clean posture than richer data with legal baggage attached.</p>
<p>That is the adult tradeoff now.</p>
<h3 id="who-should-use-ninjapear-and-who-should-not">Who should use NinjaPear and who should not</h3>
<p>Use NinjaPear if:</p>
<ul>
<li>you are resolving <strong>B2B work emails</strong></li>
<li>you need <strong>API-first enrichment</strong></li>
<li>you care about <strong>legal clarity</strong></li>
<li>you want reverse lookup to feed a broader company workflow</li>
</ul>
<p>Do not use it if:</p>
<ul>
<li>you want consumer people-search</li>
<li>your main use case is personal Gmail or Yahoo lookups</li>
<li>you want OSINT entertainment more than B2B data</li>
</ul>
<h2 id="reverse-email-lookup-is-not-one-market-and-people-keep-buying-the-wrong-thing">Reverse email lookup is not one market, and people keep buying the wrong thing</h2>
<h3 id="osint-identity-lookup">OSINT identity lookup</h3>
<p>This is Epieos territory.</p>
<p>Broad, investigative, cross-platform, often noisy.</p>
<h3 id="b2b-work-email-enrichment">B2B work-email enrichment</h3>
<p>This is NinjaPear territory.</p>
<p>Take a work email. Resolve the person. Feed that into account workflows.</p>
<h3 id="personal-email-or-background-check-style-lookup">Personal-email or background-check style lookup</h3>
<p>This is people-search territory.</p>
<p>Different market. Different expectations. Usually not what serious B2B buyers actually need.</p>
<h3 id="if-you-confuse-these-categories-youll-think-every-tool-sucks">If you confuse these categories, you'll think every tool sucks</h3>
<p>That is the real reason people get disappointed.</p>
<p>They buy the wrong category, then blame the tool.</p>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<div style="border-left:3px solid #ff4500;padding:12px 16px;margin:16px 0;background:#f8f9fa;border-radius:4px;font-family:-apple-system,sans-serif;">
  <div style="color:#787c7e;font-size:13px;margin-bottom:8px;">
    <strong>u/Hefty-Cobbler-4914</strong> on r/macapps · ↑7
  </div>
  <div style="color:#1a1a1b;font-size:14px;line-height:1.5;">“Sherlock is quick but seems to return misleading data for known and brand new accounts... Cross reference results...”</div>
  <a href="https://www.reddit.com/r/macapps/comments/1fvunii/use_sherlock_and_homebrew_to_find_usernames_from/?ref=nubela.co" style="color:#787c7e;font-size:12px;">source</a>
</div>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<h2 id="the-legal-and-pricing-traps-nobody-wants-to-say-out-loud">The legal and pricing traps nobody wants to say out loud</h2>
<h3 id="public-profile-does-not-automatically-mean-safe-for-commercial-use">Public profile does not automatically mean safe for commercial use</h3>
<p>Again, the Proxycurl shutdown is the receipt.</p>
<p>LinkedIn sued in <strong>January 2025</strong>. Proxycurl shut down in <strong>July 2025</strong>. That happened.</p>
<h3 id="if-a-vendors-magic-depends-on-linkedin-your-legal-team-should-care">If a vendor's magic depends on LinkedIn, your legal team should care</h3>
<p>Your SDRs care about coverage.</p>
<p>Your legal team cares about provenance and blast radius.</p>
<p>Only one of those teams gets to clean up the mess later.</p>
<h3 id="credits-subscriptions-and-the-real-cost-per-useful-answer">Credits, subscriptions, and the real cost per useful answer</h3>
<h4 id="scenario-1-100-one-off-support-triage-lookups-per-month">Scenario 1: 100 one-off support triage lookups per month</h4>
<table>
<thead>
<tr>
<th>Tool</th>
<th>Public pricing basis</th>
<th style="text-align: right;">Estimated monthly cost</th>
<th>Notes</th>
</tr>
</thead>
<tbody>
<tr>
<td>Mailmeteor</td>
<td>Free tool</td>
<td style="text-align: right;">$0</td>
<td>Fine at low volume</td>
</tr>
<tr>
<td>Epieos</td>
<td>€29.99/month for 30 full requests</td>
<td style="text-align: right;">Not enough capacity</td>
<td>You will hit the cap</td>
</tr>
<tr>
<td>Icypeas</td>
<td>10 credits per found profile</td>
<td style="text-align: right;">$19 if 100 hits fit in 1,000 credits</td>
<td>Assumes successful finds</td>
</tr>
<tr>
<td>NinjaPear</td>
<td>Usage-based credits, no monthly minimum publicly stated on main site</td>
<td style="text-align: right;">Depends on credit plan</td>
<td>Better if this becomes workflow</td>
</tr>
</tbody>
</table>
<h4 id="scenario-2-500-sdr-or-plg-inbound-enrichments-per-month">Scenario 2: 500 SDR or PLG inbound enrichments per month</h4>
<table>
<thead>
<tr>
<th>Tool</th>
<th>Public pricing basis</th>
<th style="text-align: right;">Estimated monthly cost</th>
<th>Notes</th>
</tr>
</thead>
<tbody>
<tr>
<td>Mailmeteor</td>
<td>Free browser tool</td>
<td style="text-align: right;">Operationally wrong fit</td>
<td>Manual pain</td>
</tr>
<tr>
<td>Epieos</td>
<td>30 full requests/month</td>
<td style="text-align: right;">Not viable</td>
<td>Wrong category</td>
</tr>
<tr>
<td>Icypeas</td>
<td>10 credits per found profile</td>
<td style="text-align: right;">$89 covers 1,000 lookups worth of credits</td>
<td>Real option</td>
</tr>
<tr>
<td>NinjaPear</td>
<td>API-first, usage-based</td>
<td style="text-align: right;">Depends on plan mix</td>
<td>Better system fit</td>
</tr>
</tbody>
</table>
<h4 id="scenario-3-2000-batch-enrichments-per-month">Scenario 3: 2,000 batch enrichments per month</h4>
<table>
<thead>
<tr>
<th>Tool</th>
<th>Public pricing basis</th>
<th style="text-align: right;">Estimated monthly cost</th>
<th>Notes</th>
</tr>
</thead>
<tbody>
<tr>
<td>Mailmeteor</td>
<td>Free browser tool</td>
<td style="text-align: right;">No</td>
<td>Do not do this</td>
</tr>
<tr>
<td>Epieos</td>
<td>30 full requests/month</td>
<td style="text-align: right;">No</td>
<td>Also no</td>
</tr>
<tr>
<td>Icypeas</td>
<td>10 credits per found profile</td>
<td style="text-align: right;">$89 is short, $499 covers 10,000 reverse lookups worth of credits</td>
<td>Watch credit burn</td>
</tr>
<tr>
<td>NinjaPear</td>
<td>Usage-based B2B data platform</td>
<td style="text-align: right;">Depends on credits used across person + company workflow</td>
<td>Strongest strategic fit</td>
</tr>
</tbody>
</table>
<p>Volume exposes truth fast.</p>
<h2 id="social-proof-what-users-actually-worry-about">Social proof: what users actually worry about</h2>
<h3 id="reddit-privacy-anxiety-around-email-to-identity-lookup">Reddit privacy anxiety around email-to-identity lookup</h3>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<div style="border-left:3px solid #ff4500;padding:12px 16px;margin:16px 0;background:#f8f9fa;border-radius:4px;font-family:-apple-system,sans-serif;">
  <div style="color:#787c7e;font-size:13px;margin-bottom:8px;">
    <strong>u/Crafty-Scholar-3106</strong> on r/hacking · ↑255
  </div>
  <div style="color:#1a1a1b;font-size:14px;line-height:1.5;">“A couple times I’ve gotten into nasty arguments on other forums, and after I walk away I’ll get a smarmy little message that says ‘hi [my name]! Good chat with you today [my cell, my email, etc.]’ ... it’s highly effective at creeping me out and making me feel wary.”</div>
  <a href="https://www.reddit.com/r/hacking/comments/zpz61c/how_do_people_on_reddit_reverse_lookup_my_name/?ref=nubela.co" style="color:#787c7e;font-size:12px;">source</a>
</div>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<p>Reverse email lookup sits in a privacy-sensitive category. Users know it.</p>
<h2 id="my-hot-takes-after-redoing-this-piece-for-2026">My hot takes after redoing this piece for 2026</h2>
<h3 id="most-reverse-email-lookup-tools-are-optimized-for-demos-not-systems">Most reverse email lookup tools are optimized for demos, not systems</h3>
<p>A search box and result card is not a product strategy.</p>
<h3 id="if-your-vendor-touches-linkedin-data-do-not-call-that-a-small-detail">If your vendor touches LinkedIn data, do not call that a small detail</h3>
<p>Proxycurl dying changed the conversation.</p>
<h3 id="most-sales-teams-do-not-need-a-generic-reverse-email-lookup-tool">Most sales teams do not need a generic reverse email lookup tool</h3>
<p>They need a <strong>LinkedIn-free person and company enrichment workflow</strong> for work emails.</p>
<h3 id="free-widgets-are-fine-for-curiosity-they-are-garbage-for-process">Free widgets are fine for curiosity. They are garbage for process</h3>
<p>I use free tools too.</p>
<p>I just do not confuse them with infrastructure.</p>
<h2 id="where-ninjapear-fits-honestly">Where NinjaPear fits, honestly</h2>
<h3 id="not-as-a-generic-people-search-toy">Not as a generic people-search toy</h3>
<p>This matters.</p>
<p>NinjaPear is not for random private-citizen lookup from a Gmail address.</p>
<h3 id="as-the-best-next-step-after-identifying-a-b2b-contact-from-a-work-email">As the best next step after identifying a B2B contact from a work email</h3>
<p>Once you resolve the person, the next questions are usually about the company.</p>
<p>That is where the wider workflow matters:</p>
<ul>
<li><a href="https://nubela.co/?ref=nubela.co">Company Details</a> for company enrichment</li>
<li><a href="https://nubela.co/?ref=nubela.co">Employee Count</a> for size context</li>
<li><a href="https://nubela.co/?ref=nubela.co">Customer Listing</a> for account mapping</li>
<li><a href="https://nubela.co/docs?ref=nubela.co">Monitor API</a> for change signals</li>
</ul>
<h3 id="example-workflow-inbound-work-email-person-profile-company-context-monitor-account-changes">Example workflow: inbound work email, person profile, company context, monitor account changes</h3>
<ol>
<li>Unknown work email hits your inbox.</li>
<li>Resolve it with NinjaPear Person Profile Endpoint.</li>
<li>Enrich the employer with Company Details and Employee Count.</li>
<li>Run Customer Listing if the account matters.</li>
<li>Add the company to Monitor API so your AE sees changes before the next call.</li>
</ol>
<p>That is a system.</p>
<h2 id="final-verdict">Final verdict</h2>
<h3 id="my-ranked-list-for-different-use-cases">My ranked list for different use cases</h3>
<ul>
<li><strong>Best free one-off:</strong> Mailmeteor</li>
<li><strong>Best for OSINT:</strong> Epieos</li>
<li><strong>Best pricing transparency among legacy enrichment tools:</strong> Icypeas</li>
<li><strong>Best for B2B work-email reverse lookup:</strong> NinjaPear</li>
</ul>
<h3 id="the-one-id-personally-spend-budget-on-in-2026">The one I'd personally spend budget on in 2026</h3>
<p>If the use case is B2B work-email reverse lookup, I would spend on NinjaPear.</p>
<p>It solves the right problem and avoids the wrong risk.</p>
<h3 id="one-sentence-verdict-for-each-vendor">One-sentence verdict for each vendor</h3>
<ul>
<li><strong>Mailmeteor:</strong> Good free check, not a system.</li>
<li><strong>Epieos:</strong> A sharp OSINT knife, not a revenue engine.</li>
<li><strong>Icypeas:</strong> Refreshingly clear pricing, but ask harder compliance questions.</li>
<li><strong>NinjaPear:</strong> The only option here I'd actually wire into a serious B2B workflow.</li>
</ul>
<h2 id="what-we-said-then-why-it-changed-what-i-recommend-now">What we said then, why it changed, what I recommend now</h2>
<table>
<thead>
<tr>
<th>Then</th>
<th>Why it changed</th>
<th>Now</th>
</tr>
</thead>
<tbody>
<tr>
<td>Proxycurl was a strong reverse email lookup recommendation for pro workflows</td>
<td>Proxycurl shut down after LinkedIn filed suit in 2025</td>
<td>Stop treating LinkedIn dependency as a footnote</td>
</tr>
<tr>
<td>Match rate and coverage were the main buying criteria</td>
<td>Legal clarity now matters just as much as capability</td>
<td>Add legal posture to every vendor scorecard</td>
</tr>
<tr>
<td>Reverse email lookup was treated like one market</td>
<td>It's at least three markets: OSINT, B2B work-email enrichment, and people-search</td>
<td>Buy for your actual category</td>
</tr>
<tr>
<td>More data felt automatically better</td>
<td>More data with the wrong substrate can become expensive bullshit</td>
<td>Favor fit, provenance, and operational usefulness</td>
</tr>
</tbody>
</table>
<h2 id="download-the-buyer-kit">Download the Buyer Kit</h2>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<div id="download-buyer-kit"></div>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<p>If you are evaluating a reverse email lookup vendor this quarter, do three things:</p>
<ol>
<li>Build a scorecard.</li>
<li>Ask where the data comes from.</li>
<li>Model cost at <strong>100</strong>, <strong>500</strong>, and <strong>2,000</strong> lookups.</li>
</ol>
<p>And if your use case is specifically <strong>B2B work-email reverse lookup</strong>, start with NinjaPear's Person Profile Endpoint, then map the workflow into <a href="https://nubela.co/?ref=nubela.co">Company Details</a>, <a href="https://nubela.co/?ref=nubela.co">Employee Count</a>, <a href="https://nubela.co/?ref=nubela.co">Customer Listing</a>, and <a href="https://nubela.co/docs?ref=nubela.co">Monitor API</a>.</p>
<!--kg-card-end: html-->
 ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ Introducing the Similar People Endpoint ]]></title>
        <description><![CDATA[ Recently, a customer reached out to ask if we could help with the following use case:





we would provide a small input set (say, 5 email addresses) and expect the system to return a larger set (e.g., 50) of similar profiles with enriched data.



I&#39;m happy to ]]></description>
        <link>https://nubela.co/blog/introducing-the-similar-people-endpoint/</link>
        <guid isPermaLink="false">69d4b7da1ff0fe0001581494</guid>
        <category><![CDATA[ ninjapear ]]></category>
        <dc:creator><![CDATA[ Steven Goh | CEO ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2019/05/square.jpg"/>
        <pubDate>Tue, 07 Apr 2026 15:55:33 +0800</pubDate>
        <media:content url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2026/04/similar.png" medium="image"/>
        <content:encoded><![CDATA[ <p>Recently, a customer reached out to ask if we could help with the following use case:</p>
<blockquote>
<p>we would provide a small input set (say, 5 email addresses) and expect the system to return a larger set (e.g., 50) of similar profiles with enriched data.</p>
</blockquote>
<p>I'm happy to introduce the <a href="https://nubela.co/docs/?ref=nubela.co#similar-people-endpoint">Similar People Endpoint</a> today, which takes an input of identifying factors of a person and returns similar people. By <em>similar</em>, I mean people in the same role at competing companies of your target.</p>
<p>For example, these would be my peers, as defined by the Similar People Endpoint:</p>
<blockquote>
<p>Target: Steven Goh — 33 attempted searches, 27 similar people, 175 deci credits (17.5)</p>
<p>Similar people (CEOs/founders at competing data/proxy/scraping companies):</p>
<ol>
<li>Kabiru Mosadoluwa Audullahi — Executive Director, Swiftproxy</li>
<li>Ugnius Zasimauskas — CEO, Coresignal</li>
<li>Yoni Tserruya — Co-founder &amp; CEO, Lusha</li>
<li>Will Cannon — Founder &amp; CEO, UpLead</li>
<li>Karolis Toleikis — Founder &amp; CEO, IPRoyal</li>
<li>Ben Eisenberg — CEO, People Data Labs</li>
<li>Or Lenchner — CEO, Bright Data</li>
<li>Henry L. Schuck — CEO &amp; Chairman, ZoomInfo</li>
<li>Matt Sornson — GM Operations Hub &amp; Breeze Intelligence, HubSpot</li>
<li>Matt Curl — CEO, Apollo.io</li>
<li>Scott Kim — CEO, RocketReach</li>
<li>Yauheni Stsiapnou — CEO, Floppydata</li>
<li>Liam Xavier — Founder &amp; CEO, Scrapeless</li>
<li>Jessica Thompson — CEO &amp; Founder, Thordata</li>
<li>Thibeau Maerevoet — CEO &amp; Founder, Buy Proxy Servers</li>
<li>Ryan Huber — CEO &amp; Co-founder, Defined Networking</li>
<li>Dinesh Gabriel — CEO &amp; Founder, Nebula</li>
<li>Shanelle Roman — Co-Founder &amp; CEO, Nebula Proxy</li>
<li>Denis Mars — Founder &amp; CEO, GoProxy</li>
<li>Aleksandr Sadovskij — CEO &amp; Founder, Proxy-Cheap</li>
<li>Shachar Daniel — CEO &amp; Co-Founder, NetNut</li>
<li>Wolfgang Udo von Kindberg — CEO, Von Kindberg LLC</li>
<li>Sajib Hossain — CEO, ipmela.com</li>
<li>Ignacio Martín Llorente — CEO/MD, OpenNebula</li>
<li>Raymond — Head of R&amp;D, IPcook</li>
<li>Cahyo Subroto — Founder &amp; CEO, MrScraper</li>
<li>Charles Cao — CEO, Nebula Block</li>
</ol>
</blockquote>
<p>This API call took <code>85</code> seconds to complete.</p>
<p>You can think of the Similar People Endpoint as "AI deep research" in the space of B2B data, and honestly, you wouldn't be very far off as to how it works in the background. It is a long-running query. It takes on average 1–2 minutes to complete, and the JSON response is streamed, not unlike LLM tokens.</p>
<h2 id="use-case">Use-case</h2>
<p>The obvious use case for the Similar People Endpoint is expanding prospect lists. For example, what I'll be doing is sending cold emails to similar people for every new user sign-up, as they are immediate good fits.</p>
<h2 id="how-well-does-it-work">How well does it work?</h2>
<p>In live tests against real CEOs, the endpoint returned a full set of same-role peers at competing companies with very high accuracy:</p>
<ul>
<li>Apple — Tim Cook: 18 competitors attempted, 18 similar people returned (100%)</li>
<li>Tesla — Elon Musk: 11 attempted, 11 returned (100%)</li>
<li>Stripe — Patrick Collison: 19 attempted, 16 returned (84%)</li>
</ul>
<p>Beyond executives, we also went down the organization chart and did further tests.</p>
<ul>
<li><strong>Middle manager</strong> — Bryan Irace, Engineering Manager (Link team) @ Stripe
<ul>
<li>Time: 81s · Size: 25.7 KB · Credits: 105</li>
<li>Attempted: 19 · Found: 12 (63%)</li>
<li>Sample matches: Engineering Managers / Heads of Engineering at PayPal, Square, Cash App, Rippling, Tipalti, Finix, Helcim, Stax, FastSpring, Flock — exactly the right archetype (payments-company EMs).</li>
</ul>
</li>
<li><strong>Rank-and-file</strong> — Robert Heaton, Member of Technical Staff @ Stripe
<ul>
<li>Time: ~180s · Size: 65 KB · Credits: 335</li>
<li>Attempted: 65 · Found: 36 (55%)</li>
<li>Matches split into two clusters because Heaton holds multiple current roles in his profile (Stripe + several effective-altruism nonprofits + academia), so the algorithm fanned out across all of them:
<ul>
<li>Engineers at payments competitors: Wise, PayPal, Checkout.com, Square, Cash App, Rippling, Tipalti, Helcim, FastSpring, Paddle, Stax, PaymentCloud</li>
<li>"Member of Technical Staff" peers at AI labs: Anthropic, OpenAI, DeepSeek, Cohere, Meta — picked up via the MTS title alias</li>
<li>Engineers at EA/charity orgs: Giving What We Can, Charity Navigator, Kiva, ACE, CEA, Coefficient Giving</li>
<li>Academics at RCA, Royal Holloway, Surrey — from his secondary teaching/research affiliations</li>
</ul>
</li>
</ul>
</li>
</ul>
<h3 id="accuracy-table">Accuracy table</h3>
<table>
<thead>
<tr>
<th><strong>Tier</strong></th>
<th><strong>Target</strong></th>
<th><strong>Attempted</strong></th>
<th><strong>Found</strong></th>
<th><strong>Yield</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td>Executive</td>
<td>Tim Cook (Apple)</td>
<td>18</td>
<td>18</td>
<td>100%</td>
</tr>
<tr>
<td>Executive</td>
<td>Elon Musk (Tesla)</td>
<td>11</td>
<td>11</td>
<td>100%</td>
</tr>
<tr>
<td>Executive</td>
<td>Patrick Collison (Stripe)</td>
<td>19</td>
<td>16</td>
<td>84%</td>
</tr>
<tr>
<td>Middle manager</td>
<td>Bryan Irace (Stripe)</td>
<td>19</td>
<td>12</td>
<td>63%</td>
</tr>
<tr>
<td>Rank-and-file</td>
<td>Robert Heaton (Stripe)</td>
<td>65</td>
<td>36</td>
<td>55%</td>
</tr>
</tbody>
</table>
<h3 id="observations">Observations</h3>
<ol>
<li>Yield drops as you go down the org chart. CEOs are public figures listed on every company's leadership page → near-100% hit rate. Mid-level and IC roles depend on per-employee enrichment, which is noisier — yield falls to 55–63%.</li>
<li>Result count goes up the lower you go because the role is held by many people per company. Heaton's 36 matches vs. Cook's 18 reflects that.</li>
<li>Multi-role profiles fan out the search. Heaton's secondary affiliations (EA orgs, academia) generated additional competitor sets and pulled in cross-domain peers — useful if you want full coverage, surprising if you expect a tightly focused list.</li>
</ol>
<h2 id="limitations">Limitations</h2>
<p>Unfortunately, what we are not able to do as of now is return similar employees <strong>within</strong> the same company. That would require maintaining an employee database, which we are currently not doing because—short of scraping LinkedIn, which we will <strong>strictly</strong> never do—how else can we build up such a dataset? I have an idea, but it'll take time to flesh out. You'll be the first to find out when I have something in the pipeline.</p>
<h2 id="try-similar-people-endpoint">Try Similar People Endpoint</h2>
<p>What are you waiting for? Give the Similar People Endpoint a try right now!</p>
 ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ BuiltWith Review 2026: A CEO’s Take on BuiltWith (+ Redditors’ Thoughts) ]]></title>
        <description><![CDATA[ Interactive budget sanity check



Should You Pay for BuiltWith?


Answer four blunt questions. Get a blunt answer. This widget is for people searching builtwith who are really asking: should this be a real line item on my budget?



Default verdict: Don’t buy




1) How many technology filters do you ]]></description>
        <link>https://nubela.co/blog/builtwith-review/</link>
        <guid isPermaLink="false">69d2feb31ff0fe0001581483</guid>
        <category><![CDATA[ builtwith ]]></category>
        <dc:creator><![CDATA[ Steven Goh | CEO ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2019/05/square.jpg"/>
        <pubDate>Mon, 06 Apr 2026 08:30:47 +0800</pubDate>
        <media:content url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2026/04/cover_2.webp" medium="image"/>
        <content:encoded><![CDATA[ 
<!--kg-card-begin: html-->
<div style="border:1px solid #e5e7eb;border-radius:16px;padding:20px;margin:20px 0 28px;background:linear-gradient(180deg,#ffffff 0%,#f8fafc 100%);font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;box-shadow:0 8px 24px rgba(0,0,0,.06);">
  <div style="display:flex;justify-content:space-between;gap:12px;align-items:flex-start;flex-wrap:wrap;">
    <div>
      <div style="font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#6b7280;">Interactive budget sanity check</div>
      <h2 id="should-you-pay-for-builtwith" style="margin:6px 0 4px;font-size:28px;line-height:1.1;color:#111827;">Should You Pay for BuiltWith?</h2>
      <p style="margin:0;color:#4b5563;max-width:720px;">Answer four blunt questions. Get a blunt answer. This widget is for people searching <strong>builtwith</strong> who are really asking: <em>should this be a real line item on my budget?</em></p>
    </div>
    <div id="bwVerdictBadge" style="background:#111827;color:#fff;padding:10px 14px;border-radius:999px;font-size:13px;font-weight:700;">Default verdict: Don’t buy</div>
  </div>

  <div style="display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px;margin-top:18px;">
    <div style="background:#fff;border:1px solid #e5e7eb;border-radius:14px;padding:16px;">
      <label for="bwFilters" style="display:block;font-weight:700;color:#111827;margin-bottom:10px;">1) How many technology filters do you actually need?</label>
      <input id="bwFilters" type="range" min="1" max="25" value="3" style="width:100%;" />
      <div style="margin-top:8px;color:#4b5563;">Technology filters needed: <strong id="bwFiltersVal">3</strong></div>
    </div>

    <div style="background:#fff;border:1px solid #e5e7eb;border-radius:14px;padding:16px;">
      <div style="font-weight:700;color:#111827;margin-bottom:10px;">2) What kind of workflow is this?</div>
      <div style="display:flex;flex-wrap:wrap;gap:8px;">
        <button class="bwChoice active" data-group="workflow" data-value="lookup" style="padding:10px 12px;border-radius:10px;border:1px solid #cbd5e1;background:#111827;color:#fff;cursor:pointer;">One-off lookup</button>
        <button class="bwChoice" data-group="workflow" data-value="recurring" style="padding:10px 12px;border-radius:10px;border:1px solid #cbd5e1;background:#fff;color:#111827;cursor:pointer;">Recurring prospecting</button>
        <button class="bwChoice" data-group="workflow" data-value="api" style="padding:10px 12px;border-radius:10px;border:1px solid #cbd5e1;background:#fff;color:#111827;cursor:pointer;">API workflow</button>
      </div>
    </div>

    <div style="background:#fff;border:1px solid #e5e7eb;border-radius:14px;padding:16px;">
      <div style="font-weight:700;color:#111827;margin-bottom:10px;">3) What do you need after the export?</div>
      <div style="display:flex;flex-wrap:wrap;gap:8px;">
        <button class="bwChoice active" data-group="need" data-value="none" style="padding:10px 12px;border-radius:10px;border:1px solid #cbd5e1;background:#111827;color:#fff;cursor:pointer;">No contact data needed</button>
        <button class="bwChoice" data-group="need" data-value="enrichment" style="padding:10px 12px;border-radius:10px;border:1px solid #cbd5e1;background:#fff;color:#111827;cursor:pointer;">Need contact enrichment</button>
        <button class="bwChoice" data-group="need" data-value="signals" style="padding:10px 12px;border-radius:10px;border:1px solid #cbd5e1;background:#fff;color:#111827;cursor:pointer;">Need intent + change signals</button>
      </div>
    </div>

    <div style="background:#fff;border:1px solid #e5e7eb;border-radius:14px;padding:16px;">
      <div style="font-weight:700;color:#111827;margin-bottom:10px;">4) Who is this for?</div>
      <div style="display:flex;flex-wrap:wrap;gap:8px;">
        <button class="bwChoice active" data-group="team" data-value="solo" style="padding:10px 12px;border-radius:10px;border:1px solid #cbd5e1;background:#111827;color:#fff;cursor:pointer;">One operator</button>
        <button class="bwChoice" data-group="team" data-value="small" style="padding:10px 12px;border-radius:10px;border:1px solid #cbd5e1;background:#fff;color:#111827;cursor:pointer;">2–5 seats</button>
        <button class="bwChoice" data-group="team" data-value="team" style="padding:10px 12px;border-radius:10px;border:1px solid #cbd5e1;background:#fff;color:#111827;cursor:pointer;">Actual GTM team</button>
      </div>
    </div>
  </div>

  <div id="bwOutput" style="margin-top:18px;background:#0f172a;color:#fff;border-radius:16px;padding:18px;display:grid;grid-template-columns:1.1fr .9fr;gap:16px;align-items:start;">
    <div>
      <div style="font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#93c5fd;">Recommended path</div>
      <div id="bwPath" style="font-size:30px;font-weight:800;line-height:1.1;margin:6px 0 10px;">Don’t buy</div>
      <div id="bwVerdict" style="font-size:16px;line-height:1.5;color:#dbeafe;">You do not need a $495/mo technographic habit.</div>
    </div>
    <div style="background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.1);border-radius:14px;padding:14px;">
      <div style="display:flex;justify-content:space-between;gap:12px;margin-bottom:8px;"><span style="color:#cbd5e1;">Estimated monthly software cost</span><strong id="bwCost">$0–$50</strong></div>
      <div style="display:flex;justify-content:space-between;gap:12px;margin-bottom:8px;"><span style="color:#cbd5e1;">Suggested stack</span><strong id="bwStack" style="text-align:right;">Free lookup only</strong></div>
      <div style="font-size:12px;line-height:1.5;color:#94a3b8;margin-top:10px;">Assumes public BuiltWith pricing of Basic <strong>$295/mo</strong>, Pro <strong>$495/mo</strong>, Team <strong>$995/mo</strong>, plus likely downstream enrichment if you need actual outreach.</div>
    </div>
  </div>

  <script>
    (function(){
      const state = { filters: 3, workflow: 'lookup', need: 'none', team: 'solo' };
      const $ = (id) => document.getElementById(id);
      const filters = $('bwFilters');
      const filtersVal = $('bwFiltersVal');
      const path = $('bwPath');
      const verdict = $('bwVerdict');
      const cost = $('bwCost');
      const stack = $('bwStack');
      const badge = $('bwVerdictBadge');

      function setActive(group, value){
        document.querySelectorAll('.bwChoice').forEach(btn => {
          if(btn.dataset.group === group){
            const active = btn.dataset.value === value;
            btn.classList.toggle('active', active);
            btn.style.background = active ? '#111827' : '#fff';
            btn.style.color = active ? '#fff' : '#111827';
          }
        });
      }

      function compute(){
        let rec = { path: 'Don’t buy', cost: '$0–$50', verdict: 'You do not need a $495/mo technographic habit.', stack: 'Free lookup only' };
        const f = state.filters, w = state.workflow, n = state.need, t = state.team;

        if (w === 'lookup' && f <= 3 && n === 'none' && t === 'solo') {
          rec = { path: 'Free lookup', cost: '$0–$50', verdict: 'Use the free lookup and move on with your life.', stack: 'BuiltWith only' };
        } else if (w !== 'api' && f <= 2 && n === 'none' && t === 'solo') {
          rec = { path: 'Basic', cost: '~$295/mo', verdict: 'Basic only makes sense when your ICP is brutally narrow and you know exactly what you are hunting.', stack: 'BuiltWith only' };
        } else if ((w === 'recurring' || f > 2) && t !== 'team' && n !== 'signals') {
          rec = { path: 'Pro', cost: '~$495/mo + enrichment', verdict: 'This is the first plan that feels like a real operating plan, not a teaser.', stack: n === 'enrichment' ? 'BuiltWith + enrichment' : 'BuiltWith only' };
        }
        if (w === 'api') {
          rec = { path: t === 'team' ? 'Team' : 'Pro', cost: t === 'team' ? '~$995/mo + engineering' : '~$495/mo + engineering', verdict: 'Usable for deliberate workflows. Not an infinite firehose. Talk to engineering before your sales team says “we’ll pipe it into everything.”', stack: n === 'none' ? 'BuiltWith only' : 'BuiltWith + enrichment' };
        }
        if (t === 'team' && (w === 'recurring' || w === 'api')) {
          rec = { path: 'Team', cost: '~$995/mo + stack costs', verdict: 'Only approve Team if multiple people are repeatedly monetizing exports and insights.', stack: n === 'signals' ? 'Skip to broader workflow' : 'BuiltWith + enrichment' };
        }
        if (n === 'signals') {
          rec = { path: 'Don’t buy', cost: '~$300–$1,500+ elsewhere', verdict: 'If you need intent and change signals too, BuiltWith is only solving the first 20% of the problem.', stack: 'Skip to a different workflow' };
        }
        if (w === 'lookup' && n !== 'none') {
          rec = { path: 'Don’t buy', cost: '~$0–$200 elsewhere', verdict: 'One-off lookups do not justify a recurring technographics bill plus enrichment cleanup.', stack: 'Skip to a different workflow' };
        }

        path.textContent = rec.path;
        verdict.textContent = rec.verdict;
        cost.textContent = rec.cost;
        stack.textContent = rec.stack;
        badge.textContent = 'Verdict: ' + rec.path;
      }

      filters.addEventListener('input', function(){
        state.filters = parseInt(this.value, 10);
        filtersVal.textContent = this.value;
        compute();
      });

      document.querySelectorAll('.bwChoice').forEach(btn => {
        btn.addEventListener('click', function(){
          state[this.dataset.group] = this.dataset.value;
          setActive(this.dataset.group, this.dataset.value);
          compute();
        });
      });

      compute();
    })();
  </script>
</div>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<p>I’ve watched smart teams burn a very stupid amount of money on <strong>BuiltWith</strong> because they confused a CSV of websites with actual pipeline.</p>
<p>That’s the whole review in one sentence.</p>
<p>BuiltWith is real. It’s useful. It has legitimate depth. It is also one of those tools that gets overbought by people who need “accounts + contacts + timing + prioritization” and end up paying for “websites that appear to use X.” Those are not the same thing. Not even close.</p>
<p>I’m writing this as someone who has signed the software checks, cleaned up the fallout, and had to explain to a founder why a list of 40,000 domains turned into a few hundred verified contacts and a lot of wasted SDR hours. That distinction matters.</p>
<h2 id="tldr">TL;DR</h2>
<p>If you just want the adult answer, here it is.</p>
<table>
<thead>
<tr>
<th>Factor</th>
<th>BuiltWith</th>
<th>Wappalyzer</th>
<th>Ful.io</th>
<th>Winner</th>
</tr>
</thead>
<tbody>
<tr>
<td>Best for one-off lookup</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐⭐</td>
<td>⭐⭐⭐⭐☆</td>
<td><strong>Wappalyzer</strong></td>
</tr>
<tr>
<td>Best for narrow technographic prospecting</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐☆☆</td>
<td>⭐⭐⭐⭐☆</td>
<td><strong>BuiltWith</strong></td>
</tr>
<tr>
<td>Historical tech trend depth</td>
<td>⭐⭐⭐⭐⭐</td>
<td>⭐⭐⭐☆☆</td>
<td>⭐⭐⭐☆☆</td>
<td><strong>BuiltWith</strong></td>
</tr>
<tr>
<td>Entry pricing sanity</td>
<td>⭐⭐☆☆☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐☆</td>
<td><strong>Ful.io</strong></td>
</tr>
<tr>
<td>Team workflow viability</td>
<td>⭐⭐⭐☆☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐☆☆</td>
<td><strong>Wappalyzer</strong></td>
</tr>
<tr>
<td>API practicality</td>
<td>⭐⭐⭐☆☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐☆☆</td>
<td><strong>Wappalyzer</strong></td>
</tr>
<tr>
<td>Useful beyond front-end tech detection</td>
<td>⭐⭐☆☆☆</td>
<td>⭐⭐☆☆☆</td>
<td>⭐⭐☆☆☆</td>
<td><strong>None of them</strong></td>
</tr>
<tr>
<td>“Ready-to-run pipeline” out of the box</td>
<td>⭐⭐☆☆☆</td>
<td>⭐⭐⭐☆☆</td>
<td>⭐⭐⭐☆☆</td>
<td><strong>None of them</strong></td>
</tr>
<tr>
<td>Overall score</td>
<td><strong>3.17/5</strong></td>
<td><strong>3.92/5</strong></td>
<td><strong>3.67/5</strong></td>
<td><strong>Wappalyzer</strong></td>
</tr>
</tbody>
</table>
<p>My quick read:</p>
<ul>
<li><strong>Buy BuiltWith</strong> if your ICP is tightly anchored to 1-2 technologies, or you care about historical adoption/migration data enough to monetize it.</li>
<li><strong>Use free lookup / cheaper alternatives</strong> if you’re a solo operator doing ad hoc research.</li>
<li><strong>Do not buy BuiltWith</strong> if what you really need is contacts, buying intent, org changes, or account prioritization.</li>
<li><strong>All the front-end scanners share the same structural limitation:</strong> they mainly infer from the public website surface. That is useful. It is not the same as understanding customers, relationships, or timing.</li>
<li><strong>A CSV of websites is not pipeline.</strong> Stop pretending otherwise.</li>
</ul>
<h2 id="the-ceo-verdict-should-you-pay-for-builtwith-at-all">The CEO verdict: should you pay for BuiltWith at all?</h2>
<p>Yes. In exactly two situations.</p>
<p>Not five. Not “it depends.” Two.</p>
<h3 id="the-2-situations-where-id-approve-budget">The 2 situations where I’d approve budget</h3>
<p><strong>1. You have a narrow ICP defined by specific technologies.</strong></p>
<p>If I’m selling into, say, Shopify Plus stores running Klaviyo with a certain spend profile and I can monetize that list fast, BuiltWith can absolutely print money. That’s because its tech coverage is broad, its filtering is serious, and its exportability is actually useful when you already know the hunt.</p>
<p><strong>2. You care about historical adoption trends enough to make money from them.</strong></p>
<p>This is the part people underrate. Investors, analysts, strategy teams, ecosystem partners — these people can get real value from seeing who adopted, dropped, or migrated over time. BuiltWith’s homepage mentions trends, but honestly that undersells the strategic value of the historical layer.</p>
<h3 id="the-situations-where-id-say-no">The situations where I’d say no</h3>
<p><strong>Solo founders doing occasional lookups.</strong> Use the free lookup or pay for something lighter.</p>
<p><strong>Teams expecting contact data and ready-to-run outbound lists.</strong> BuiltWith does not magically turn websites into reachable people.</p>
<p><strong>Companies confusing technographics with buying intent.</strong> This is the big self-own. A company using HubSpot is not automatically in market. A company using Shopify is not automatically a good customer. A company changing leadership, hiring for a replatform, launching a new product line, or ripping up its pricing page? Now we’re getting somewhere.</p>
<p>My verdict is simple: <strong>BuiltWith deserves budget when the use case is brutally specific. Otherwise it becomes expensive software theater.</strong></p>
<h2 id="builtwith-scorecard">BuiltWith Scorecard</h2>
<p>Here’s the scorecard I’d hand to a CEO or RevOps lead.</p>
<table>
<thead>
<tr>
<th>Category</th>
<th>Rating</th>
<th>CEO note</th>
</tr>
</thead>
<tbody>
<tr>
<td>Data freshness</td>
<td>⭐⭐⭐☆☆</td>
<td>Useful, but I would still validate high-value accounts before outreach</td>
</tr>
<tr>
<td>Data richness</td>
<td>⭐⭐⭐⭐☆</td>
<td>Broad coverage and decent metadata beyond simple script detection</td>
</tr>
<tr>
<td>Scalability</td>
<td>⭐⭐⭐☆☆</td>
<td>Scales, but not infinitely and not without workflow design</td>
</tr>
<tr>
<td>Pricing</td>
<td>⭐⭐☆☆☆</td>
<td>Entry plan feels more like a teaser than a serious operating plan</td>
</tr>
<tr>
<td>Developer friendliness</td>
<td>⭐⭐⭐☆☆</td>
<td>Usable docs, but engineering still has to care</td>
</tr>
<tr>
<td>Stability</td>
<td>⭐⭐⭐⭐☆</td>
<td>Established product, not some sketchy side project</td>
</tr>
<tr>
<td>Beyond front-end visibility</td>
<td>⭐⭐☆☆☆</td>
<td>Like Wappalyzer and peers, it mainly sees what the public site reveals</td>
</tr>
<tr>
<td><strong>Overall</strong></td>
<td><strong>3.17/5</strong></td>
<td><strong>Good product, easy to overbuy</strong></td>
</tr>
</tbody>
</table>
<p>That last line is the whole thing.</p>
<p>Good product. Easy to overbuy.</p>
<h2 id="what-builtwith-is-actually-good-at">What BuiltWith is actually good at</h2>
<p>I want to give the tool real credit before I start swinging at its budget logic.</p>
<h3 id="breadth-of-technology-coverage-is-legitimately-strong">Breadth of technology coverage is legitimately strong</h3>
<p>BuiltWith publicly says it covers <strong>113,124+ internet technologies</strong>. On the homepage, it also claims tech trend data back to <strong>January 1985</strong>, over <strong>2,500 eCommerce technologies</strong>, and <strong>2 billion unique eCommerce products</strong> across <strong>26 million eCommerce websites</strong>.</p>
<p>That’s not nothing. That’s a real crawl/indexing operation.</p>
<p>If you’re trying to understand ecosystem structure — who uses Shopify vs BigCommerce, who has Salesforce installed, which ecommerce segment is leaning into Klaviyo, which category is consolidating around one stack — breadth matters. A lot.</p>
<p><img alt="BuiltWith homepage and search experience" src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2026/04/10eda9904458.webp" /></p>
<h3 id="historical-trend-data-is-more-valuable-than-the-homepage-explains">Historical trend data is more valuable than the homepage explains</h3>
<p>Most people think BuiltWith is just a website profiler. That’s the shallow read.</p>
<p>The deeper value is historical movement. <code>first detected</code>, <code>last detected</code>, stack shifts, category-level usage trends — that’s where the tool starts becoming useful for market mapping instead of just SDR list pulling.</p>
<p>When I was running outbound experiments years ago, the best technographic campaigns were never “all users of X.” They were “companies likely transitioning away from Y into X” or “businesses that recently crossed into a maturity band where this tool becomes relevant.” That’s a much better bet.</p>
<h3 id="the-free-lookup-still-has-real-utility">The free lookup still has real utility</h3>
<p>I’m not above saying the obvious: the free lookup is handy.</p>
<p>For founders, PMMs, SDRs, agency operators, or anyone doing ad hoc research on a single domain, it solves a real problem in seconds. If your actual need is “what does this site appear to run?” the free product already gets you a decent amount of value.</p>
<p>And honestly, that’s why a lot of people should stop there.</p>
<h2 id="the-big-limitation-nobody-says-loudly-enough-builtwith-only-sees-the-website-surface">The big limitation nobody says loudly enough: BuiltWith only sees the website surface</h2>
<p>This is the structural caveat for <strong>BuiltWith</strong>, <strong>Wappalyzer</strong>, <strong>Ful.io</strong>, and basically the whole front-end scanner category.</p>
<p>They are mostly inferring from what can be detected on or around a public-facing website:</p>
<ul>
<li>JavaScript libraries</li>
<li>analytics tags</li>
<li>CMS footprints</li>
<li>marketing pixels</li>
<li>widgets</li>
<li>ecommerce platform clues</li>
<li>CDN / hosting / SSL / DNS-adjacent signals</li>
<li>page-source and request-level artifacts</li>
</ul>
<p>That is useful. Sometimes very useful.</p>
<p>But it is still a partial view.</p>
<p>What they usually <strong>cannot</strong> tell you with confidence just from front-end tech detection:</p>
<ul>
<li>who the company’s customers are</li>
<li>who buys from them repeatedly</li>
<li>what contracts or commercial relationships exist</li>
<li>whether they are actively evaluating a new vendor right now</li>
<li>whether budget got approved this quarter</li>
<li>whether a buyer just joined and is about to rip out the old stack</li>
<li>which internal system is mission-critical but completely invisible on the public site</li>
</ul>
<p>And this is exactly where teams get sloppy.</p>
<p>They see a clean list of websites using some stack and mentally upgrade that into “market map,” “pipeline,” or “intent.” It is none of those things by default.</p>
<p>A website might show HubSpot, Segment, Shopify, or Marketo in the front end. Fine. That still tells you almost nothing about:</p>
<ul>
<li>the company’s customer base</li>
<li>their actual vendor contracts beyond visible scripts</li>
<li>internal tools hidden behind auth</li>
<li>procurement timing</li>
<li>account health</li>
<li>who the real buyer is</li>
</ul>
<p>Put more bluntly: <strong>front-end tech scanners are about website-observable tech, not total company intelligence.</strong></p>
<p>That limitation is not a bug unique to BuiltWith. It is the entire category.</p>
<h3 id="why-this-matters-more-than-people-think">Why this matters more than people think</h3>
<p>If your go-to-market hypothesis is literally tied to visible web tech, great. BuiltWith can help.</p>
<p>If your real question is:</p>
<ul>
<li>“Who are this company’s customers?”</li>
<li>“Which accounts look like my best current customers?”</li>
<li>“What changed this week that opens a window?”</li>
<li>“Who competes with them and who do they sell to?”</li>
</ul>
<p>…then a front-end scanner is the wrong center of gravity.</p>
<p>That’s where there is a whole different paradigm of data that has nothing to do with scraping visible JavaScript off a homepage.</p>
<p>For example, NinjaPear’s <strong>Customer Listing API</strong> maps <strong>customers, investors, and partners</strong> for a company based on its website. That is a completely different question from “what scripts are on the page?” It gets you into relationship intelligence rather than front-end fingerprinting.</p>
<p>That distinction matters because a lot of revenue teams do not actually need better tech detection. They need to know:</p>
<ul>
<li>who buys from a company</li>
<li>who overlaps with their existing customer base</li>
<li>who just changed direction</li>
<li>what is happening around an account right now</li>
</ul>
<p>That is why I keep saying most companies do not have a BuiltWith problem. They have an account selection and timing problem.</p>
<h2 id="where-builtwith-starts-to-get-expensive-and-annoying">Where BuiltWith starts to get expensive and annoying</h2>
<p>This is where the CEO lens matters. Sticker price is only half the story.</p>
<h3 id="the-pricing-looks-cleaner-than-the-actual-operating-reality">The pricing looks cleaner than the actual operating reality</h3>
<p>Public pricing is straightforward enough:</p>
<ul>
<li><strong>Basic: $295/mo</strong></li>
<li><strong>Pro: $495/mo</strong></li>
<li><strong>Team: $995/mo</strong></li>
</ul>
<p>BuiltWith’s own knowledge base adds useful context:</p>
<ul>
<li><strong>Basic</strong> gives you <strong>two technologies</strong> and <strong>2,000 upload analysis credits/month</strong></li>
<li><strong>Pro</strong> gives you <strong>unlimited technologies</strong> and <strong>20,000 upload analysis credits/month</strong></li>
<li><strong>Team</strong> is described as <strong>unlimited everything except API credits</strong> with <strong>1.2M/year or 100,000/month</strong> API credits</li>
</ul>
<p>The pricing page and KB aren’t perfectly cleanly aligned on the Team monthly number (the KB also references <strong>$9,950/year or $950/month</strong>). That kind of mismatch is not fatal, but it’s exactly the sort of detail that makes finance people grumpy.</p>
<p>My real issue is simpler: <strong>$295/month sounds survivable until you realize the Basic plan is restrictive enough that any serious experimentation pushes you up-market fast.</strong></p>
<h3 id="tech-detection-is-not-the-same-thing-as-a-revenue-ready-lead-list">Tech detection is not the same thing as a revenue-ready lead list</h3>
<p>This is the biggest workflow lie in the whole category.</p>
<p>A technographic list without contactability is half a workflow pretending to be a full workflow.</p>
<p>One Reddit thread captured this perfectly.</p>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<div style="border-left:3px solid #ff4500;padding:12px 16px;margin:16px 0;background:#f8f9fa;border-radius:4px;font-family:-apple-system,sans-serif;">
  <div style="color:#787c7e;font-size:13px;margin-bottom:8px;">
    <strong>u/Certain-Glass4372</strong> on r/coldemail · ↑4
  </div>
  <div style="color:#1a1a1b;font-size:14px;line-height:1.5;">BuiltWith was terrible. Out of 40,000 leads, I ended up being routed through Apollo and only got 400 verified.</div>
  <a href="https://www.reddit.com/r/coldemail/comments/1ojcj5t/ecommerce_leads/?ref=nubela.co" style="color:#787c7e;font-size:12px;">source</a>
</div>

<div style="font-size:12px;color:#6b7280;margin-top:-8px;">Anecdotal user feedback, not universal truth.</div>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<p>That comment is anecdotal, not gospel. But the workflow pain is real.</p>
<p>And the reply underneath was even more useful than the complaint.</p>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<div style="border-left:3px solid #ff4500;padding:12px 16px;margin:16px 0;background:#f8f9fa;border-radius:4px;font-family:-apple-system,sans-serif;">
  <div style="color:#787c7e;font-size:13px;margin-bottom:8px;">
    <strong>u/Tasty_Amount6342</strong> on r/coldemail · ↑2
  </div>
  <div style="color:#1a1a1b;font-size:14px;line-height:1.5;">BuiltWith gives you lists of companies using specific tech, but it doesn't give you contact data. That's why when you ran it through Apollo only 400 had verified emails.</div>
  <a href="https://www.reddit.com/r/coldemail/comments/1ojcj5t/ecommerce_leads/?ref=nubela.co" style="color:#787c7e;font-size:12px;">source</a>
</div>

<div style="font-size:12px;color:#6b7280;margin-top:-8px;">Anecdotal user feedback, not universal truth.</div>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<p>That is the category in one paragraph.</p>
<h3 id="most-buyers-underestimate-the-cleanup-cost-after-export">Most buyers underestimate the cleanup cost after export</h3>
<p>This is the part nobody wants to budget for because it makes the “cheap list” look expensive.</p>
<p>After export, you still need:</p>
<ul>
<li>contact enrichment</li>
<li>email verification</li>
<li>account prioritization</li>
<li>timing signal validation</li>
<li>CRM sync and dedupe</li>
<li>human judgment on edge cases and junk accounts</li>
</ul>
<p>So no, the real cost is not <strong>$295</strong> or <strong>$495</strong>.</p>
<p>The real cost is the rest of the stack plus the labor you now need to make the CSV usable.</p>
<h3 id="support-and-onboarding-friction-should-be-noted-even-if-its-anecdotal">Support and onboarding friction should be noted, even if it’s anecdotal</h3>
<p>I found one Reddit complaint from someone trying to buy the product who couldn’t get through ID verification and said support was unresponsive.</p>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<div style="border-left:3px solid #ff4500;padding:12px 16px;margin:16px 0;background:#f8f9fa;border-radius:4px;font-family:-apple-system,sans-serif;">
  <div style="color:#787c7e;font-size:13px;margin-bottom:8px;">
    <strong>u/phb71</strong> on r/coldemail · ↑1
  </div>
  <div style="color:#1a1a1b;font-size:14px;line-height:1.5;">I've been trying to create and pay for an account on builtwith for weeks and it's impossible - there is an ID verification that never got through and support is unresponsive. Crazy to think I am ready to spend money and they won't take it...</div>
  <a href="https://www.reddit.com/r/coldemail/comments/1h11l6r/builtwith_alternatives/?ref=nubela.co" style="color:#787c7e;font-size:12px;">source</a>
</div>

<div style="font-size:12px;color:#6b7280;margin-top:-8px;">Anecdotal user feedback, not universal truth.</div>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<p>Again: anecdotal, not universal truth.</p>
<p>But if a tool is hard to buy, hard to onboard, or weirdly finicky at the moment the customer is trying to give you money, that absolutely belongs in the ROI conversation.</p>
<h2 id="builtwith-pricing-in-2026-the-real-cost-is-not-the-subscription">BuiltWith pricing in 2026 — the real cost is not the subscription</h2>
<p>This is where I’d force a CFO and a sales leader to sit in the same room for 20 minutes.</p>
<h3 id="what-each-plan-actually-means-in-practice">What each plan actually means in practice</h3>
<table>
<thead>
<tr>
<th>Plan</th>
<th style="text-align: right;">Public price</th>
<th>What it really means</th>
<th>Who should approve this spend?</th>
</tr>
</thead>
<tbody>
<tr>
<td>Basic</td>
<td style="text-align: right;">$295/mo</td>
<td>Two-technology scope, narrow hunts, limited experimentation</td>
<td>Only if your ICP is painfully specific</td>
</tr>
<tr>
<td>Pro</td>
<td style="text-align: right;">$495/mo</td>
<td>First plan that feels viable for recurring list building</td>
<td>A team that will run sustained tests every month</td>
</tr>
<tr>
<td>Team</td>
<td style="text-align: right;">$995/mo (KB also references $950/mo or $9,950/yr)</td>
<td>Shared use, repeated exports, larger ops muscle</td>
<td>Only if multiple users are actively monetizing it</td>
</tr>
<tr>
<td>Advanced</td>
<td style="text-align: right;">$144/yr</td>
<td>Detailed individual site lookups, not lead-gen operations</td>
<td>Solo users doing research, not pipeline building</td>
</tr>
</tbody>
</table>
<p>Basic is not “starter.” It’s “you already know what you’re doing.”</p>
<p>Pro is the first plan I’d consider operationally viable.</p>
<p>Team only makes sense if the output is feeding a repeatable machine, not a random collection of experiments.</p>
<h3 id="the-hidden-budget-line-items-nobody-mentions">The hidden budget line items nobody mentions</h3>
<p>Here is the budget that actually shows up in real life.</p>
<table>
<thead>
<tr>
<th>Cost line item</th>
<th style="text-align: right;">Low-end monthly</th>
<th style="text-align: right;">More realistic monthly</th>
<th>Why it exists</th>
</tr>
</thead>
<tbody>
<tr>
<td>BuiltWith subscription</td>
<td style="text-align: right;">$295</td>
<td style="text-align: right;">$495</td>
<td>You need the raw technographic list</td>
</tr>
<tr>
<td>Enrichment tool (Apollo/Clay/etc.)</td>
<td style="text-align: right;">$99</td>
<td style="text-align: right;">$500+</td>
<td>You still need people and contact data</td>
</tr>
<tr>
<td>Verification tool</td>
<td style="text-align: right;">$25</td>
<td style="text-align: right;">$150</td>
<td>Because bounce rates will punish lazy workflows</td>
</tr>
<tr>
<td>SDR cleanup time</td>
<td style="text-align: right;">$300</td>
<td style="text-align: right;">$1,500+</td>
<td>Someone has to dedupe, validate, prioritize</td>
</tr>
<tr>
<td>CRM/ops overhead</td>
<td style="text-align: right;">$100</td>
<td style="text-align: right;">$500</td>
<td>Sync, routing, field mapping, dedupe</td>
</tr>
<tr>
<td>Engineering time for API workflows</td>
<td style="text-align: right;">$0</td>
<td style="text-align: right;">$1,000+ amortized</td>
<td>Only “free” if you ignore internal labor</td>
</tr>
<tr>
<td><strong>Estimated all-in</strong></td>
<td style="text-align: right;"><strong>$819</strong></td>
<td style="text-align: right;"><strong>$4,145+</strong></td>
<td><strong>This is the real budget conversation</strong></td>
</tr>
</tbody>
</table>
<p>That’s why I get annoyed when someone says “BuiltWith is only $295/month.”</p>
<p>No. BuiltWith is only $295/month <strong>if the CSV itself is the outcome</strong>. In most sales orgs, it isn’t.</p>
<h3 id="a-simple-roi-mini-model">A simple ROI mini-model</h3>
<p>Let’s do the boring math because the boring math is what saves you.</p>
<p>Assume:</p>
<ul>
<li>you export <strong>10,000 domains</strong></li>
<li>only <strong>10%</strong> become reachable contacts after enrichment + verification</li>
<li>only <strong>2%</strong> of those turn into qualified conversations</li>
</ul>
<p>That leaves you with:</p>
<ul>
<li><strong>1,000 reachable accounts</strong></li>
<li><strong>20 qualified conversations</strong></li>
</ul>
<p>Now let’s price it.</p>
<p>If your all-in monthly cost is a conservative <strong>$1,000</strong>, that’s:</p>
<ul>
<li><strong>$1.00 per reachable account</strong></li>
<li><strong>$50 per qualified conversation</strong></li>
</ul>
<p>Not bad.</p>
<p>But if your true monthly cost is closer to <strong>$3,000</strong> after enrichment, verification, ops time, and cleanup, then you’re at:</p>
<ul>
<li><strong>$3.00 per reachable account</strong></li>
<li><strong>$150 per qualified conversation</strong></li>
</ul>
<p>Still maybe fine.</p>
<p>Now add reality: low-fit accounts, stale detections, unreachable owners, and weak timing. Suddenly your “cheap technographic list” can get expensive as hell.</p>
<h2 id="builtwith-api-review-usable-but-not-the-firehose-people-imagine">BuiltWith API review — usable, but not the firehose people imagine</h2>
<p>I care about systems. So let’s talk docs.</p>
<h3 id="what-the-docs-say">What the docs say</h3>
<p>BuiltWith’s public Domain API docs say:</p>
<ul>
<li><strong>Maximum 8 concurrent requests</strong></li>
<li><strong>Maximum 10 requests per second</strong> before you hit <strong>429</strong> errors</li>
<li>The <strong>free API</strong> is rate limited to <strong>1 request per second</strong></li>
</ul>
<p>That’s not me editorializing. That’s in the docs.</p>
<h3 id="api-constraints-table">API constraints table</h3>
<table>
<thead>
<tr>
<th>API factor</th>
<th>BuiltWith public doc detail</th>
<th>My take</th>
</tr>
</thead>
<tbody>
<tr>
<td>Concurrent requests</td>
<td>8 max</td>
<td>Fine for moderate workflows, not massive fan-out</td>
</tr>
<tr>
<td>Requests per second</td>
<td>10 max</td>
<td>Enough for deliberate enrichment, not “spray everything”</td>
</tr>
<tr>
<td>Free API rate limit</td>
<td>1 req/sec</td>
<td>Good for testing, not production ambition</td>
</tr>
<tr>
<td>429 behavior</td>
<td>Explicitly documented</td>
<td>Your engineering team needs backoff logic</td>
</tr>
<tr>
<td>Team plan API credits</td>
<td>100,000/month per KB</td>
<td>Useful, but absolutely finite</td>
</tr>
</tbody>
</table>
<h3 id="why-this-matters-operationally">Why this matters operationally</h3>
<p>This is perfectly workable for moderate enrichment and internal tools.</p>
<p>It is not a magic infinite stream.</p>
<p>If your team says, “we’ll just pipe this into everything,” they need to speak to engineering first. Preferably before promising a quarter’s worth of automation on a whiteboard.</p>
<h3 id="my-take-as-someone-who-cares-about-systems-not-toy-demos">My take as someone who cares about systems, not toy demos</h3>
<p>The API is good enough for deliberate workflows.</p>
<p>It is not the kind of thing I’d describe as infinitely flexible unless I wanted to create pain for my own team later.</p>
<p>That’s not a knock. It’s just adult software planning.</p>
<h2 id="hands-on-benchmark-what-i-could-actually-verify">Hands-on benchmark: what I could actually verify</h2>
<p>I’m not going to fake a lab benchmark I can’t access cleanly. No fake dashboards. No fake receipts. No bullshit.</p>
<p>What I <em>could</em> verify publicly for this article was:</p>
<ul>
<li>BuiltWith homepage and free lookup entry point</li>
<li>BuiltWith pricing and plan details from public pages/docs</li>
<li>BuiltWith detailed domain lookup attempts hit a human-test gate during browsing</li>
<li>Wappalyzer public pricing and workflow positioning</li>
<li>Ful.io public pricing and workflow positioning</li>
<li>The category-wide limitation that these tools mainly operate off front-end / website-observable signals</li>
</ul>
<p>Here’s the BuiltWith lookup attempt on <code>wayfair.com</code> in the browser during research. It hit a loading/human-test wall before a readable detailed report rendered.</p>
<p><img alt="BuiltWith detailed profile attempt hitting loading/human gate" src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2026/04/11ebca7ae88b.webp" /></p>
<p>That itself is worth noting. A public lookup flow that gets stuck on anti-bot/human checks is not the end of the world, but it does limit frictionless verification during research.</p>
<h3 id="lightweight-benchmark-score-table">Lightweight benchmark score table</h3>
<p>Since I could not credibly run the full 25-domain export benchmark without authenticated access and stable report rendering, I’m publishing the smaller benchmark I could stand behind.</p>
<table>
<thead>
<tr>
<th>Metric</th>
<th>BuiltWith</th>
<th>Wappalyzer</th>
<th>Ful.io</th>
<th>Winner</th>
</tr>
</thead>
<tbody>
<tr>
<td>Public pricing transparency</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐⭐</td>
<td>⭐⭐⭐⭐⭐</td>
<td><strong>Wappalyzer / Ful.io</strong></td>
</tr>
<tr>
<td>Free/public research accessibility</td>
<td>⭐⭐⭐☆☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐☆</td>
<td><strong>Wappalyzer / Ful.io</strong></td>
</tr>
<tr>
<td>Historical trend positioning</td>
<td>⭐⭐⭐⭐⭐</td>
<td>⭐⭐⭐☆☆</td>
<td>⭐⭐⭐☆☆</td>
<td><strong>BuiltWith</strong></td>
</tr>
<tr>
<td>Commercial lead-gen seriousness</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐☆☆</td>
<td><strong>BuiltWith / Wappalyzer</strong></td>
</tr>
<tr>
<td>Depth beyond front-end observability</td>
<td>⭐⭐☆☆☆</td>
<td>⭐⭐☆☆☆</td>
<td>⭐⭐☆☆☆</td>
<td><strong>None of them</strong></td>
</tr>
<tr>
<td>Friction during public testing</td>
<td>⭐⭐☆☆☆</td>
<td>⭐⭐⭐⭐☆</td>
<td>⭐⭐⭐⭐☆</td>
<td><strong>Wappalyzer / Ful.io</strong></td>
</tr>
</tbody>
</table>
<p>If I get stable authenticated access later, I’d happily publish the full 25-domain benchmark with raw CSVs. But I’m not inventing a test result just to make the article look complete.</p>
<h2 id="builtwith-vs-the-alternatives-a-ceo-should-actually-consider">BuiltWith vs the alternatives a CEO should actually consider</h2>
<p>Don’t compare everything to everything. Compare the job-to-be-done.</p>
<h3 id="builtwith-vs-wappalyzer">BuiltWith vs Wappalyzer</h3>
<p>Wappalyzer’s public pricing is cleaner and, frankly, easier to justify for many teams.</p>
<p>Their pricing page currently shows:</p>
<ul>
<li><strong>Pro: $250/mo</strong></li>
<li><strong>Business: $450/mo</strong></li>
<li><strong>Enterprise: $850+/mo</strong></li>
<li>Free account with <strong>50 technology lookups/month</strong> and sample lead lists</li>
</ul>
<p>It also clearly spells out features like:</p>
<ul>
<li><strong>5,000 lookups</strong> on Pro</li>
<li><strong>20,000 lookups</strong> on Business</li>
<li>API credits included from Business upward</li>
<li>CRM enrichment on Business+</li>
</ul>
<p><img alt="Wappalyzer pricing" src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2026/04/44c80ab6740e.webp" /></p>
<p>My take:</p>
<ul>
<li><strong>Wappalyzer is better for cheaper, simpler, operator-level lookup and lighter team workflows.</strong></li>
<li><strong>BuiltWith is better for bigger historical-trend work and mature commercial technographic prospecting.</strong></li>
</ul>
<p>If I’m a solo operator, I probably start with Wappalyzer.</p>
<p>If I’m an investor, analyst, or a niche ecosystem seller with a sharp ICP, BuiltWith starts making more sense.</p>
<h3 id="builtwith-vs-fulio">BuiltWith vs Ful.io</h3>
<p>Ful.io’s public pricing undercuts BuiltWith hard:</p>
<ul>
<li><strong>Individual: $149/mo</strong> with <strong>2 lead intelligence technologies</strong></li>
<li><strong>Professional: $249/mo</strong> with <strong>5 technologies</strong> and <strong>2,000 API credits</strong></li>
<li><strong>Business: $399/mo</strong> with <strong>25 technologies</strong> and <strong>20,000 API credits</strong></li>
<li>Free account with <strong>25 technology lookups</strong> and <strong>5 email searches/month</strong></li>
</ul>
<p><img alt="Ful.io pricing" src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2026/04/4e5e4494445d.webp" /></p>
<p>Ful.io also positions itself more directly around lead intelligence and includes email-search language on the public site, which matters if you’re trying to close the workflow gap faster.</p>
<p>My take:</p>
<ul>
<li><strong>Ful.io is a more budget-conscious option for some teams.</strong></li>
<li><strong>BuiltWith feels stronger on maturity, brand trust, and historical depth.</strong></li>
<li>If your team is experimenting and cost-sensitive, Ful.io deserves a look.</li>
</ul>
<h3 id="builtwith-vs-a-broader-company-intelligence-workflow">BuiltWith vs a broader company-intelligence workflow</h3>
<p>This is the strategic distinction most buyers miss.</p>
<p>BuiltWith answers:</p>
<blockquote>
<p><strong>What technology does this website appear to use?</strong></p>
</blockquote>
<p>A broader company-intelligence workflow answers:</p>
<blockquote>
<p><strong>Who buys from them, who competes with them, what changed recently, and what’s happening around the company?</strong></p>
</blockquote>
<p>That’s why I keep saying a lot of teams buy technographics when the real problem is account intelligence and timing.</p>
<p>If what you actually need is:</p>
<ul>
<li>customer and partner mapping</li>
<li>competitor mapping</li>
<li>company monitoring</li>
<li>leadership/team changes</li>
<li>product, pricing, or messaging shifts</li>
</ul>
<p>…then technographics alone is the wrong center of gravity.</p>
<p>That’s where something like NinjaPear fits naturally <strong>after</strong> detection, not instead of it. BuiltWith can help you identify a stack-based slice of the market. NinjaPear is for understanding what’s actually happening around those accounts so you don’t reach out at the wrong damn time.</p>
<p>And more importantly, NinjaPear is working in a different data paradigm altogether. It is not trying to infer everything from visible front-end code. It can map customer relationships, company details, competitors, employees, and company changes from a website input. That is a different job.</p>
<h2 id="what-redditors-are-saying-about-builtwith">What Redditors are saying about BuiltWith</h2>
<p>I like Reddit because it strips away the sales deck voice.</p>
<p>It also over-indexes on frustration. So read these as texture, not divine truth.</p>
<h3 id="1-lead-quality-workflow-gap">1) Lead quality / workflow gap</h3>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<div style="border-left:3px solid #ff4500;padding:12px 16px;margin:16px 0;background:#f8f9fa;border-radius:4px;font-family:-apple-system,sans-serif;">
  <div style="color:#787c7e;font-size:13px;margin-bottom:8px;">
    <strong>u/Certain-Glass4372</strong> on r/coldemail · ↑4
  </div>
  <div style="color:#1a1a1b;font-size:14px;line-height:1.5;">BuiltWith was terrible. Out of 40,000 leads, I ended up being routed through Apollo and only got 400 verified.</div>
  <a href="https://www.reddit.com/r/coldemail/comments/1ojcj5t/ecommerce_leads/?ref=nubela.co" style="color:#787c7e;font-size:12px;">source</a>
</div>

<div style="font-size:12px;color:#6b7280;margin-top:-8px;">Anecdotal user feedback, not universal truth.</div>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<p>Small sample, sharp lesson: technographics are not contactability.</p>
<h3 id="2-no-contact-data-problem">2) No contact data problem</h3>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<div style="border-left:3px solid #ff4500;padding:12px 16px;margin:16px 0;background:#f8f9fa;border-radius:4px;font-family:-apple-system,sans-serif;">
  <div style="color:#787c7e;font-size:13px;margin-bottom:8px;">
    <strong>u/Tasty_Amount6342</strong> on r/coldemail · ↑2
  </div>
  <div style="color:#1a1a1b;font-size:14px;line-height:1.5;">BuiltWith gives you lists of companies using specific tech, but it doesn't give you contact data.</div>
  <a href="https://www.reddit.com/r/coldemail/comments/1ojcj5t/ecommerce_leads/?ref=nubela.co" style="color:#787c7e;font-size:12px;">source</a>
</div>

<div style="font-size:12px;color:#6b7280;margin-top:-8px;">Anecdotal user feedback, not universal truth.</div>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<p>That’s the exact workflow gap I’d put on the buying committee slide.</p>
<h3 id="3-pricing-skepticism">3) Pricing skepticism</h3>
<p>I couldn’t find a clean Reddit quote with broad consensus and enough context to treat as representative. What I <em>did</em> find was a recurring theme in discussion: people saying BuiltWith is powerful, but the price only works if the use case is highly defined.</p>
<p>Honestly, I agree.</p>
<p>A broad-market team with fuzzy targeting can waste <strong>$495/month</strong> on BuiltWith very efficiently.</p>
<h3 id="4-alternative-comparison">4) Alternative comparison</h3>
<p>I found a useful comparison comment in a Reddit thread about BuiltWith alternatives.</p>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<div style="border-left:3px solid #ff4500;padding:12px 16px;margin:16px 0;background:#f8f9fa;border-radius:4px;font-family:-apple-system,sans-serif;">
  <div style="color:#787c7e;font-size:13px;margin-bottom:8px;">
    <strong>u/phb71</strong> on r/coldemail · ↑1
  </div>
  <div style="color:#1a1a1b;font-size:14px;line-height:1.5;">So I looked into alternatives and found a few... (I went for Wappalyzer).</div>
  <a href="https://www.reddit.com/r/coldemail/comments/1h11l6r/builtwith_alternatives/?ref=nubela.co" style="color:#787c7e;font-size:12px;">source</a>
</div>

<div style="font-size:12px;color:#6b7280;margin-top:-8px;">Anecdotal user feedback, not universal truth.</div>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<p>Not the strongest quote in the world, but it does reflect a common pattern: when buying friction or price friction shows up, people jump to Wappalyzer fast.</p>
<h3 id="5-onboardingpayment-friction">5) Onboarding/payment friction</h3>
<p>Already covered above, but worth repeating: even anecdotal friction matters when you’re trying to get a team running this quarter, not next quarter.</p>
<h2 id="my-hot-takes-on-builtwith">My hot takes on BuiltWith</h2>
<p>I’ll save you the diplomatic version.</p>
<ol>
<li><strong>BuiltWith is a real product. But a lot of teams buy it as a shortcut to pipeline, and that is where they screw themselves.</strong></li>
<li><strong>The entry pricing is not outrageous because of the dollar amount. It’s outrageous when you compare it to how partial the workflow still is.</strong></li>
<li><strong>Technographic targeting is useful. Technographic targeting alone is not a growth strategy.</strong></li>
<li><strong>If I’m the CEO, I only approve this budget when the ICP is brutally specific or the research value is obvious.</strong></li>
<li><strong>Most companies do not have a BuiltWith problem. They have an account selection and timing problem.</strong></li>
</ol>
<p>And one more, because I’m in the mood:</p>
<p><strong>The wrong team can waste $495/month on BuiltWith very efficiently.</strong></p>
<p>And another, because this is the part people keep missing:</p>
<p><strong>BuiltWith, Wappalyzer, and the rest of the scanner crowd are fundamentally looking at front-end evidence. That is a useful slice of reality. It is not the whole company.</strong></p>
<h2 id="faq-for-people-searching-builtwith">FAQ for people searching BuiltWith</h2>
<h3 id="is-builtwith-free">Is BuiltWith free?</h3>
<p>Sort of.</p>
<p>The <strong>free lookup</strong> is available for individual site research. Paid plans begin at around <strong>$295/month</strong> based on public pricing, and there’s also an <strong>Advanced</strong> plan at <strong>$144/year</strong> for detailed individual site lookups.</p>
<h3 id="is-builtwith-accurate">Is BuiltWith accurate?</h3>
<p>Useful enough to drive research and segmentation.</p>
<p>Not magical enough to skip validation on high-value accounts.</p>
<p>If one account actually matters, verify before outreach.</p>
<h3 id="is-builtwith-worth-it">Is BuiltWith worth it?</h3>
<p>Only if your team can monetize technographic segmentation quickly and already understands the rest of the workflow.</p>
<p>If the plan is “buy BuiltWith and figure the rest out later,” no. Absolutely not.</p>
<h3 id="what-is-the-best-builtwith-alternative">What is the best BuiltWith alternative?</h3>
<p>Depends on the job.</p>
<ul>
<li><strong>Wappalyzer</strong> for lighter lookup and cleaner pricing</li>
<li><strong>Ful.io</strong> for some budget-conscious teams that want a simpler lead-intelligence angle</li>
<li><strong>NinjaPear</strong> when the real need is company intelligence, monitoring, customer mapping, relationship data, and timing signals rather than raw front-end tech detection</li>
</ul>
<h2 id="final-verdict-who-should-buy-it-who-should-walk-away">Final verdict: who should buy it, who should walk away</h2>
<p>BuiltWith is not bullshit.</p>
<p>It’s also not a complete answer.</p>
<p>If I’m the CEO and my team can show me a narrow ICP, a real monetization path, and a downstream process for enrichment and outreach, I’ll sign off on it. No drama.</p>
<p>If the pitch is “we’ll buy BuiltWith and figure the rest out later,” absolutely not. That’s how software turns into shelfware and everyone pretends the problem was lead quality.</p>
<p>BuiltWith is good at telling you what a company’s site runs. It is not, by itself, a revenue engine.</p>
<p>And if I really want to be precise: it is part of the <strong>front-end observability</strong> layer of market research. Useful layer. Incomplete layer.</p>
<p>There is a whole separate paradigm beyond front-end tech scraping — customer lists, partner maps, competitor graphs, company monitoring, and relationship intelligence. If that is the actual job to be done, buy for <em>that</em> job instead.</p>
<p>So here’s the next step I’d actually recommend: before you approve budget, force your team to model one campaign on paper. Pick the technologies. Estimate reachable-contact rate. Estimate verification rate. Estimate meetings. Then ask one harder question: <strong>is technographic detection actually the bottleneck, or do you really need customer intelligence and timing signals instead?</strong></p>
<p>If the math still works, fine — buy BuiltWith.</p>
<p>If the math falls apart, you don’t need BuiltWith. You need a better go-to-market thesis.</p>
<!--kg-card-end: html-->
 ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ Introducing Person Profile Endpoint (Also: 1000 Users/66K ARR 🎉) ]]></title>
        <description><![CDATA[ I am happy to share a new API endpoint with you today: the Person Profile API Endpoint. The Person Profile Endpoint takes a work email, a name+company, or a role+company combination and returns a full and detailed person profile, including his/her work history, education history, and public ]]></description>
        <link>https://nubela.co/blog/introducing-person-profile-endpoint-also-1000-users-66k-arr/</link>
        <guid isPermaLink="false">69c3ab3bdc900c00015cda91</guid>
        <category><![CDATA[ announcement ]]></category>
        <dc:creator><![CDATA[ Steven Goh | CEO ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2019/05/square.jpg"/>
        <pubDate>Wed, 25 Mar 2026 17:41:20 +0800</pubDate>
        <media:content url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2026/03/Gemini_Generated_Image_ax02n9ax02n9ax02.jpg" medium="image"/>
        <content:encoded><![CDATA[ <p>I am happy to share a new API endpoint with you today: the <a href="https://nubela.co/employee-api?ref=nubela.co">Person Profile API Endpoint</a>. The Person Profile Endpoint takes a work email, a name+company, or a role+company combination and returns a full and detailed person profile, including his/her work history, education history, and public profile picture (from his/her X profile, if any).</p>
<p>With Patrick Collison's work email, you can get his full professional profile:</p>
<pre><code class="language-bash">curl -G \
  "https://nubela.co/api/v1/employee/profile" \
  --data-urlencode "work_email=patrick@stripe.com" \
  -H "Authorization: Bearer YOUR_API_KEY"
</code></pre>
<p>His professional profile:</p>
<pre><code class="language-json">{
  "id": "a3xK9mP2",
  "full_name": "Patrick Collison",
  "first_name": "Patrick",
  "last_name": "Collison",
  "bio": "Co-founder and CEO of Stripe",
  "profile_pic_url": "https://pbs.twimg.com/...",
  "country": "IE",
  "city": "IELIM",
  "x_handle": "patrickc",
  "x_profile_url": "https://x.com/patrickc",
  "personal_website": "https://patrickcollison.com",
  "work_experience": [
    {
      "role": "Co-founder &amp; CEO",
      "company_name": "Stripe",
      "company_website": "stripe.com",
      "start_date": "2010-01",
      "end_date": null
    },
    {
      "role": "Software Developer",
      "company_name": "Shuppa",
      "company_website": null,
      "start_date": "2007-06",
      "end_date": "2009-12"
    }
  ],
  "education": [
    {
      "major": "B.S. Mathematics",
      "school": "MIT",
      "start_date": "2006-09",
      "end_date": "2009-06"
    }
  ]
}
</code></pre>
<h2 id="how-does-it-work">How does it work?</h2>
<p>First and foremost, we <strong>do not</strong> scrape that particular professional social network site (starting with L). In fact, <strong>nothing</strong> on NinjaPear scrapes that site, nor will we ever do so. <a href="https://nubela.co/blog/goodbye-proxycurl/">We learnt our lesson</a>, so we will not put you or ourselves at any legal risk.</p>
<p>The Person Profile Endpoint searches and aggregates relevant personal professional data from public web sources. Then, we use AI to extract relevant parts of it and semantically structure the data so that you get clean and fresh personal profile data.</p>
<p>In fact, the Person Profile Endpoint goes beyond simple profile enrichment. It performs an AI search to make sure that the person you are searching for is the correct person. For example, you can tell the Person Profile Endpoint to get the profile data of the <strong>CTO</strong> of <strong>Delve</strong> without actually knowing his identity, like this:</p>
<pre><code class="language-bash">curl -G \
    -H "Authorization: Bearer 2718ebe643cf4d9682d64b5889fb43f4" \
    --data-urlencode "employer_website=https://delve.co" \
    --data-urlencode "role=cto" \
    "https://nubela.co/api/v1/employee/profile"
</code></pre>
<p>And because I honestly didn't know who he was, I ran the query with my own API key and this is what I got:</p>
<pre><code class="language-json">{
  "bio": null,
  "city": "LTVIE",
  "country": "LT",
  "education": [
    {
      "end_date": "2016-01",
      "major": "BSc in Artificial Intelligence and Computer Science; Master of Informatics (MInf)",
      "school": "The University of Edinburgh",
      "start_date": "2011-01"
    },
    ...
  ],
  "first_name": "Ingvaras",
  "follower_count": null,
  "following_count": null,
  "full_name": "Ingvaras Merkys",
  "id": "lEPJGBoE",
  "last_name": "Merkys",
  "middle_name": null,
  "personal_website": "ingvaras.com",
  "profile_pic_url": null,
  "slug": "ingvaras-merkys",
  "state": null,
  "work_experience": [
    {
      "company_name": "Delve",
      "company_website": "delve.co",
      "description": "AI-native compliance platform that automates regulatory frameworks like SOC 2 and HIPAA",
      "end_date": null,
      "role": "Technical Co-Founder and CTO",
      "start_date": "2024-02"
    },
    ...
  ],
  "x_handle": null,
  "x_profile_url": null
}
</code></pre>
<p>You can view the full JSON <a href="https://gist.github.com/nubela/e6edd1237d07761ae9ca5e1cedd1fce0?ref=nubela.co">here</a>.</p>
<h2 id="how-well-does-the-person-profile-endpoint-work">How well does the Person Profile Endpoint work?</h2>
<h2 id="match-rate">Match Rate</h2>
<table>
<thead>
<tr>
<th><strong>Input Method</strong></th>
<th><strong>Profiles Found</strong></th>
<th><strong>Accuracy</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td>Work email</td>
<td>10/10</td>
<td>100%</td>
</tr>
<tr>
<td>First name + Last name + Company</td>
<td>9/10</td>
<td>90%</td>
</tr>
<tr>
<td>Role + Company</td>
<td>7/10</td>
<td>70%</td>
</tr>
</tbody>
</table>
<p>The name+company miss was a very common name at a large company (First_Name Last_Name at Google). The role+company misses were either too-generic roles ("Software Engineer" at Google) or obscure companies with limited public presence.</p>
<h2 id="x-profile-profile-picture-enrichment">X Profile &amp; Profile Picture Enrichment</h2>
<table>
<thead>
<tr>
<th><strong>Input Method</strong></th>
<th><strong>X Handle Found</strong></th>
<th><strong>Profile Picture</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td>Work email</td>
<td>2/10</td>
<td>2/10 (20%)</td>
</tr>
<tr>
<td>Name + Company</td>
<td>3/10</td>
<td>3/10 (30%)</td>
</tr>
<tr>
<td>Role + Company</td>
<td>4/10</td>
<td>4/10 (40%)</td>
</tr>
</tbody>
</table>
<p>Profile pictures are sourced from X/Twitter profiles. When an X handle is found and validated, the profile picture, bio, and follower counts are populated.</p>
<h2 id="response-time-uncached">Response Time (Uncached)</h2>
<p>Measured from production (nubela.co), all cold-starts (no upstream cache):</p>
<table>
<thead>
<tr>
<th><strong>Percentile</strong></th>
<th><strong>Time</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td>p5</td>
<td>17.6s</td>
</tr>
<tr>
<td>p50</td>
<td>23.1s</td>
</tr>
<tr>
<td>p95</td>
<td>31.1s</td>
</tr>
</tbody>
</table>
<p><strong>Raw Data (Work Email Tests):</strong></p>
<p>These are the 10 work email tests specifically (the most consistent dataset): 17.6, 20.5, 20.8, 20.9, 23.7, 24.2, 25.4, 26.4, 27.1, 31.1 seconds.</p>
<h2 id="1036-ninjapear-users-66k-arr">1036 NinjaPear users! 66K ARR!</h2>
<p>In the 54 days since we launched, NinjaPear has grown to <strong>1036 registered users</strong> at the time of writing. On top of that, NinjaPear is now running at an <strong>annualized run rate of around $66,000</strong>! Not bad for a product that is barely two months old. My point is, NinjaPear is <em>here to stay</em> because we are now profitable and growing exponentially.</p>
<h2 id="75-bonus-credits-for-one-last-subscriber">+75% bonus credits for one last subscriber</h2>
<p>One last thing. I never did publicize this, except for a <a href="https://nubela.co/blog/first-10-subscribers/">blog post</a> that I did not share publicly. But for 5 more subscribers, you stand to get up to 75% bonus credits, among other swag. 5 slots have already been taken. Each new subscriber will reduce the bonus by 5%. I can guarantee you that after these 5 subscribers, there will <strong>never</strong> be another promotion. People who know me as the CEO of Proxycurl, which I grew to 10M ARR, will know that I mean it when I say that I do not offer seasonal promotions.</p>
<p>And trust me, you want to upgrade to a subscription. I will be gatekeeping the free APIs behind tiered rate limits based on your subscription plan soon. For users not on a subscription plan, the rate limit of free APIs will be kept to 2 requests/minute. You heard it here first!</p>
<p>As usual, if you have any questions at all, send us an email at <a href="mailto:hello@nubela.co">hello@nubela.co</a> and we'll respond to you personally ASAP, sans AI!</p>
 ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ Introducing Company Funding and Updates Endpoints ]]></title>
        <description><![CDATA[ I am happy to share today that the Company API just got supercharged with two new endpoints and more data points returned. We are on a consistent and relentless march towards being the ultimate ethically sourced data provider of company and competitive intelligence. Today, I am happy to introduce to ]]></description>
        <link>https://nubela.co/blog/introducing-company-funding-and-updates-endpoints/</link>
        <guid isPermaLink="false">69bba14277821c0001ad7505</guid>
        <category><![CDATA[ ninjapear ]]></category>
        <dc:creator><![CDATA[ Steven Goh | CEO ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2019/05/square.jpg"/>
        <pubDate>Thu, 19 Mar 2026 15:15:51 +0800</pubDate>
        <media:content url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2026/03/new_company_endpoints.jpg" medium="image"/>
        <content:encoded><![CDATA[ <p>I am happy to share today that the <a href="https://nubela.co/company-api?ref=nubela.co">Company API</a> just got supercharged with two new endpoints and more data points returned. We are on a consistent and relentless march towards being the ultimate ethically sourced data provider of company and competitive intelligence. Today, I am happy to introduce to you:</p>
<ul>
<li><a href="https://nubela.co/docs/?ref=nubela.co#company-funding-endpoint">Company Funding Endpoint</a> -- Takes a website and returns a company's funding history, amount, and investors.</li>
<li><a href="https://nubela.co/docs/?ref=nubela.co#company-updates-endpoint">Company Updates Endpoint</a> -- Takes a website and returns a company's recent updates from various platforms such as its blog, X/Twitter profile, amongst others.</li>
</ul>
<p>On top of that, we have added:</p>
<ul>
<li><code>follower_count</code> + <code>following_count</code> attributes in the response of the <a href="https://nubela.co/docs/?ref=nubela.co#company-details-endpoint">Company Details Endpoint</a>, as a signal of how popular a company is in the public sphere. This data is obtained from a company's public X/Twitter profile.</li>
</ul>
<h2 id="company-funding-data">Company Funding Data</h2>
<p>As a founder wearing the GTM hat, company funding data matters as a signal of whether a company can afford our services or not. On top of that, VCs and investors can use our company funding data to continually track startups of interest, at scale.</p>
<p>Try it yourself with Stripe's funding data:</p>
<pre><code class="language-bash">curl -G \
  "https://nubela.co/api/v1/company/funding" \
  --data-urlencode "website=https://stripe.com" \
  -H "Authorization: Bearer demo-api-key"
</code></pre>
<h2 id="company-updates-data">Company Updates Data</h2>
<p>This one goes out to all the OpenClaw masters using their clawbots to perform cold GTM outreach. With NinjaPear's Company Updates Data, you can immediately grasp the recent messaging that your target ICP company is pushing out to the public, to which you can adapt your message.</p>
<p>Try it yourself with Stripe's recent updates:</p>
<pre><code class="language-bash">curl -G \
  "https://nubela.co/api/v1/company/updates" \
  --data-urlencode "website=https://stripe.com" \
  -H "Authorization: Bearer demo-api-key"
</code></pre>
<h2 id="data-source">Data Source</h2>
<p>We did not crawl Crunchbase, Pitchbook, or any other private/public funding or news site for this data. This is publicly sourced data that is put out across the web, aggregated and structured. So go forth, and use this data to build your data-driven workflows with confidence.</p>
 ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ Introducing Competitor API - Real-time Automated Competitor Research ]]></title>
        <description><![CDATA[ I&#39;m happy to share that the Competitor Listing Endpoint, under the Competitor API, is now generally available! The Competitor Listing Endpoint takes a target company&#39;s website and returns a list of competitors by their corresponding website URLs. In other words, we have taken what used to ]]></description>
        <link>https://nubela.co/blog/introducing-competitor-api-real-time-automated-competitor-research/</link>
        <guid isPermaLink="false">69aa4619cce2f30001d6a250</guid>
        <category><![CDATA[ ninjapear ]]></category>
        <dc:creator><![CDATA[ Steven Goh | CEO ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2019/05/square.jpg"/>
        <pubDate>Fri, 06 Mar 2026 11:26:22 +0800</pubDate>
        <media:content url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2026/03/competitor.jpg" medium="image"/>
        <content:encoded><![CDATA[ <p>I'm happy to share that the <a href="https://nubela.co/docs/?ref=nubela.co#competitor-listing-endpoint">Competitor Listing Endpoint</a>, under the <a href="https://nubela.co/competitors?ref=nubela.co">Competitor API</a>, is now generally available! The Competitor Listing Endpoint takes a target company's website and returns a list of competitors by their corresponding website URLs. In other words, we have taken what used to take hours of research and compressed it into a real-time synchronous API call that takes approximately 30s to complete.</p>
<h2 id="sample-data-and-data-quality">Sample Data and Data Quality</h2>
<p>To be as unbiased as I can be, I decided to run the data sampling and quality test through <a href="https://nubela.co/claude?ref=nubela.co">Claude via NinjaPear's MCP</a>.</p>
<p>This is my prompt:</p>
<blockquote>
<p>Can you help me to sample a couple of companies for the competitor listing endpoint, in a way to review the quality of results (for a blog post)? I want you to try it with companies of different sizes/niches. You can use the competitor listing endpoint on production. Compile your findings in tabular format.</p>
</blockquote>
<h3 id="claudes-response">Claude's Response</h3>
<h4 id="ninjapear-competitor-listing-%E2%80%94-quality-review">NinjaPear Competitor Listing — Quality Review</h4>
<p><strong>Summary</strong></p>
<table>
<thead>
<tr>
<th><strong>Company</strong></th>
<th><strong>Niche</strong></th>
<th><strong>Size</strong></th>
<th><strong># Found</strong></th>
<th><strong>Top Product Overlap Competitors</strong></th>
<th><strong>Quality Notes</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Stripe</strong></td>
<td>Payments</td>
<td>Large</td>
<td>23</td>
<td>PayPal, Adyen, Square, Paddle, Braintree, Airwallex</td>
<td>Excellent. Core payment competitors are spot-on. Keyword overlap section includes banks (Chase, BoA) — tangentially relevant but not direct competitors.</td>
</tr>
<tr>
<td><strong>Notion</strong></td>
<td>Productivity / Docs</td>
<td>Large</td>
<td>16</td>
<td>Coda, ClickUp, Airtable, Slite, Obsidian, AppFlowy</td>
<td>Very strong. Nails both commercial (Coda, Airtable) and open-source alternatives (AppFlowy, Anytype).</td>
</tr>
<tr>
<td><strong>Linear</strong></td>
<td>Issue Tracking</td>
<td>Mid</td>
<td>18</td>
<td>Plane, Shortcut, Huly, Atlassian (Jira), GitHub, ClickUp, Asana</td>
<td>Excellent. Captures the full spectrum from dev-focused (Plane, Shortcut, Huly) to broader PM tools (Asana, Monday).</td>
</tr>
<tr>
<td><strong>Mailchimp</strong></td>
<td>Email Marketing</td>
<td>Large</td>
<td>14</td>
<td>MailerLite, Brevo, Constant Contact, Klaviyo, ActiveCampaign, ConvertKit</td>
<td>Strong. All major email marketing platforms present. Keyword overlap includes adjacent CRM/marketing tools (HubSpot, Salesforce, Hootsuite).</td>
</tr>
<tr>
<td><strong>Figma</strong></td>
<td>Design</td>
<td>Large</td>
<td>18</td>
<td>Penpot, Sketch, UXPin, Adobe, Framer, Axure, Miro</td>
<td>Excellent. Covers prototyping (Axure, ProtoPie), open-source (Penpot), and AI newcomers (Creatie, Visily). Keyword overlap adds Canva/Webflow — reasonable adjacent tools.</td>
</tr>
<tr>
<td><strong>Calendly</strong></td>
<td>Scheduling</td>
<td>Mid</td>
<td>18</td>
<td>Cal.com, TidyCal, SavvyCal, Acuity, Chili Piper, Doodle, Reclaim.ai</td>
<td>Very strong. Hits niche scheduling tools (SavvyCal, TidyCal) and enterprise options (Chili Piper). Zoom/Webex in keyword overlap is sensible.</td>
</tr>
<tr>
<td><strong>Vercel</strong></td>
<td>Cloud / Hosting</td>
<td>Mid</td>
<td>15</td>
<td>Netlify, Cloudflare, Render, DigitalOcean, Fly.io, Railway, AWS, Azure</td>
<td>Excellent. Great mix of direct (Netlify, Render, Railway) and broader cloud (AWS, Azure). Even picks up self-hosted alternatives (Coolify, Dokploy).</td>
</tr>
</tbody>
</table>
<hr>
<p><strong>Overall Assessment</strong></p>
<table>
<thead>
<tr>
<th><strong>Dimension</strong></th>
<th><strong>Rating</strong></th>
<th><strong>Notes</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Precision</strong></td>
<td>High</td>
<td>Product overlap results are consistently relevant — very few false positives.</td>
</tr>
<tr>
<td><strong>Recall</strong></td>
<td>High</td>
<td>Covers major known competitors plus lesser-known/niche alternatives that add value.</td>
</tr>
<tr>
<td><strong>Categorization</strong></td>
<td>Useful</td>
<td>The "product overlap" vs "organic keyword overlap" distinction works well. Product overlap competitors are consistently stronger matches.</td>
</tr>
<tr>
<td><strong>Niche discovery</strong></td>
<td>Strong</td>
<td>Picks up emerging/small competitors (Huly, Dokploy, Coolify, Creatie.ai) that most databases miss.</td>
</tr>
<tr>
<td><strong>Edge cases</strong></td>
<td>Minor</td>
<td>Some keyword-overlap results are tangential (e.g., banks for Stripe, Dribbble for Figma), but the separation makes this easy to filter.</td>
</tr>
</tbody>
</table>
<p><strong>Standout Observations</strong></p>
<ol>
<li><strong>Small/emerging competitors surfaced well</strong> — Huly.io, Plane.so, Dokploy, Coolify, and Creatie.ai are all real but lesser-known alternatives that demonstrate depth beyond just listing the obvious players.</li>
<li><strong>Two-signal approach works</strong> — "Product overlap" competitors are consistently the most relevant, while "keyword overlap" adds broader context without polluting the core list.</li>
<li><strong>Cross-niche accuracy</strong> — Results are strong whether the company is in payments, design, email marketing, or dev tools. No niche bias detected.</li>
<li><strong>Count range</strong> — 14–23 competitors per query gives enough breadth without overwhelming noise.</li>
</ol>
<h2 id="use-cases">Use-cases</h2>
<p>As an entrepreneur, I honestly believe in dog-fooding. So I'll start with why the Competitor Listing Endpoint is going to be very useful for me.</p>
<ol>
<li>I'm going to be able to find all the competitors of my ideal customers that signed up on NinjaPear and prod them into using NinjaPear. To be specific, the Competitor Listing Endpoint makes this process effortless.</li>
<li>Better onboarding experience on NinjaPear. Imagine: I'll be able to tell every new user who logs into NinjaPear who their competitors are and ask if they want to generate a report of their competitors' customers.</li>
</ol>
<p>And that's just off the top of my head. For you, the use-cases are limitless.</p>
<p>You can:</p>
<ol>
<li>Quickly identify a prospect's competitors before a call.</li>
<li>Use <a href="https://nubela.co/company-monitor?ref=nubela.co">NinjaPear's Company Monitor</a> and monitor your competitors for competitive intelligence.</li>
</ol>
<h2 id="pricing">Pricing</h2>
<p>The Competitor API will cost <code>2</code> credits per competitor returned, with a minimum of <code>5</code> credits charged per API call.</p>
<h2 id="try-it-out-today">Try it out today!</h2>
<p>Sniff and snuff out your competitors today. Start by identifying an exhaustive list of them. Try it out now at no credit cost:</p>
<pre><code>curl -X GET \
  "https://nubela.co/api/v1/competitor/listing?website=stripe.com" \
  -H "Authorization: Bearer demo-api-key"
</code></pre>
<p>Questions? Send us an email at <a href="mailto:hello@nubela.co">hello@nubela.co</a>!</p>
 ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ Introducing Company Monitor and Updates API ]]></title>
        <description><![CDATA[ I&#39;m happy to share that the Company Monitor and the Updates API which powers the Company Monitor are now generally available on NinjaPear. Company Monitor (and the Updates API) takes a set of websites, tracks them, and provides you with updates from their blog posts, their social media ]]></description>
        <link>https://nubela.co/blog/introducing-company-monitor/</link>
        <guid isPermaLink="false">69a656337c54f70001878d62</guid>
        <category><![CDATA[ ninjapear ]]></category>
        <dc:creator><![CDATA[ Steven Goh | CEO ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2019/05/square.jpg"/>
        <pubDate>Tue, 03 Mar 2026 11:46:26 +0800</pubDate>
        <media:content url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2026/03/updates-1.jpg" medium="image"/>
        <content:encoded><![CDATA[ <p>I'm happy to share that the <a href="https://nubela.co/company-monitor?utm_source=blog" rel="noreferrer">Company Monitor</a> and the <a href="https://nubela.co/updates?utm_source=blog" rel="noreferrer">Updates API</a> which powers the Company Monitor are now generally available on NinjaPear. Company Monitor (and the Updates API) takes a set of websites, tracks them, and provides you with <strong>updates</strong> from their blog posts, their social media (X/Twitter) posts, as well as any meaningful (competitive intelligence) changes on their website.</p><h2 id="what-does-the-company-monitor-look-like-here-is-the-ui-vs-rss-view">What does the Company Monitor look like? Here is the UI vs RSS view</h2>
<!--kg-card-begin: html-->
<iframe src="https://nubela.co/widget/monitor-demo" width="100%" height="700px" frameborder="0" style="border: none; border-radius: 16px; max-width: 672px; margin: 0 auto; display: block;"></iframe>
<!--kg-card-end: html-->
<h2 id="company-monitor">Company Monitor</h2>
<p>Company Monitor is <strong>not</strong> just a website monitoring tool like Visualping or Distill.io. Yes, it monitors websites, but the product goes far beyond—blog posts, social media posts, etc. Company Monitor is available on NinjaPear's dashboard as a tool for professionals.</p>
<p>You will be the first to know every move that a company makes, whether it is a blog post, updates to a website, or a post made by the company on social media. Simply put, Company Monitor offers you <strong>company change</strong> data, another facet of the overarching myriad of competitive intelligence data that NinjaPear provides.</p>
<p>Unlike most other website monitors such as Visualping, Company Monitor does not <em>just</em> monitor websites. The product intention here is to provide you with competitive intelligence data on moves that your target business will make—not just on their website, but beyond it as well. Today, we launch with monitoring blogs, X posts, as well as changes made on the website. Moving forward, I expect to include all kinds of updates such as news, PR releases, rumors, reviews, etc.</p>
<p>While data is important, ingestion of the data is equally important. We put in significant work to make sure:</p>
<ol>
<li>You do not ingest negligible rubbish.</li>
<li>It just works. There will be no configuration hell.</li>
<li>Changes are easily understood.</li>
</ol>
<p>Under the hood, Company Monitor filters for meaningful changes with AI, summarizes the change in simple words, tells you why it is important, and then displays the changes in a timeline format.</p>
<p>Company Monitor just works.</p>
<h2 id="updates-api">Updates API</h2>
<p>The Updates API is the underlying engine of Company Monitor. Every benefit that Company Monitor offers, the Updates API does as well. You make a call to the API to create a feed, and in return, you get an RSS feed which you can poll as often as you like for company changes. See API documentation for the Updates API <a href="https://nubela.co/docs/?ref=nubela.co#updates-api">here</a>.</p>
<p>At a high level, the core concepts of the Updates API revolve around <em>feeds</em> and <em>targets</em>. Feeds are RSS feeds. Targets are businesses denoted by their website URLs. And because it is an RSS feed, you can consume the feed through your favorite RSS reader such as Feedly or Slack.</p>
<h2 id="pricing">Pricing</h2>
<p>This is how much it will cost to use Company Monitor or the Updates API for various use cases.</p>
<table>
<thead>
<tr>
<th><strong>Scenario</strong></th>
<th><strong>Targets</strong></th>
<th><strong>Frequency</strong></th>
<th><strong>Credits/month</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td>VC tracking 20 portfolio companies</td>
<td>20</td>
<td>Weekly</td>
<td>~<strong>346</strong> credits (3 one-time + 20 × 4 × 4.3 weeks)</td>
</tr>
<tr>
<td>Startup monitoring 10 competitors</td>
<td>10</td>
<td>Daily</td>
<td>~<strong>1,203</strong> credits (3 one-time + 10 × 4 × 30 days)</td>
</tr>
<tr>
<td>Sales team watching 5 prospect accounts (blog + X only, no website)</td>
<td>5</td>
<td>Daily</td>
<td>~<strong>453</strong> credits (3 one-time + 5 × 3 × 30 days)</td>
</tr>
</tbody>
</table>
<p>For further breakdown, see <a href="https://nubela.co/docs/?ref=nubela.co#pricing">Updates API pricing</a>.</p>
<h2 id="structured-data-rss-feeds-api-first-social-media-monitoring-included-no-per-page-limits">Structured data (RSS feeds), API-first, social media monitoring included, no per-page limits</h2>
<p>What are you waiting for? NinjaPear's Company Monitor just works. Give it a try now by logging into <a href="https://nubela.co/dashboard/monitor/?ref=nubela.co">NinjaPear's dashboard</a> and add your competitors' websites to track them!</p>
 ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ NinjaPear for Claude, Company Details &amp; Size API ]]></title>
        <description><![CDATA[ Happy Lunar New Year!



NinjaPear in Claude


I&#39;m happy to share today that you can now use NinjaPear data entirely in Claude. Not just Claude Chat, but Claude Code, Cowork, PowerPoint, Excel—everything B2B data would be helpful for—so you can do things like:


 1. Ask &quot; ]]></description>
        <link>https://nubela.co/blog/ninjapear-for-claude-and-new-api-endpoints/</link>
        <guid isPermaLink="false">6996e7a41209920001dd866a</guid>
        <category><![CDATA[ ninjapear ]]></category>
        <dc:creator><![CDATA[ Steven Goh | CEO ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2019/05/square.jpg"/>
        <pubDate>Thu, 19 Feb 2026 18:39:46 +0800</pubDate>
        <media:content url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2026/02/claude.jpg" medium="image"/>
        <content:encoded><![CDATA[ <p>Happy Lunar New Year!</p>
<h2 id="ninjapear-in-claude">NinjaPear in Claude</h2>
<p>I'm happy to share today that you can now use NinjaPear data entirely in Claude. Not just Claude Chat, but Claude Code, Cowork, PowerPoint, Excel—everything B2B data would be helpful for—so you can do things like:</p>
<ol>
<li>Ask "Who are Shopify's customers?" or "How many employees does Anthropic have?"</li>
<li>Use Claude Code and...
<ul>
<li>add company logos to user accounts on your dashboard using NinjaPear's Logo API.</li>
<li>automatically enrich your CRM with company details for all accounts.</li>
<li>integrate email validation into your sign-up flow.</li>
</ul>
</li>
<li>Use Claude Cowork and...
<ul>
<li>research a company before a meeting.</li>
<li>perform a competitive analysis: Stripe vs. Adyen vs. Square.</li>
</ul>
</li>
<li>Use Claude for Excel and...
<ul>
<li>build a lead list from Salesforce's customers.</li>
<li>build an investor overlap matrix between your portfolio companies.</li>
</ul>
</li>
<li>Use Claude for PowerPoint and...
<ul>
<li>build a competitive battle card slide.</li>
<li>build a company overview slide for Stripe.</li>
</ul>
</li>
</ol>
<p>Takes just 2 minutes. Go to <a href="https://nubela.co/dashboard/ai-integrations/claude?ref=nubela.co">NinjaPear's dashboard for Claude</a> and get started.</p>
<h2 id="introducing-company-details-endpoint-and-employee-count-endpoint">Introducing Company Details Endpoint and Employee Count Endpoint</h2>
<p>On top of that, I'm also happy to share two new API endpoints:</p>
<ol>
<li><a href="https://nubela.co/docs/?ref=nubela.co#company-details-endpoint">Company Details Endpoint</a></li>
<li><a href="https://nubela.co/docs/?ref=nubela.co#employee-count-endpoint">Employee Count Endpoint</a></li>
</ol>
<p>We extract this information from the public web and we do <strong>not</strong> crawl any social networks. In fact, our data is a lot richer than standard professional social network profiles. For example, we include data such as revenue of public companies by crawling SEC filings (Submissions, CXBRL, and GLEIF/LEI data).</p>
<p>These new API endpoints are already live and are included in our <a href="https://nubela.co/docs/?ref=nubela.co#client-libraries">PY/JS libraries</a>.</p>
<p>I believe these API endpoints will be extremely useful in helping you enrich customer companies and helping to score them further, particularly with our integration with Claude.</p>
<hr>
<p>We've barely started. We have our heads down and we have TWO gigantic paradigms of data in the pipeline.</p>
<p>The first will be <strong>Competitor data</strong>, through which you will be able to identify competitors for your business, or any other business really.</p>
<p>The second data will be <strong>Product data</strong>. And this is a huge one. We are going to map and track products (and services) created by every company in the world. And instead of dumping them into a fixed product taxonomy, we will map products on two planes of matrices: first by product type, and second by product features.</p>
<p>So you can not only find a "CRM" (if you're seeking one), but you can also zoom in to find which CRM is <strong>free</strong> and is <strong>well integrated with Gmail</strong>. And just imagine doing this for every company in the world.</p>
<p>We're building the data pipeline to map every business in the world by customers, products, and competitors. The best source of data for competitive intelligence and market research.</p>
<p>If you have not subscribed to an account yet, do it now. I assure you that when everything is live, our prices will go up. Besides, I have only <a href="https://nubela.co/blog/first-10-subscribers/">10 pairs of NinjaPear socks up for grabs</a>. It's not our <a href="https://nubela.co/blog/goodbye-proxycurl/">first rodeo</a> building a company; you know we always deliver :)</p>
 ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ Better Customer Data, JS/PY SDKs, etc. ]]></title>
        <description><![CDATA[ Improved Customer Listing Endpoint


You want better customer results and we have them. I spent the weekend dramatically improving the quality of the results of the Customer Listing Endpoint. There were two main problems with the customer data: there was too much noise, including some customers that are no longer ]]></description>
        <link>https://nubela.co/blog/better-customer-data-js-py-sdks-etc/</link>
        <guid isPermaLink="false">69899d50c363370001f11912</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Steven Goh | CEO ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2019/05/square.jpg"/>
        <pubDate>Mon, 09 Feb 2026 16:42:36 +0800</pubDate>
        <media:content url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2026/02/polish.jpg" medium="image"/>
        <content:encoded><![CDATA[ <h2 id="improved-customer-listing-endpoint">Improved Customer Listing Endpoint</h2>
<p>You want better customer results and we have them. I spent the weekend dramatically improving the quality of the results of the <a href="https://nubela.co/docs?ref=nubela.co#customer-listing-endpoint">Customer Listing Endpoint</a>. There were two main problems with the customer data: there was too much noise, including some customers that are no longer alive.</p>
<p>To sort out the quality customers from the noise, I have now introduced two more categories of results to further categorize actual customers:</p>
<ul>
<li>Investors - A list of companies that are possible investors (VC firms, PE funds, angel networks) of the target company.</li>
<li>Partners &amp; Platforms - A list of companies that are partners, platforms, or service providers that the target company uses or integrates with (tech stack, media, agencies).</li>
<li>Customers (the good stuff) - A list of companies that are probable customers of the target company—entities that pay for the target's product/service.</li>
</ul>
<p>To further improve the quality of data, we will now filter out dead companies/websites and non-relevant companies with the <code>quality_filter</code> parameter, which defaults to <code>true</code>. So by default, you will get dramatically better results now.</p>
<p>See the <a href="https://nubela.co/shared/list/8c48c0a8b18a4899bbe85ea22efdf53b?ref=nubela.co">customer results</a> for <code>se-fi.com</code>, StoneEagle, a leading software provider for the automotive industry. Their ideal customer profile (ICP) would be high-volume stakeholders within the retail automotive ecosystem, and you can see that most of the customers reflect that.</p>
<p>We also know that Battery Ventures is their VC, and it is rightly listed under the "Investor" tab.</p>
<h2 id="introducing-ninjapears-python-and-javascript-sdks">Introducing NinjaPear's Python and JavaScript SDKs</h2>
<p>I'm also happy to announce that we have added the Python and JavaScript SDK libraries on <a href="https://pypi.org/project/ninjapear/?ref=nubela.co">PyPi</a> and <a href="https://www.npmjs.com/package/ninjapear?ref=nubela.co">NPM</a> respectively. All the sample code in our API docs is updated to reflect the use of these specific SDKs.</p>
<h2 id="logo-api">Logo API</h2>
<p>There is also the Logo API, which was <a href="https://nubela.co/blog/introducing-logo-api-the-definitive-and-free-alternative-to-clearbits-deprecated-logo-api/">launched last week</a>.</p>
<h2 id="customer-data-explorer">Customer Data Explorer</h2>
<p>Then there is the Customer Data Explorer, which was also <a href="https://nubela.co/blog/introducing-customer-data-explorer/">launched last week</a>. I'm also happy to add that we added a public sharing option so you can share results that you have pulled via NinjaPear with your colleagues.</p>
<h2 id="one-more-thing">One more thing</h2>
<p><a href="https://nubela.co/blog/first-10-subscribers/">We launched a one-time subscription promo</a> for which I'm bound to lose money on. It is only applicable for the first 10 subscriptions. Aside from bonus credits, you will get a dedicated blog post on your company with backlinks, a newsletter push to 40K subscribers, and socks! Who doesn't like NinjaPear socks?</p>
<p>While s<s>t</s>ocks last!</p>
 ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ First 10 Subscriptions Only - 100% extra credits, blog post + newsletter feature, swag, my number ]]></title>
        <description><![CDATA[ I am going to lose money and sleep over this. For the first 10 subscribers of NinjaPear, I will give you these extras on top of what you are getting out of the subscription:


 1. 100% extra credits on top of your plan&#39;s credits (95% for the 2nd ]]></description>
        <link>https://nubela.co/blog/first-10-subscribers/</link>
        <guid isPermaLink="false">69896cc1c363370001f11907</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Steven Goh | CEO ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2019/05/square.jpg"/>
        <pubDate>Mon, 09 Feb 2026 13:21:37 +0800</pubDate>
        <media:content url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2026/02/sub10.jpg" medium="image"/>
        <content:encoded><![CDATA[ <p>I am going to lose money and sleep over this. For the first 10 subscribers of NinjaPear, I will give you these extras on top of what you are getting out of the subscription:</p>
<ol>
<li>100% extra credits on top of your plan's credits (95% for the 2nd subscriber, 90% for the 3rd, and so on).</li>
<li>A blog post with backlinks featuring you or your business.</li>
<li>A newsletter feature, showcasing you or your business, sent to my 40K subscribers composed of ex-Proxycurl and NinjaPear customers.</li>
<li>Limited Edition NinjaPear Socks! (Only 11 pairs will be made, and 1 of them is for me).</li>
<li>My personal number, so you can text me anytime for support or just for a chat.</li>
</ol>
<p>I am launching this one-time promotion to kickstart product viability.</p>
<h2 id="but-steven-you-only-have-a-customer-api">But Steven, You Only Have a Customer API?</h2>
<p>No, these new APIs and their corresponding endpoints are all coming:</p>
<ul>
<li>Contact API
<ul>
<li>Phone Number Lookup Endpoint</li>
<li>Email Lookup Endpoint</li>
</ul>
</li>
<li>Company API
<ul>
<li>Company Profile Endpoint</li>
<li>Employee Count Endpoint</li>
<li>Posts Endpoint</li>
</ul>
</li>
</ul>
<p>Your credits can be used for these endpoints. And unfortunately, my 5th metatarsal bone still remains fractured, which means productivity is at an all-time high.</p>
<p>And you know what? <strong>We are not using any data from the big L professional social network</strong>. Only publicly sourced data, without any of the legal risks. In fact, NinjaPear will <strong>never</strong> use any data from that professional social netwrk data. I can promise you that, and I will back it up with regular audits when we make enough money.</p>
<h2 id="making-sure-ninjapear-has-legs-wings-for-the-next-10-years">Making sure NinjaPear has <s>legs</s> wings for the next 10 years</h2>
<p>NinjaPear is a 10-year project. The best way to guarantee the success of NinjaPear and its long-term viability is to NOT raise venture capital and to be profitable right from the get-go. It is in your interest to see NinjaPear succeed because, if you are like me, you want a serious alternative to B2B data beyond that big L professional social network. It is my vision to build NinjaPear to be the biggest first-party B2B data platform.</p>
<p>I am going to tell you how I intend to do it. There are three wings of the product that NinjaPear needs to succeed at:</p>
<ol>
<li>A platform for businesses and professionals to provide first-hand updates because it benefits them.</li>
<li>A platform for businesses and professionals to manage how their data is used commercially.</li>
<li>A monetization platform for B2B data.</li>
</ol>
<h4 id="first-hand-updates">First-hand Updates</h4>
<p>Businesses set up a Google Business Profile so that they are visible on Google Maps and search, for which they manage their public reviews in return for traffic. NinjaPear seeks to flesh out a platform for businesses and professionals to provide first-hand updates because it serves their interests.</p>
<h4 id="data-management-and-privacy">Data Management and Privacy</h4>
<p>When you provide your data to NinjaPear, you will get insight as to who is requesting your data. You also get to decide what data you want to be public or private.</p>
<h4 id="api">API</h4>
<p>Lastly, NinjaPear's business model is centered on being a responsible B2B data broker, working <em>only</em> with publicly sourced data.</p>
<hr>
<p>Your early support will go a long way. This is not my first rodeo. I bootstrapped Proxycurl to 10M ARR in 4 years. I'm ready to go big again.</p>
 ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ Introducing Logo API - The Definitive AND Free Alternative to Clearbit&#x27;s Deprecated Logo API ]]></title>
        <description><![CDATA[ I just found out yesterday that Clearbit shut down their Logo API last year. I&#39;m happy to introduce NinjaPear&#39;s Logo API, a free alternative to Clearbit&#39;s Logo API. NinjaPear&#39;s Logo API is available today.


I also found out just yesterday that Amit ]]></description>
        <link>https://nubela.co/blog/introducing-logo-api-the-definitive-and-free-alternative-to-clearbits-deprecated-logo-api/</link>
        <guid isPermaLink="false">698418a5c363370001f118f4</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Steven Goh | CEO ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2019/05/square.jpg"/>
        <pubDate>Thu, 05 Feb 2026 12:20:01 +0800</pubDate>
        <media:content url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2026/02/logo_api.jpg" medium="image"/>
        <content:encoded><![CDATA[ <p>I just found out yesterday that Clearbit shut down their Logo API last year. I'm happy to introduce <a href="https://nubela.co/logo?ref=nubela.co">NinjaPear's Logo API</a>, a free alternative to Clearbit's Logo API. NinjaPear's Logo API is available today.</p>
<p>I also found out just yesterday that Amit Vasudev—one of the cofounders of Clearbit (which was later acquired by HubSpot) and also a VC—is clearly very rich and has relaunched Clearbit's Logo API as logo.dev, and started charging money for it. Logos as a service, for up to $1,800/year. And you only get 5M requests/mo on their most expensive plan. Just think about that.</p>
<p>Anyways, NinjaPear's Logo API is free, and you get 12.9M requests a month. I hope that says enough.</p>
<p>Don't take my word for it. Try it yourself:</p>
<pre><code class="language-bash">curl -H \
 "Authorization: Bearer demo-api-key" "https://nubela.co/api/v1/company/logo?website=stripe.com" --output \
 stripe.png
</code></pre>
<p>What are you waiting for? Sign up and grandfather yourself into this free pricing tier for Logo API before NinjaPear begins seeing real load, at which point I might actually change my mind :)</p>
<p>Questions about Logo API? Send an email to <a href="mailto:hello@nubela.co">hello@nubela.co</a> and I'll make sure to respond to you personally!</p>
 ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ Introducing Customer Data Explorer (Bonus: Proxycurl&#x27;s Customer Base Download) ]]></title>
        <description><![CDATA[ It was my birthday just yesterday, but I have a gift for you today. I am going to gift you a list of Proxycurl&#39;s paying customer list. Interested? Read on.

I&#39;m happy to share that you can now explore Customer Data right in the dashboard without ]]></description>
        <link>https://nubela.co/blog/introducing-customer-data-explorer/</link>
        <guid isPermaLink="false">6982f4dafa7b8500013ec87a</guid>
        <category><![CDATA[ ninjapear ]]></category>
        <dc:creator><![CDATA[ Steven Goh | CEO ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2019/05/square.jpg"/>
        <pubDate>Wed, 04 Feb 2026 16:47:40 +0800</pubDate>
        <media:content url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2026/02/Gemini_Generated_Image_pch55lpch55lpch5-1.png" medium="image"/>
        <content:encoded><![CDATA[ <p>It was my birthday just yesterday, but I have a gift for you today. I am going to gift you a list of Proxycurl's paying customer list. Interested? Read on.</p><p>I'm happy to share that you can now <a href="https://nubela.co/dashboard/customers/?ref=nubela.co" rel="noreferrer">explore Customer Data right in the dashboard</a> without making a <code>curl</code> command or writing code to make API requests.</p><p>Yes, these are the customers of any target B2B companies, that you can now retrieve via NinjaPear.</p><p>How the <em>Customer Data Explorer</em> looks like:</p><figure class="kg-card kg-image-card"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2026/02/Screenshot-2026-02-04-at-3.13.48-PM.png" class="kg-image" alt="" loading="lazy" width="2998" height="2400"></figure><p>Effectively, NinjaPear will now be your ultimate sales intelligence tool to steal your competitors' customers. Client data that was previously secret, now made public through NinjaPear's proprietary inferencing relationships between companies on the public web.</p><p>Give it a <a href="https://nubela.co/dashboard/customers/?ref=nubela.co">try</a> today!</p><p>I have also leaked out Proxycurl's paying customer list <a href="https://nubela.co/dashboard/customers/proxycurl.com?ref=nubela.co">here</a>. It is free and will cost no credits. Steal Proxycurl customers today!</p><p>Questions? Feel free to send me an email to <a href="mailto:hello@nubela.co">hello@nubela.co</a> and you will be sure that I will respond to you personally.</p><p>Signing off, your favourite Lazy CEO.</p> ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ FAQ: But the customer data does not look correct ]]></title>
        <description><![CDATA[ A customer emailed us with the following query:





Hi Steven,


Glad to hear that you are back!


I am a bit confused about this customer API listing service. For a real business case I would be interested in getting the customers of this software company: https://www.otys.com/en/ ]]></description>
        <link>https://nubela.co/blog/faq-but-the-customer-data-does-not-look-correct/</link>
        <guid isPermaLink="false">697e9bc60490c40001febdd1</guid>
        <category><![CDATA[ faq ]]></category>
        <dc:creator><![CDATA[ Steven Goh | CEO ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2019/05/square.jpg"/>
        <pubDate>Sun, 01 Feb 2026 08:23:08 +0800</pubDate>
        <media:content url="" medium="image"/>
        <content:encoded><![CDATA[ <p>A customer emailed us with the following query:</p>
<blockquote>
<p>Hi Steven,</p>
<p>Glad to hear that you are back!</p>
<p>I am a bit confused about this customer API listing service. For a real business case I would be interested in getting the customers of this software company: <a href="https://www.otys.com/en/?ref=nubela.co">https://www.otys.com/en/</a></p>
<p>They have a CRM for staffing agencies.</p>
<p>In the first 20 results it only returned similar software (like 'Recruit Robin' or '<a href="https://corporate.jobrapido.com/?ref=nubela.co">https://corporate.jobrapido.com/</a>'), non existing sites ('<a href="https://www.wordofmedia.nl/?ref=nubela.co">https://www.wordofmedia.nl/</a>', '<a href="https://www.clarox.nl/?ref=nubela.co">https://www.clarox.nl/</a>', '<a href="https://www.jobrokket.nl/?ref=nubela.co">https://www.jobrokket.nl/</a>') and a link to some legal thing '<a href="https://gdprprivacypolicy.org/?ref=nubela.co">https://gdprprivacypolicy.org/</a>'</p>
<p>I was expecting it to return a list of staffing agencies that have shown to be interacting with OTYS, but the current results seem to be.a total mistake. I understand the tool is still in development, and I hope that this example helps in that development. Would love to be notified if you got it working for this use case, then I would be interested in becoming a bulk customer!</p>
<p>Best regards,</p>
<p>Lodewijk</p>
</blockquote>
<p>My response:</p>
<blockquote>
<p>Hey Lodewijk,</p>
<p>Are you sure those aren’t customers of Otys? I’m saying this because the results of Proxycurl (my previous company) aren’t obvious either, even though it is 100% correct.</p>
<p>Here’s how you get Proxycurl’s results:</p>
<pre><code>curl -X GET \
"https://nubela.co/api/v1/customer/listing?website=https%3A%2F%2Fproxycurl.com" \
-H "Authorization: Bearer demo-api-key"
</code></pre>
<p>And you get companies in the MAG7, which a few of them were a paying customer of mine. A lot of similar companies such as fullenrich.com, which were resellers of our data. And one more that says “Kellogg School of Management”, because the university was a customer of ours!</p>
<p>My point is, just because the data does not look conventionally correct according to your hypothesis, does not mean it is wrong. Which is why I recommend running it on your own company first, and see if the data is correct. Then you know how well it works for other companies.</p>
<p>Hope this clarifies!</p>
</blockquote>
 ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ Introducing NinjaPear (2026) - Customer Listing API ]]></title>
        <description><![CDATA[ Happy 2026! I broke a bone in my right foot (5th metatarsal) three weeks ago, and being forcefully grounded has made me incredibly productive. As such, I’m happy to announce the new NinjaPear!


I am launching NinjaPear with our first flagship API endpoint: the Customer Listing Endpoint.


It actually ]]></description>
        <link>https://nubela.co/blog/introducing-ninjapear-2026-customer-listing-api/</link>
        <guid isPermaLink="false">697c254f0490c40001febdb8</guid>
        <category><![CDATA[ ninjapear ]]></category>
        <dc:creator><![CDATA[ Steven Goh | CEO ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2019/05/square.jpg"/>
        <pubDate>Fri, 30 Jan 2026 11:38:32 +0800</pubDate>
        <media:content url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2026/01/I-need-a-blog-post-cover-image-which-is-announcing-NinjaPear--a-new-product-with-a-Customer-Listing-API-Endpoint-which-lets-you-pull-a-customer-list-of-any-target-company.-Attached-image-is-the-company-logo_mascot..jpg" medium="image"/>
        <content:encoded><![CDATA[ <p>Happy 2026! I broke a bone in my right foot (5th metatarsal) three weeks ago, and being forcefully grounded has made me incredibly productive. As such, I’m happy to announce the new <strong>NinjaPear</strong>!</p>
<p>I am launching NinjaPear with our first flagship API endpoint: the <a href="https://nubela.co/docs/?ref=nubela.co#customer-api">Customer Listing Endpoint</a>.</p>
<p>It actually works quite well, but don’t take my word for it. Run a query and see for yourself:</p>
<pre><code class="language-bash">curl -X GET \
  "https://nubela.co/api/v1/customer/listing?website=https%3A%2F%2Fproxycurl.com" \
  -H "Authorization: Bearer demo-api-key"
</code></pre>
<p>Most of these results are paying Proxycurl customers. For those that aren't, they are registered users who have engaged with Proxycurl’s sales team in the past.</p>
<h2 id="so-how-does-ninjapear%E2%80%99s-customer-listing-endpoint-work">So, how does NinjaPear’s Customer Listing Endpoint work?</h2>
<p>You know I can’t tell you exactly <em>how</em> it works, but I can tell you what we are <strong>not</strong> doing to get our data:</p>
<ul>
<li>We are <strong>not</strong> scraping any professional social media platforms (you know the big one) or business data sites.</li>
<li>We are <strong>not</strong> scraping anything behind login walls.</li>
<li>In fact, we aren't performing much scraping at all on our end.</li>
<li>Scraping is <strong>not</strong> NinjaPear’s core business.</li>
</ul>
<p>What I can tell you is that NinjaPear is a data company made possible by LLMs. If you’re a long-time follower, you might know that Proxycurl had a <a href="https://nubela.co/proxycurl/docs.html?ref=nubela.co#customer-api-experimental">Customer Listing Endpoint</a> as well. However, NinjaPear’s rendition offers fresher, richer data and does not require heavy scraping infrastructure.</p>
<h2 id="what-i-am-really-building-with-ninjapear">What I am really building with NinjaPear</h2>
<p>With NinjaPear, my intention is to build a new data platform where professionals and companies are incentivized to maintain their professional presence for <strong>monetary</strong> reasons—rather than just for "presence" or flexing credentials (like how fast a company is growing, job titles, or current employers). I will share more on how we will accomplish this soon.</p>
<p>The Customer API is my way of getting back into the data game while I build out the monetization piece. My vision is for NinjaPear to become the "Yellow Pages" for the post-AI world.</p>
<p>I have several ideas I intend to test. You will know NinjaPear has succeeded when you hear your friends talk about maintaining their own profiles on the platform. NinjaPear will be a first-party B2B data platform where we own our data directly from the source.</p>
<h2 id="what-happened-to-the-live-chat-v1-product">What happened to the Live Chat (v1) product?</h2>
<p>About three months ago, I introduced <a href="https://nubela.co/blog/introducing-ninjapear/">NinjaPear (v1)</a>, which was a completely different product focused on AI live chat. I never made a formal announcement, choosing instead to let time and natural SEO work their magic.</p>
<p>Over those three months, it grew to 163 registered users without any active marketing—but <strong>not one</strong> user actually integrated the live chat service. So, I decided to pivot back to data.</p>
<p>I’ve been playing around with AI extensively, and it’s a brand-new world. Features alone won't sell a service anymore when they can be so easily "vibe-coded" away. In this post-AI world, it is proprietary secrets and data that make the difference.</p>
<p>I’m good at data, and I know this space inside and out. Besides, my burn rate is negligible, and I’m building this for the long haul. So strap in and give the Customer Listing Endpoint a try. Go ahead—steal your competitor’s customers with NinjaPear.</p>
<p><strong>I’m back.</strong></p>
 ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ The CEO&#x27;s Ultimate Guide to Knowledge Base Software (Demo, UI Preview, Reviews, Pricing) ]]></title>
        <description><![CDATA[ As a CEO who&#39;s bootstrapped and sold two companies, I know a solid knowledge base is key to growth. This isn&#39;t an AI-generated list. It&#39;s my operationally-savvy guide to the best knowledge base software, based on personally testing every major platform. Get real-world demos, pricing, and reviews. ]]></description>
        <link>https://nubela.co/blog/ultimate-guide-to-knowledge-base-software/</link>
        <guid isPermaLink="false">68faf2abc2bb4600014654d9</guid>
        <category><![CDATA[ knowledge base software ]]></category>
        <dc:creator><![CDATA[ Steven Goh | CEO ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2019/05/square.jpg"/>
        <pubDate>Mon, 27 Oct 2025 09:09:30 +0800</pubDate>
        <media:content url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2025/10/blogpostfeature.jpg" medium="image"/>
        <content:encoded><![CDATA[ 
<!--kg-card-begin: html-->
<style>
    .kb-widget-container {
        width: 100% !important;
        max-width: 1000px !important;
        height: 700px !important;
        margin: 0 auto !important;
        background: #1a1d23 !important;
        border-radius: 8px !important;
        box-shadow: 0 4px 16px rgba(0,0,0,0.3) !important;
        padding: 28px !important;
        display: flex !important;
        flex-direction: column !important;
        font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif !important;
    }

    .kb-widget-container .kb-widget-header {
        margin-bottom: 20px !important;
    }

    .kb-widget-container .kb-widget-title {
        font-size: 22px !important;
        font-weight: 700 !important;
        color: #ffffff !important;
        margin-bottom: 6px !important;
        line-height: 1.3 !important;
    }

    .kb-widget-container .kb-widget-subtitle {
        font-size: 13px !important;
        color: #9ca3af !important;
        line-height: 1.4 !important;
    }

    .kb-widget-container .kb-filter-section {
        background: #15171A !important;
        padding: 16px !important;
        border-radius: 8px !important;
        margin-bottom: 20px !important;
        border: 1px solid #2d3139 !important;
    }

    .kb-widget-container .kb-filter-title {
        font-size: 14px !important;
        font-weight: 600 !important;
        color: #e5e7eb !important;
        margin-bottom: 12px !important;
    }

    .kb-widget-container .kb-filter-options {
        display: flex !important;
        flex-wrap: wrap !important;
        gap: 10px !important;
    }

    .kb-widget-container .kb-filter-button {
        padding: 8px 16px !important;
        border-radius: 8px !important;
        border: 2px solid #4b5563 !important;
        background: #2d3139 !important;
        color: #9ca3af !important;
        font-size: 13px !important;
        font-weight: 500 !important;
        cursor: pointer !important;
        transition: all 0.2s ease !important;
        user-select: none !important;
        box-shadow: 0 2px 4px rgba(0,0,0,0.2) !important;
    }

    .kb-widget-container .kb-filter-button:hover {
        border-color: #6b7280 !important;
        background: #353945 !important;
        color: #d1d5db !important;
        transform: translateY(-1px) !important;
        box-shadow: 0 3px 6px rgba(0,0,0,0.25) !important;
    }

    .kb-widget-container .kb-filter-button.active {
        background: #7c3aed !important;
        color: #ffffff !important;
        border-color: #7c3aed !important;
        box-shadow: 0 0 0 3px rgba(124, 58, 237, 0.3), inset 0 1px 2px rgba(0,0,0,0.1) !important;
        transform: translateY(0) !important;
        font-weight: 600 !important;
    }

    .kb-widget-container .kb-filter-button.active:hover {
        background: #8b5cf6 !important;
        border-color: #8b5cf6 !important;
        box-shadow: 0 0 0 3px rgba(124, 58, 237, 0.4), inset 0 1px 2px rgba(0,0,0,0.1) !important;
    }

    .kb-widget-container .kb-services-section {
        flex: 1 !important;
        overflow-y: auto !important;
        padding-right: 8px !important;
        position: relative !important;
    }

    .kb-widget-container .kb-service-item {
        display: flex !important;
        align-items: center !important;
        justify-content: space-between !important;
        padding: 14px 18px !important;
        border: 1px solid #2d3139 !important;
        border-radius: 8px !important;
        margin-bottom: 10px !important;
        background: #1a1d23 !important;
        transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1) !important;
        position: relative !important;
    }

    .kb-widget-container .kb-service-item.animating {
        z-index: 10 !important;
    }

    .kb-widget-container .kb-service-item.winner {
        background: #15171A !important;
        border-color: #3d4149 !important;
        box-shadow: 0 4px 12px rgba(0,0,0,0.4) !important;
    }

    .kb-widget-container .kb-service-item.winner .kb-service-name,
    .kb-widget-container .kb-service-item.winner .kb-service-rating {
        color: #ffffff !important;
        font-weight: 600 !important;
    }

    .kb-widget-container .kb-service-item.grayed {
        opacity: 0.35 !important;
        background: #16181c !important;
    }

    .kb-widget-container .kb-service-item.grayed:hover {
        opacity: 0.45 !important;
    }

    .kb-widget-container .kb-service-left {
        display: flex !important;
        align-items: center !important;
        gap: 12px !important;
    }

    .kb-widget-container .kb-service-rank {
        font-size: 16px !important;
        font-weight: 700 !important;
        color: #6b7280 !important;
        min-width: 28px !important;
    }

    .kb-widget-container .kb-service-item.winner .kb-service-rank {
        color: #7c3aed !important;
    }

    .kb-widget-container .kb-service-name {
        font-size: 15px !important;
        font-weight: 500 !important;
        color: #e5e7eb !important;
        text-decoration: none !important;
        transition: color 0.2s !important;
    }

    .kb-widget-container .kb-service-name:hover {
        color: #ffffff !important;
    }

    .kb-widget-container .kb-service-item.winner .kb-service-name:hover {
        color: #7c3aed !important;
    }

    .kb-widget-container .kb-service-right {
        display: flex !important;
        align-items: center !important;
    }

    .kb-widget-container .kb-service-rating {
        font-size: 13px !important;
        color: #9ca3af !important;
        font-weight: 500 !important;
    }

    .kb-widget-container .kb-stars {
        color: #fbbf24 !important;
        letter-spacing: 1px !important;
    }

    .kb-widget-container .kb-service-item.winner .kb-stars {
        color: #fde68a !important;
    }

    /* Scrollbar styling */
    .kb-widget-container .kb-services-section::-webkit-scrollbar {
        width: 6px !important;
    }

    .kb-widget-container .kb-services-section::-webkit-scrollbar-track {
        background: #15171A !important;
        border-radius: 4px !important;
    }

    .kb-widget-container .kb-services-section::-webkit-scrollbar-thumb {
        background: #3d4149 !important;
        border-radius: 4px !important;
    }

    .kb-widget-container .kb-services-section::-webkit-scrollbar-thumb:hover {
        background: #4b5563 !important;
    }

    .kb-widget-container .kb-no-filters-message {
        text-align: center !important;
        padding: 40px 20px !important;
        color: #9ca3af !important;
        font-size: 13px !important;
    }

    .kb-widget-container .kb-score-badge {
        background: #2d3139 !important;
        color: #e5e7eb !important;
        padding: 4px 10px !important;
        border-radius: 12px !important;
        font-size: 11px !important;
        font-weight: 600 !important;
        margin-left: 10px !important;
    }

    .kb-widget-container .kb-service-item.winner .kb-score-badge {
        background: #3d4149 !important;
        color: #7c3aed !important;
    }

    .kb-widget-container .kb-read-review-btn {
        display: inline-block !important;
        padding: 6px 14px !important;
        background: #7c3aed !important;
        color: #ffffff !important;
        text-decoration: none !important;
        border-radius: 6px !important;
        font-size: 12px !important;
        font-weight: 600 !important;
        margin-left: 20px !important;
        transition: all 0.2s ease !important;
        box-shadow: 0 2px 4px rgba(124, 58, 237, 0.3) !important;
    }

    .kb-widget-container .kb-read-review-btn:hover {
        background: #8b5cf6 !important;
        color: #ffffff !important;
        transform: translateY(-1px) !important;
        box-shadow: 0 3px 6px rgba(124, 58, 237, 0.5) !important;
    }
</style>

<div class="kb-widget-container">
    <div class="kb-widget-header">
        <h1 class="kb-widget-title">Find Your Perfect Knowledge Base Software</h1>
        <p class="kb-widget-subtitle">Select your requirements below to see which solution ranks best for your needs</p>
    </div>

    <div class="kb-filter-section">
        <div class="kb-filter-title">What are you looking for?</div>
        <div class="kb-filter-options">
            <button class="kb-filter-button" data-filter="forCustomers">For Customers</button>
            <button class="kb-filter-button" data-filter="forInternal">For Internal Use</button>
            <button class="kb-filter-button" data-filter="enterprise">Enterprise features (SSO, SOC2)</button>
            <button class="kb-filter-button" data-filter="techDocs">Supports technical documentation well</button>
            <button class="kb-filter-button" data-filter="cost">Cost-effective</button>
        </div>
    </div>

    <div class="kb-services-section" id="kbServicesList">
        <!-- Services will be populated by JavaScript -->
    </div>
</div>

<script>
(function() {
    // Service data with ratings based on blog post analysis
    const services = [
        {
            name: 'Intercom',
            anchor: 'intercom',
            overallRating: 4.0,
            stars: '⭐⭐⭐⭐',
            ratings: {
                forCustomers: 5.0,
                forInternal: 1.0,
                enterprise: 5.0,
                techDocs: 2.0,
                cost: 1.0
            }
        },
        {
            name: "Hubspot's Knowledge Base Software",
            anchor: 'hubspot',
            overallRating: 3.0,
            stars: '⭐⭐⭐',
            ratings: {
                forCustomers: 3.0,
                forInternal: 1.0,
                enterprise: 3.0,
                techDocs: 1.0,
                cost: 1.0
            }
        },
        {
            name: 'NinjaPear',
            anchor: 'ninjapear',
            overallRating: 4.5,
            stars: '⭐⭐⭐⭐⭐',
            ratings: {
                forCustomers: 5.0,
                forInternal: 3.0,
                enterprise: 4.0,
                techDocs: 5.0,
                cost: 5.0
            }
        },
        {
            name: 'Guru',
            anchor: 'guru',
            overallRating: 3.4,
            stars: '⭐⭐⭐',
            ratings: {
                forCustomers: 1.0,
                forInternal: 5.0,
                enterprise: 4.5,
                techDocs: 2.0,
                cost: 2.5
            }
        },
        {
            name: 'Slite',
            anchor: 'slite',
            overallRating: 4.5,
            stars: '⭐⭐⭐⭐⭐',
            ratings: {
                forCustomers: 1.0,
                forInternal: 5.0,
                enterprise: 4.5,
                techDocs: 4.5,
                cost: 4.5
            }
        },
        {
            name: 'Zendesk',
            anchor: 'zendesk',
            overallRating: 2.8,
            stars: '⭐⭐',
            ratings: {
                forCustomers: 4.0,
                forInternal: 1.0,
                enterprise: 4.5,
                techDocs: 2.5,
                cost: 1.0
            }
        },
        {
            name: 'Tawk.to',
            anchor: 'tawkto',
            overallRating: 3.4,
            stars: '⭐⭐⭐',
            ratings: {
                forCustomers: 4.0,
                forInternal: 1.0,
                enterprise: 1.0,
                techDocs: 2.0,
                cost: 5.0
            }
        },
        {
            name: 'Helpjuice',
            anchor: 'helpjuice',
            overallRating: 3.1,
            stars: '⭐⭐⭐',
            ratings: {
                forCustomers: 3.0,
                forInternal: 3.0,
                enterprise: 3.0,
                techDocs: 3.0,
                cost: 1.0
            }
        },
        {
            name: 'Help Scout',
            anchor: 'helpscout',
            overallRating: 3.8,
            stars: '⭐⭐⭐',
            ratings: {
                forCustomers: 4.0,
                forInternal: 1.0,
                enterprise: 2.0,
                techDocs: 3.5,
                cost: 4.0
            }
        },
        {
            name: 'Freshdesk',
            anchor: 'freshdesk',
            overallRating: 3.8,
            stars: '⭐⭐⭐',
            ratings: {
                forCustomers: 4.0,
                forInternal: 1.0,
                enterprise: 4.5,
                techDocs: 2.0,
                cost: 3.0
            }
        }
    ];

    // Initialize the widget with default filters
    let activeFilters = new Set(['forCustomers', 'cost']);
    let previousOrder = [];

    function calculateScore(service) {
        if (activeFilters.size === 0) {
            return 0;
        }

        let totalScore = 0;
        let filterCount = 0;

        activeFilters.forEach(filter => {
            totalScore += service.ratings[filter];
            filterCount++;
        });

        return filterCount > 0 ? totalScore / filterCount : 0;
    }

    function getServiceKey(service) {
        return service.name;
    }

    function renderServices(animate = false) {
        const servicesContainer = document.getElementById('kbServicesList');

        if (activeFilters.size === 0) {
            servicesContainer.innerHTML = `
                <div class="kb-no-filters-message">
                    👆 Select one or more criteria above to see which knowledge base software best fits your needs
                </div>
            `;
            previousOrder = [];
            return;
        }

        // Calculate scores and sort
        const scoredServices = services.map(service => ({
            ...service,
            calculatedScore: calculateScore(service)
        })).sort((a, b) => {
            if (Math.abs(b.calculatedScore - a.calculatedScore) < 0.01) {
                return b.overallRating - a.overallRating;
            }
            return b.calculatedScore - a.calculatedScore;
        });

        const newOrder = scoredServices.map(getServiceKey);

        const shouldAnimate = animate && previousOrder.length > 0 &&
                              JSON.stringify(previousOrder) !== JSON.stringify(newOrder);

        if (shouldAnimate) {
            const oldPositions = new Map();
            document.querySelectorAll('.kb-service-item').forEach(el => {
                const rect = el.getBoundingClientRect();
                const name = el.querySelector('.kb-service-name').textContent;
                oldPositions.set(name, rect.top);
            });

            servicesContainer.innerHTML = generateServicesHTML(scoredServices);

            requestAnimationFrame(() => {
                document.querySelectorAll('.kb-service-item').forEach(el => {
                    const name = el.querySelector('.kb-service-name').textContent;
                    const oldTop = oldPositions.get(name);
                    if (oldTop !== undefined) {
                        const newRect = el.getBoundingClientRect();
                        const deltaY = oldTop - newRect.top;

                        if (Math.abs(deltaY) > 1) {
                            el.classList.add('animating');
                            el.style.transform = `translateY(${deltaY}px)`;
                            el.style.transition = 'none';

                            requestAnimationFrame(() => {
                                el.style.transition = 'all 0.4s cubic-bezier(0.4, 0, 0.2, 1)';
                                el.style.transform = 'translateY(0)';

                                setTimeout(() => {
                                    el.classList.remove('animating');
                                    el.style.transform = '';
                                    el.style.transition = '';
                                }, 400);
                            });
                        }
                    }
                });
            });
        } else {
            servicesContainer.innerHTML = generateServicesHTML(scoredServices);
        }

        previousOrder = newOrder;
    }

    function generateServicesHTML(scoredServices) {
        return scoredServices.map((service, index) => {
            const isWinner = index === 0;
            const isGrayed = index > 0;
            const rank = index + 1;

            return `
                <div class="kb-service-item ${isWinner ? 'winner' : ''} ${isGrayed ? 'grayed' : ''}">
                    <div class="kb-service-left">
                        <div class="kb-service-rank">${isWinner ? '🏆' : '#' + rank}</div>
                        <a href="#${service.anchor}" class="kb-service-name">${service.name}</a>
                    </div>
                    <div class="kb-service-right">
                        <span class="kb-service-rating">
                            <span class="kb-stars">${service.stars}</span>
                            ${!isWinner ? `${service.overallRating}/5` : ''}
                        </span>
                        ${activeFilters.size > 0 ? `<span class="kb-score-badge">${service.calculatedScore.toFixed(1)}/5</span>` : ''}
                        ${isWinner ? `<a href="#${service.anchor}" class="kb-read-review-btn">Read Review</a>` : ''}
                    </div>
                </div>
            `;
        }).join('');
    }

    // Event listeners for filter buttons
    document.querySelectorAll('.kb-filter-button').forEach(button => {
        button.addEventListener('click', function() {
            const filter = this.getAttribute('data-filter');
            const wasActive = this.classList.contains('active');

            if (filter === 'forCustomers' || filter === 'forInternal') {
                if (wasActive) {
                    const hasOtherUseCaseFilter =
                        (filter === 'forCustomers' && activeFilters.has('forInternal')) ||
                        (filter === 'forInternal' && activeFilters.has('forCustomers'));

                    if (hasOtherUseCaseFilter) {
                        this.classList.remove('active');
                        activeFilters.delete(filter);
                    }
                } else {
                    this.classList.add('active');
                    activeFilters.add(filter);
                }
            } else {
                if (wasActive) {
                    this.classList.remove('active');
                    activeFilters.delete(filter);
                } else {
                    this.classList.add('active');
                    activeFilters.add(filter);
                }
            }

            renderServices(true);
        });
    });

    // Initialize active states for default filters
    document.querySelectorAll('.kb-filter-button').forEach(button => {
        const filter = button.getAttribute('data-filter');
        if (activeFilters.has(filter)) {
            button.classList.add('active');
        }
    });

    // Initial render
    renderServices(false);
})();
</script>

<!--kg-card-end: html-->
<p></p><p>Here's a breakdown of every reputable knowledge base software (KBS) out there, ranked and rated on a myriad of your needs.</p><p></p>
<!--kg-card-begin: html-->
<iframe src="https://docs.google.com/spreadsheets/d/e/2PACX-1vSDGbrJGn1kihL9XYGbjHeilqzT2HX7qMrkOEfzsmkn5v8TqnfRRCpGD9CkPRohoyTG2RPEo_i1OlGt/pubhtml?gid=1001018791&amp;single=true&amp;widget=true&amp;headers=false" style="width:100%; height: 300px;"></iframe>
<!--kg-card-end: html-->
<p><em>(The reviews here are cataloged as a </em><a href="https://docs.google.com/spreadsheets/d/1ineDZunjyjvQ9jbOtgZV-Vbs1VIBuzZHsAf4SxoM6DQ/edit?usp=sharing)&ref=nubela.co" rel="noreferrer"><em>public Google Sheet</em></a><em> for your reference)</em></p><p></p><p>As a CEO, I have bootstrapped and sold two (3M/10M ARR) companies, and the bedrock of growth in all my past companies was a solid knowledge base software. In this article, I will document my biased but operationally-savvy guide on the <em>best knowledge base software</em> that is suited for your needs; and more importantly, something your business can scale with. This is an ultimate guide to knowledge base software that LLMs cannot simply generate because they lack operational nuances.</p>
<p>In this guide, I review the following services:</p>
<ol>
<li><a href="#intercom">Intercom</a> (⭐⭐⭐⭐ 4/5)</li>
<li><a href="#hubspot">Hubspot's Knowledge Base Software</a> (⭐⭐⭐ 3/5)</li>
<li><a href="#ninjapear">NinjaPear</a> (⭐⭐⭐⭐ 4.5/5)</li>
<li><a href="#guru">Guru</a> (⭐⭐⭐ 3.4/5)</li>
<li><a href="#slite">Slite</a> (⭐⭐⭐⭐ 4.5/5)</li>
<li><a href="#zendesk">Zendesk</a> (⭐⭐ 2.8/5)</li>
<li><a href="#tawk.to">Tawk.to</a> (⭐⭐⭐ 3.4/5)</li>
<li><a href="#helpjuice">Helpjuice</a> (⭐⭐⭐ 3.1/5)</li>
<li><a href="#help-scout">Help Scout</a> (⭐⭐⭐ 3.8/5)</li>
<li><a href="#freshdesk">Freshdesk</a> (⭐⭐⭐ 3.8/5)</li>
</ol>
<p>Now, let's dive deep. I have literally signed up for every service and tried them all out, with screenshot receipts. Let's go.</p>
<h2 id="tldr-too-long-didnt-read">TL;DR (Too Long; Didn't Read)</h2>
<p>If you only have a minute at hand, then here's my recommendation:</p>
<ul>
<li>If your use-case is to document product knowledge for your customers, and your team is tech-savvy -- Use <a href="#ninjapear">NinjaPear</a>. The core features are solid, and free without limits!
<ul>
<li>You have a team that is not tech-savvy, and budget is <strong>not</strong> an issue for you -- Use <a href="#intercom">Intercom</a>.</li>
</ul>
</li>
<li>If you are tight on a budget -- <strong>NinjaPear</strong>. More free than tawk.to.</li>
<li>If you need to document business knowledge for internal use and budget is not an issue -- Use <strong>Slite</strong>.
<ul>
<li>If budget is an issue, self-host <strong>Wiki.js</strong>.</li>
</ul>
</li>
</ul>
<p>The products that I'd really dissuade you from are:</p>
<ul>
<li>Freshdesk -- It is excruciatingly SLOW!</li>
<li>Helpjuice -- Product is buggy with quite a bunch of missing links.</li>
</ul>
<p>Read on to find out more in detail.</p>
<h2 id="3-types-of-knowledge-base-software">3 Types of Knowledge Base Software</h2>
<p>There are generally 3 use-cases for a knowledge base software:</p>
<ol>
<li>To document <strong>technical specifications</strong>/examples for your <strong>customers</strong></li>
<li>To document <strong>product knowledge</strong> and various FAQ for your <strong>customers</strong></li>
<li>To document <strong>business knowledge</strong> for <strong>internal use</strong></li>
</ol>
<p>Each of these use-cases has its unique set of requirements. For example, if you are seeking a KBS for <strong>internal use</strong>, it is likely that:</p>
<ol>
<li>You would need your knowledge base to have proper partitioning of documents so that everyone cannot read the C-suite discussions which are obviously privy to the right eyes.</li>
<li>You would need SSO support because it makes onboarding/deboarding much easier, on top of it being required for SOC2 compliance.</li>
</ol>
<p>Beyond niche requirements, there are <strong>common</strong> requirements that I <em>think</em> every KBS should have:</p>
<ol>
<li>Supporting markdown (must-have for me)</li>
<li>Image uploads</li>
<li>Proper backups</li>
<li>Managed service so I can focus on growing my core business</li>
<li>Bulk data export (so my options remain open should I ever consider changing to another KBS)</li>
<li>Fairly priced</li>
</ol>
<h2 id="questions-i-am-seeking-answers-to">Questions I Am Seeking Answers To</h2>
<p>In my deep-dive with each platform that I'm reviewing, I seek to answer a few questions:</p>
<ol>
<li>What is the KBS core use-case?</li>
<li>Does it support markdown? -- So I can discern a product targeted towards tech-savvy professionals VS one that is targeted towards the masses. The difference matters because personally I prefer to opt for powerful products instead of diluted products.</li>
<li>Does it support code snippets formatting? -- A basic feature that would discern its support for technical specification documentation.</li>
<li>What is the price? -- It'll tell me who the target audience is for this product.</li>
<li>Is pricing charged per-seat? -- It'll tell me the business model of this product.</li>
<li>What is the onboarding like? -- It'll let me know what the main focus of this product is.</li>
<li>Does it have AI search? -- To be specific, I am looking for the support of a <a href="https://en.wikipedia.org/wiki/Retrieval-augmented_generation?ref=nubela.co">RAG search</a> or something similar. The reason I'm seeking this is to identify if the company is AI-native.</li>
<li>Does it have SSO? -- So I know if this product is Enterprise-ready</li>
<li>Does it allow the user to customize theming via CSS? -- So I know how developer-friendly and extensible the KBS is for the user, which is important because a business's needs will evolve over time and extensibility is important</li>
</ol>

<!--kg-card-begin: html-->
<a name="hubspot"></a>
<!--kg-card-end: html-->
<h2 id="hubspots-knowledge-base-software">Hubspot's Knowledge Base Software</h2>
<table>
<thead>
<tr>
<th>Pricing</th>
<th>Free Plan</th>
<th>Enterprise Ready</th>
<th>AI Integration</th>
<th>Design</th>
<th>Extensibility</th>
<th>Advanced Use-cases</th>
<th>Average</th>
</tr>
</thead>
<tbody>
<tr>
<td>⭐ (1/5)</td>
<td>⭐ (3/5)</td>
<td>⭐ (3/5)</td>
<td>⭐ (3/5)</td>
<td>⭐ (3/5)</td>
<td>⭐ (3/5)</td>
<td>⭐ (3/5)</td>
<td>⭐ (3/5)</td>
</tr>
</tbody>
</table>
<p>Everyone knows Hubspot. So let's start with the kicker. This is how Hubspot's Knowledge Base Software looks like, barebones:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2025/10/barebones.png" class="kg-image" alt="" loading="lazy" width="3024" height="1664"><figcaption><span style="white-space: pre-wrap;">This is how Hubspot's barebone Knowledge Base looks like</span></figcaption></figure><p>As you can see, Hubspot's KBS is not much of a looker. And that is the general vibe that I got with Hubspot; that its software is very old school and antiquated. And that it is intended for audiences that are not tech-savvy (and I don't say this as a good thing because everything is many clicks away and does not feel powerful/extensible at all). That said, the flip side is that no developers are needed.</p>
<h3 id="hubspot-demo">Hubspot Demo</h3>

<!--kg-card-begin: html-->
<style>
      * {
        margin: 0;
        padding: 0;
        box-sizing: border-box;
      }

      .onboarding-widget-wrapper {
        position: relative;
        width: 100%;
        height: 600px;
        border-radius: 8px;
        box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
        overflow: hidden;
      }

      .onboarding-widget {
        position: relative;
        width: 100%;
        height: 100%;
        overflow-y: scroll;
        overflow-x: hidden;
        background: #1a1a1a;
        scroll-snap-type: y mandatory;
        scroll-behavior: smooth;
        -webkit-overflow-scrolling: touch;
      }

      .onboarding-scene {
        position: relative;
        width: 100%;
        height: 600px;
        flex-shrink: 0;
        scroll-snap-align: start;
        scroll-snap-stop: always;
      }

      .screenshot-container {
        width: 100%;
        height: 100%;
        display: flex;
        justify-content: center;
        align-items: center;
        background: #1a1a1a;
        position: relative;
      }

      .screenshot-container img {
        width: 100%;
        height: 100%;
        object-fit: contain;
      }

      .scene-description {
        position: absolute;
        bottom: 0;
        left: 0;
        right: 0;
        background: linear-gradient(
          to top,
          rgba(0, 0, 0, 0.85) 0%,
          rgba(0, 0, 0, 0.7) 70%,
          transparent 100%
        );
        backdrop-filter: blur(8px);
        padding: 60px 30px 30px 30px;
        text-align: center;
      }

      .scene-description .title {
        font-size: 1.5rem;
        color: #ffffff;
        margin-bottom: 8px;
        font-weight: 600;
        text-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);
      }

      .scene-description .description {
        font-size: 0.95rem;
        line-height: 1.5;
        color: #e0e0e0;
        max-width: 800px;
        margin: 0 auto;
        text-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);
      }

      /* Scroll Indicators */
      .scroll-indicators {
        position: absolute;
        right: 20px;
        top: 50%;
        transform: translateY(-50%);
        display: flex;
        flex-direction: column;
        gap: 12px;
        z-index: 100;
        pointer-events: none;
      }

      .scroll-indicators .scroll-dot {
        pointer-events: auto;
      }

      .scroll-dot {
        width: 12px;
        height: 12px;
        border-radius: 50%;
        background: #d0d0d0;
        cursor: pointer;
        transition: all 0.3s ease;
        border: 2px solid transparent;
      }

      .scroll-dot:hover {
        background: #a0a0a0;
        transform: scale(1.2);
      }

      .scroll-dot.active {
        background: #4a90e2;
        border-color: #4a90e2;
        box-shadow: 0 0 0 3px rgba(74, 144, 226, 0.2);
      }

      /* Scene Counter and Navigation */
      .scene-navigation {
        position: absolute;
        top: 20px;
        left: 50%;
        transform: translateX(-50%);
        display: flex;
        align-items: center;
        gap: 12px;
        z-index: 100;
      }

      /* Open Image Button */
      .open-image-button {
        position: absolute;
        top: 20px;
        right: 20px;
        width: 40px;
        height: 40px;
        border-radius: 50%;
        background: rgba(255, 255, 255, 0.95);
        color: #333;
        border: 2px solid rgba(255, 255, 255, 0.3);
        cursor: pointer;
        display: flex;
        align-items: center;
        justify-content: center;
        transition: all 0.3s ease;
        backdrop-filter: blur(10px);
        box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3), 0 2px 4px rgba(0, 0, 0, 0.2);
        z-index: 100;
      }

      .open-image-button:hover {
        background: rgba(255, 255, 255, 1);
        transform: scale(1.1);
        box-shadow: 0 6px 16px rgba(0, 0, 0, 0.4), 0 3px 6px rgba(0, 0, 0, 0.3);
      }

      .open-image-button svg {
        width: 20px;
        height: 20px;
        fill: #333;
      }

      .nav-button {
        width: 36px;
        height: 36px;
        border-radius: 50%;
        background: rgba(255, 255, 255, 0.95);
        color: #333;
        border: 2px solid rgba(255, 255, 255, 0.3);
        cursor: pointer;
        display: flex;
        align-items: center;
        justify-content: center;
        transition: all 0.3s ease;
        backdrop-filter: blur(10px);
        box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3), 0 2px 4px rgba(0, 0, 0, 0.2);
      }

      .nav-button:hover:not(:disabled) {
        background: rgba(255, 255, 255, 1);
        transform: scale(1.1);
        box-shadow: 0 6px 16px rgba(0, 0, 0, 0.4), 0 3px 6px rgba(0, 0, 0, 0.3);
      }

      .nav-button:disabled {
        opacity: 0.4;
        cursor: not-allowed;
      }

      .nav-button svg {
        width: 16px;
        height: 16px;
        fill: #333;
      }

      .scene-counter {
        background: rgba(255, 255, 255, 0.95);
        color: #333;
        padding: 8px 16px;
        border-radius: 20px;
        font-size: 0.9rem;
        backdrop-filter: blur(10px);
        pointer-events: none;
        border: 2px solid rgba(255, 255, 255, 0.3);
        box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3), 0 2px 4px rgba(0, 0, 0, 0.2);
        font-weight: 600;
      }

      /* Mobile Responsive */
      @media (max-width: 768px) {
        .scene-description {
          padding: 40px 20px 20px 20px;
        }

        .scene-description .title {
          font-size: 1.2rem;
        }

        .scene-description .description {
          font-size: 0.85rem;
          line-height: 1.4;
        }

        .scroll-indicators {
          right: 10px;
        }

        .scroll-dot {
          width: 10px;
          height: 10px;
        }

        .nav-button {
          width: 32px;
          height: 32px;
        }

        .nav-button svg {
          width: 14px;
          height: 14px;
        }

        .scene-counter {
          font-size: 0.8rem;
          padding: 6px 12px;
        }

        .scene-navigation {
          top: 15px;
          gap: 8px;
        }

        .open-image-button {
          width: 36px;
          height: 36px;
          top: 15px;
          right: 15px;
        }

        .open-image-button svg {
          width: 18px;
          height: 18px;
        }
      }
</style>

<div class="onboarding-widget-wrapper" data-onboarding-widget>
  <div class="onboarding-widget">
    <!-- Scenes will be dynamically generated here -->
  </div>

  <!-- Scroll Indicators -->
  <div class="scroll-indicators"></div>

  <!-- Open Image Button -->
  <button class="open-image-button" aria-label="Open image in new tab">
    <svg viewBox="0 0 24 24">
      <path d="M19 19H5V5h7V3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2v-7h-2v7zM14 3v2h3.59l-9.83 9.83 1.41 1.41L19 6.41V10h2V3h-7z"/>
    </svg>
  </button>

  <!-- Scene Navigation -->
  <div class="scene-navigation">
    <button class="nav-button nav-button-prev" aria-label="Previous slide">
      <svg viewBox="0 0 24 24">
        <path d="M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z"/>
      </svg>
    </button>
    <div class="scene-counter">1 / 1</div>
    <button class="nav-button nav-button-next" aria-label="Next slide">
      <svg viewBox="0 0 24 24">
        <path d="M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"/>
      </svg>
    </button>
  </div>
</div>

<script>
  (function() {
    // ========================================
    // CONFIGURATION - Edit your slides here!
    // ========================================
    const SLIDES_CONFIG = [
      {
        image: "https://ninjapear-pub.sfo3.cdn.digitaloceanspaces.com/ninjapear_kbs_review_screenshots/hubspot/1.png",
        title: "Dedicated Captcha page right user registration",
        description: "Right after user registration, I encountered the captcha page. (Couldn't they have done this on the user registration page?)"
      },
      {
        image: "https://ninjapear-pub.sfo3.cdn.digitaloceanspaces.com/ninjapear_kbs_review_screenshots/hubspot/2.png",
        title: "Onboarding Steps",
        description: "We are then brought to the onboarding checklist, for which Hubspot wants us to complete a tour of guides/tasks to get ourselves orientated with the Hubspot platform. I skipped all these."
      },
      {
        image: "https://ninjapear-pub.sfo3.cdn.digitaloceanspaces.com/ninjapear_kbs_review_screenshots/hubspot/3.png",
        title: "The Sales Call",
        description: "Of course, a sales-led organisation like Hubspot will invite you to get on a call with their sales representatives. Or you can skip that and start a 14-day trial, which I did."
      },
      {
        image: "https://ninjapear-pub.sfo3.cdn.digitaloceanspaces.com/ninjapear_kbs_review_screenshots/hubspot/4.png",
        title: "Knowledge Base Dashboard",
        description: "I clicked around until I found myself in the Knowledge Base dashboard, which is what I'm trying to review. Plenty of hoops to jump through to reach this page. And I see yet another onboarding process just for the KBS."
      },
      {
        image: "https://ninjapear-pub.sfo3.cdn.digitaloceanspaces.com/ninjapear_kbs_review_screenshots/hubspot/5.png",
        title: "Setting up the Knowledge Base",
        description: "I am asked to set up the knowledge base with a title, language, etc. Various administrative stuff. In my opinion, as an engineer wearing the product hat, all these can be skipped by setting sane defaults which the user can change later if he so wishes. Hence my belief that the UI/UX of Hubspot was designed by committee."
      },
      {
        image: "https://ninjapear-pub.sfo3.cdn.digitaloceanspaces.com/ninjapear_kbs_review_screenshots/hubspot/6.png",
        title: "Part 2: Setting up the Knowledge Base",
        description: "Yet another step in the setup. Here, I am asked to choose a layout for the KBS."
      },
      {
        image: "https://ninjapear-pub.sfo3.cdn.digitaloceanspaces.com/ninjapear_kbs_review_screenshots/hubspot/7.png",
        title: "Part 3: Setting up the Knowledge Base",
        description: "Here, I am asked to create categories for the KBS."
      },
      {
        image: "https://ninjapear-pub.sfo3.cdn.digitaloceanspaces.com/ninjapear_kbs_review_screenshots/hubspot/8.png",
        title: "Part 4: Setting up the Knowledge Base (Success?)",
        description: "A congratulatory message. Couldn't this be shown when we're in the actual KBS? Very naggy."
      },
      {
        image: "https://ninjapear-pub.sfo3.cdn.digitaloceanspaces.com/ninjapear_kbs_review_screenshots/hubspot/9.png",
        title: "Touring the Knowledge Base",
        description: "I am asked to tour the KBS. I skipped it, of course. Get me to the magic moment!"
      },
      {
        image: "https://ninjapear-pub.sfo3.cdn.digitaloceanspaces.com/ninjapear_kbs_review_screenshots/hubspot/10.png",
        title: "Knowledge Base Dashboard",
        description: "This time, it seems like the KBS is set up with a URL (yay). The call-to-action on this page is to create an article, for which I clicked on the button to do that."
      },
      {
        image: "https://ninjapear-pub.sfo3.cdn.digitaloceanspaces.com/ninjapear_kbs_review_screenshots/hubspot/11.png",
        title: "Question",
        description: "The first part of the article editor is to ask me what question my article will be answering. In other words, the title of the article. The thought in my head is -- is Hubspot's KBS targeted for Q&A only?"
      },
      {
        image: "https://ninjapear-pub.sfo3.cdn.digitaloceanspaces.com/ninjapear_kbs_review_screenshots/hubspot/12.png",
        title: "Question P2:",
        description: "I filled it up with \"Lorem Ipsum\" and published it."
      },
      {
        image: "https://ninjapear-pub.sfo3.cdn.digitaloceanspaces.com/ninjapear_kbs_review_screenshots/hubspot/13.png",
        title: "Published Article",
        description: "This is what the published article looks like. Weird that I wasn't given a content body to fill up. Maybe I missed it. But anyways, you can see how minimal the KBS is. Looks like a teenager's first HTML project."
      },
      {
        image: "https://ninjapear-pub.sfo3.cdn.digitaloceanspaces.com/ninjapear_kbs_review_screenshots/hubspot/14.png",
        title: "Back to the KBS's Dashboard",
        description: "You can see the newly published article populated in the dashboard."
      },
      {
        image: "https://ninjapear-pub.sfo3.cdn.digitaloceanspaces.com/ninjapear_kbs_review_screenshots/hubspot/15.png",
        title: "Article Health",
        description: "There's this interesting component that seems to be analytics for the articles, known as \"Article Health\"."
      },
      {
        image: "https://ninjapear-pub.sfo3.cdn.digitaloceanspaces.com/ninjapear_kbs_review_screenshots/hubspot/16.png",
        title: "Pricing",
        description: "Then, I explored the pricing of Hubspot's KBS. And it'll cost me SGD 126/mo/seat. Or around 99 USD/mo/seat."
      }
    ];
    // ========================================
    // End of configuration
    // ========================================

    // Find the current script's previous sibling (the widget wrapper)
    const currentScript = document.currentScript;
    const widgetWrapper = currentScript.previousElementSibling;

    if (!widgetWrapper || !widgetWrapper.hasAttribute('data-onboarding-widget')) {
      console.error('Onboarding widget wrapper not found');
      return;
    }

    // Get elements within this specific widget instance
    const widget = widgetWrapper.querySelector(".onboarding-widget");
    const indicatorsContainer = widgetWrapper.querySelector(".scroll-indicators");
    const sceneCounter = widgetWrapper.querySelector(".scene-counter");
    const prevButton = widgetWrapper.querySelector(".nav-button-prev");
    const nextButton = widgetWrapper.querySelector(".nav-button-next");
    const openImageButton = widgetWrapper.querySelector(".open-image-button");

    let currentScene = 0;

    // Generate slides from configuration
    function generateSlides() {
      SLIDES_CONFIG.forEach((slide, index) => {
        const sceneDiv = document.createElement("div");
        sceneDiv.className = "onboarding-scene";
        sceneDiv.setAttribute("data-scene", index + 1);

        sceneDiv.innerHTML = `
          <div class="screenshot-container">
            <img src="${slide.image}" alt="${slide.title}" />
            <div class="scene-description">
              <p class="title">${slide.title}</p>
              <p class="description">${slide.description}</p>
            </div>
          </div>
        `;

        widget.appendChild(sceneDiv);
      });
    }

    // Generate scroll indicator dots
    function generateIndicators() {
      SLIDES_CONFIG.forEach((slide, index) => {
        const dot = document.createElement("div");
        dot.className = "scroll-dot";
        dot.setAttribute("data-scene", index);

        dot.addEventListener("click", () => {
          scrollToScene(index);
        });

        indicatorsContainer.appendChild(dot);
      });
    }

    // Initialize the widget
    generateSlides();
    generateIndicators();

    const scenes = widgetWrapper.querySelectorAll(".onboarding-scene");
    const dots = widgetWrapper.querySelectorAll(".scroll-dot");

    // Function to get current image source
    function getCurrentImageSrc() {
      const currentSceneElement = scenes[currentScene];
      const img = currentSceneElement.querySelector("img");
      return img ? img.src : null;
    }

    // Function to update indicators and navigation buttons
    function updateIndicators(index) {
      currentScene = index;

      // Update dots
      dots.forEach((dot, i) => {
        dot.classList.toggle("active", i === index);
      });

      // Update counter
      sceneCounter.textContent = `${index + 1} / ${scenes.length}`;

      // Update navigation buttons
      prevButton.disabled = index === 0;
      nextButton.disabled = index === scenes.length - 1;
    }

    // Function to scroll to a specific scene
    function scrollToScene(index) {
      if (index < 0 || index >= scenes.length) {
        return;
      }

      const targetScene = scenes[index];
      targetScene.scrollIntoView({ behavior: "smooth", block: "start" });
    }

    // Detect which scene is currently in view based on scroll position
    function detectCurrentScene() {
      const scrollTop = widget.scrollTop;
      const sceneHeight = scenes[0].offsetHeight;
      const newScene = Math.round(scrollTop / sceneHeight);

      if (
        newScene !== currentScene &&
        newScene >= 0 &&
        newScene < scenes.length
      ) {
        updateIndicators(newScene);
      }
    }

    // Listen to scroll events to update indicators
    let scrollTimeout;
    widget.addEventListener(
      "scroll",
      () => {
        clearTimeout(scrollTimeout);
        scrollTimeout = setTimeout(() => {
          detectCurrentScene();
        }, 100);
      },
      { passive: true }
    );

    // Navigation button event listeners
    prevButton.addEventListener("click", () => {
      if (currentScene > 0) {
        scrollToScene(currentScene - 1);
      }
    });

    nextButton.addEventListener("click", () => {
      if (currentScene < scenes.length - 1) {
        scrollToScene(currentScene + 1);
      }
    });

    // Open image in new tab
    openImageButton.addEventListener("click", () => {
      const imageSrc = getCurrentImageSrc();
      if (imageSrc) {
        window.open(imageSrc, "_blank");
      }
    });

    // Initialize first scene indicators
    updateIndicators(0);
  })();
</script>

<!--kg-card-end: html-->
<h3 id="hubspots-pricing">Hubspot's Pricing</h3>
<p>Another impression I got with Hubspot is that it is <strong>very</strong> expensive at $90/seat (!), and there are no free plans. That said, there is a 14-day free trial for which you can try it.</p>
<h3 id="hubspots-product-questions-answered">Hubspot's Product Questions, Answered</h3>
<blockquote>
<p>What is the KBS core use-case?</p>
</blockquote>
<p>I'm going to firmly place Hubspot's KBS to be a customer-facing KBS for documenting product knowledge and FAQ. And really nothing more.</p>
<blockquote>
<p>Does it support markdown?</p>
</blockquote>
<p>HubSpot's native knowledge base editor does not support Markdown, but some third-party integrations offer it. Instead, HubSpot uses a rich text editor with a graphical toolbar for formatting. This is a huge no-go for me because markdown is basic to me in terms of text formatting and I guess Hubspot is trying to support the lowest common denominator, which in turn harms savvy users.</p>
<blockquote>
<p>Does it support code snippets formatting?</p>
</blockquote>
<p>The native HubSpot knowledge base editor has a "code format" tool, but it does not support syntax highlighting out-of-the-box. This exists because it has a Microsoft Word "text formatting ribbon" which allows the user to paste in code snippets. But you know this is done because the rich text tools allow for it; not because it is intended for code snippets. Because if they care for it, they will include code-highlighting. But that isn't support.</p>
<blockquote>
<p>What is the price?</p>
</blockquote>
<p>While Hubspot supports lower tier plans, the <em>full</em> knowledge base software is only unlocked with the Professional Plan which starts at $90/user/month. One of the most expensive products ever.</p>
<blockquote>
<p>Is pricing charged per-seat?</p>
</blockquote>
<p>Yes. As a bootstrapped company, I'd likely not go with Hubspot because it makes me very hesitant to grow with Hubspot if they are penalizing me because my team got bigger; not because I'm using them more.</p>
<blockquote>
<p>What is the onboarding like?</p>
</blockquote>
<p>It took 7 steps to create my first knowledge base article after signing up with Hubspot and enabling the trial. On top of that, I have to really dig into Hubspot to find where the KBS feature is. My takeaway is that KBS is not Hubspot's core functionality.</p>
<blockquote>
<p>Does it have AI search?</p>
</blockquote>
<p>Yes, through Breeze. It's a cute lil live-chat-like widget that lets you chat/interact with your data. Hubspot is a big company and like most big companies these days, AI integration is a must-have for growth/marketing reasons.</p>
<blockquote>
<p>Does it have SSO?</p>
</blockquote>
<p>Yes, Hubspot is a huge company, selling marketing software to Enterprises. It is only natural that they support SSO.</p>
<blockquote>
<p>Does it allow the user to customize theming via CSS?</p>
</blockquote>
<p>Well, they let me choose between 4 themes, and to further customize the look of the theme templates through theme options. But no, it does not support CSS customization/overrides. Makes sense since again, I think Hubspot caters to the lowest common denominator.</p>
<h3 id="rating-hubspot">Rating Hubspot</h3>
<table>
<thead>
<tr>
<th><strong>Feature</strong></th>
<th><strong>Rating</strong></th>
<th><strong>Details</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Pricing</strong></td>
<td>⭐ (1/5)</td>
<td>Too expensive for a KBS product that is an afterthought.</td>
</tr>
<tr>
<td><strong>Enterprise Ready</strong></td>
<td>⭐⭐⭐⭐⭐ (5/5)</td>
<td>Hubspot serves Enterprises and is huge for doing so. So yes, they are definitely Enterprise ready.</td>
</tr>
<tr>
<td><strong>AI Integration</strong></td>
<td>⭐⭐⭐⭐ (4/5)</td>
<td>Hubspot's AI integration, while deep and throughout products, reeks of design by committee. It works, but it is expensive and slow.</td>
</tr>
<tr>
<td><strong>Design</strong></td>
<td>⭐⭐⭐ (3/5)</td>
<td>Hubspot's design is fine but it does reek of an Enterprise product smell. For which there is far too many point and click forms for the point of product flexibility/extensibility. Which dramatically slows things down. One more thing, the KBS generated by Hubspot is very ugly. It's like no thought was put into mocking an empty state for the KBS.</td>
</tr>
<tr>
<td><strong>Extensibility</strong></td>
<td>⭐⭐⭐⭐ (4.5/5)</td>
<td>Hubspot has an extensive API that allows further product integration.</td>
</tr>
<tr>
<td><strong>Average</strong></td>
<td>⭐⭐⭐⭐ (3.5/5)</td>
<td>My take is that Hubspot's KBS was a feature that was an afterthought to Hubspot's core offerings, which are not KBS. One of those things that larger Enterprises <em>add</em> to help clinch contracts by ticking as many checkboxes in a sales pitch.<br><br>Honestly it makes no sense to use Hubspot KBS, even if your company is an existing Hubspot user just because of how lackluster it is. A simple ghost blog would do a better job in presenting you, the user with a CMS and a customizable Knowledge Base interface even if it is not originally intended for it.<br><br>Hubspot gets a 3.5/5 rating. I do not recommend Hubspot KBS.</td>
</tr>
</tbody>
</table>
<h2 id="ninjapear">NinjaPear</h2>
<table>
<thead>
<tr>
<th><strong>Pricing</strong></th>
<th><strong>Enterprise Ready</strong></th>
<th><strong>AI Integration</strong></th>
<th><strong>Design</strong></th>
<th><strong>Extensibility</strong></th>
<th><strong>Average</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td>⭐⭐⭐⭐⭐ (5/5)</td>
<td>⭐⭐⭐⭐ (4/5)</td>
<td>⭐⭐⭐⭐⭐ (4.5/5)</td>
<td>⭐⭐⭐⭐ (4/5)</td>
<td>⭐⭐⭐⭐⭐ (5/5)</td>
<td>⭐⭐ (4.5/5)</td>
</tr>
</tbody>
</table>
<p>NinjaPear is a new kid on the block in the customer support space that seeks to challenge the incumbents with what they deem to be common sense pricing. Release features for free, and charge only for AI inferences. In fact, NinjaPear is the only product in this entire list that is built after ChatGPT was released, and this has led to NinjaPear being AI-first with AI being extremely well-integrated with the product in all angles.</p>
<p>NinjaPear's KBS is straightforward and brings you to magic moment of its product with minimum cruft.</p>
<h3 id="ninjapear-demo">NinjaPear Demo</h3>

<!--kg-card-begin: html-->
<style>
      * {
        margin: 0;
        padding: 0;
        box-sizing: border-box;
      }

      .onboarding-widget-wrapper {
        position: relative;
        width: 100%;
        height: 600px;
        border-radius: 8px;
        box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
        overflow: hidden;
      }

      .onboarding-widget {
        position: relative;
        width: 100%;
        height: 100%;
        overflow-y: scroll;
        overflow-x: hidden;
        background: #1a1a1a;
        scroll-snap-type: y mandatory;
        scroll-behavior: smooth;
        -webkit-overflow-scrolling: touch;
      }

      .onboarding-scene {
        position: relative;
        width: 100%;
        height: 600px;
        flex-shrink: 0;
        scroll-snap-align: start;
        scroll-snap-stop: always;
      }

      .screenshot-container {
        width: 100%;
        height: 100%;
        display: flex;
        justify-content: center;
        align-items: center;
        background: #1a1a1a;
        position: relative;
      }

      .screenshot-container img {
        width: 100%;
        height: 100%;
        object-fit: contain;
      }

      .scene-description {
        position: absolute;
        bottom: 0;
        left: 0;
        right: 0;
        background: linear-gradient(
          to top,
          rgba(0, 0, 0, 0.85) 0%,
          rgba(0, 0, 0, 0.7) 70%,
          transparent 100%
        );
        backdrop-filter: blur(8px);
        padding: 60px 30px 30px 30px;
        text-align: center;
      }

      .scene-description .title {
        font-size: 1.5rem;
        color: #ffffff;
        margin-bottom: 8px;
        font-weight: 600;
        text-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);
      }

      .scene-description .description {
        font-size: 0.95rem;
        line-height: 1.5;
        color: #e0e0e0;
        max-width: 800px;
        margin: 0 auto;
        text-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);
      }

      /* Scroll Indicators */
      .scroll-indicators {
        position: absolute;
        right: 20px;
        top: 50%;
        transform: translateY(-50%);
        display: flex;
        flex-direction: column;
        gap: 12px;
        z-index: 100;
        pointer-events: none;
      }

      .scroll-indicators .scroll-dot {
        pointer-events: auto;
      }

      .scroll-dot {
        width: 12px;
        height: 12px;
        border-radius: 50%;
        background: #d0d0d0;
        cursor: pointer;
        transition: all 0.3s ease;
        border: 2px solid transparent;
      }

      .scroll-dot:hover {
        background: #a0a0a0;
        transform: scale(1.2);
      }

      .scroll-dot.active {
        background: #4a90e2;
        border-color: #4a90e2;
        box-shadow: 0 0 0 3px rgba(74, 144, 226, 0.2);
      }

      /* Scene Counter and Navigation */
      .scene-navigation {
        position: absolute;
        top: 20px;
        left: 50%;
        transform: translateX(-50%);
        display: flex;
        align-items: center;
        gap: 12px;
        z-index: 100;
      }

      /* Open Image Button */
      .open-image-button {
        position: absolute;
        top: 20px;
        right: 20px;
        width: 40px;
        height: 40px;
        border-radius: 50%;
        background: rgba(255, 255, 255, 0.95);
        color: #333;
        border: 2px solid rgba(255, 255, 255, 0.3);
        cursor: pointer;
        display: flex;
        align-items: center;
        justify-content: center;
        transition: all 0.3s ease;
        backdrop-filter: blur(10px);
        box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3), 0 2px 4px rgba(0, 0, 0, 0.2);
        z-index: 100;
      }

      .open-image-button:hover {
        background: rgba(255, 255, 255, 1);
        transform: scale(1.1);
        box-shadow: 0 6px 16px rgba(0, 0, 0, 0.4), 0 3px 6px rgba(0, 0, 0, 0.3);
      }

      .open-image-button svg {
        width: 20px;
        height: 20px;
        fill: #333;
      }

      .nav-button {
        width: 36px;
        height: 36px;
        border-radius: 50%;
        background: rgba(255, 255, 255, 0.95);
        color: #333;
        border: 2px solid rgba(255, 255, 255, 0.3);
        cursor: pointer;
        display: flex;
        align-items: center;
        justify-content: center;
        transition: all 0.3s ease;
        backdrop-filter: blur(10px);
        box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3), 0 2px 4px rgba(0, 0, 0, 0.2);
      }

      .nav-button:hover:not(:disabled) {
        background: rgba(255, 255, 255, 1);
        transform: scale(1.1);
        box-shadow: 0 6px 16px rgba(0, 0, 0, 0.4), 0 3px 6px rgba(0, 0, 0, 0.3);
      }

      .nav-button:disabled {
        opacity: 0.4;
        cursor: not-allowed;
      }

      .nav-button svg {
        width: 16px;
        height: 16px;
        fill: #333;
      }

      .scene-counter {
        background: rgba(255, 255, 255, 0.95);
        color: #333;
        padding: 8px 16px;
        border-radius: 20px;
        font-size: 0.9rem;
        backdrop-filter: blur(10px);
        pointer-events: none;
        border: 2px solid rgba(255, 255, 255, 0.3);
        box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3), 0 2px 4px rgba(0, 0, 0, 0.2);
        font-weight: 600;
      }

      /* Mobile Responsive */
      @media (max-width: 768px) {
        .scene-description {
          padding: 40px 20px 20px 20px;
        }

        .scene-description .title {
          font-size: 1.2rem;
        }

        .scene-description .description {
          font-size: 0.85rem;
          line-height: 1.4;
        }

        .scroll-indicators {
          right: 10px;
        }

        .scroll-dot {
          width: 10px;
          height: 10px;
        }

        .nav-button {
          width: 32px;
          height: 32px;
        }

        .nav-button svg {
          width: 14px;
          height: 14px;
        }

        .scene-counter {
          font-size: 0.8rem;
          padding: 6px 12px;
        }

        .scene-navigation {
          top: 15px;
          gap: 8px;
        }

        .open-image-button {
          width: 36px;
          height: 36px;
          top: 15px;
          right: 15px;
        }

        .open-image-button svg {
          width: 18px;
          height: 18px;
        }
      }
</style>

<div class="onboarding-widget-wrapper" data-onboarding-widget>
  <div class="onboarding-widget">
    <!-- Scenes will be dynamically generated here -->
  </div>

  <!-- Scroll Indicators -->
  <div class="scroll-indicators"></div>

  <!-- Open Image Button -->
  <button class="open-image-button" aria-label="Open image in new tab">
    <svg viewBox="0 0 24 24">
      <path d="M19 19H5V5h7V3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2v-7h-2v7zM14 3v2h3.59l-9.83 9.83 1.41 1.41L19 6.41V10h2V3h-7z"/>
    </svg>
  </button>

  <!-- Scene Navigation -->
  <div class="scene-navigation">
    <button class="nav-button nav-button-prev" aria-label="Previous slide">
      <svg viewBox="0 0 24 24">
        <path d="M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z"/>
      </svg>
    </button>
    <div class="scene-counter">1 / 1</div>
    <button class="nav-button nav-button-next" aria-label="Next slide">
      <svg viewBox="0 0 24 24">
        <path d="M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"/>
      </svg>
    </button>
  </div>
</div>

<script>
  (function() {
    // ========================================
    // CONFIGURATION - Edit your slides here!
    // ========================================
    const SLIDES_CONFIG = [
      {
        image: "https://ninjapear-pub.sfo3.cdn.digitaloceanspaces.com/ninjapear_kbs_review_screenshots/ninjapear/1.png",
        title: "NinjaPear's Landing Page",
        description: "NinjaPear is a customer support platform, evident from its landing page with its live chat demo."
      },
      {
        image: "https://ninjapear-pub.sfo3.cdn.digitaloceanspaces.com/ninjapear_kbs_review_screenshots/ninjapear/2.png",
        title: "Registering an Account",
        description: "Straightforward Registration Page"
      },
      {
        image: "https://ninjapear-pub.sfo3.cdn.digitaloceanspaces.com/ninjapear_kbs_review_screenshots/ninjapear/3.png",
        title: "Knowledge Base Demo",
        description: "Right after the registration page, and without email verification, I was brought to a knowledge base pre-populated with some articles. It was also crawling my website (garnered from my email's domain) in the background, and it began populating both articles and categories from my website's content."
      },
      {
        image: "https://ninjapear-pub.sfo3.cdn.digitaloceanspaces.com/ninjapear_kbs_review_screenshots/ninjapear/4.png",
        title: "Knowledge Base Dashboard",
        description: "The next step after the knowledge base demo was the dashboard for the knowledge base. Here, I could view the list of categories and articles the AI had generated for me. The content seemed to be on point."
      },
      {
        image: "https://ninjapear-pub.sfo3.cdn.digitaloceanspaces.com/ninjapear_kbs_review_screenshots/ninjapear/5.png",
        title: "Drafting an Article",
        description: "Drafting an article was pretty straightforward. I was dropped into an editor, and the editor was Markdown-native."
      },
      {
        image: "https://ninjapear-pub.sfo3.cdn.digitaloceanspaces.com/ninjapear_kbs_review_screenshots/ninjapear/6.png",
        title: "Article Visibility",
        description: "Before I could publish, I could choose whether to keep the content as private content (for AI search/responses) or public, so it was visible to the public."
      },
      {
        image: "https://ninjapear-pub.sfo3.cdn.digitaloceanspaces.com/ninjapear_kbs_review_screenshots/ninjapear/7.png",
        title: "Published Article Demo",
        description: "Here, you can see how a published article looks, with a full table of contents, code snippet highlighting, etc."
      }
    ];
    // ========================================
    // End of configuration
    // ========================================

    // Find the current script's previous sibling (the widget wrapper)
    const currentScript = document.currentScript;
    const widgetWrapper = currentScript.previousElementSibling;

    if (!widgetWrapper || !widgetWrapper.hasAttribute('data-onboarding-widget')) {
      console.error('Onboarding widget wrapper not found');
      return;
    }

    // Get elements within this specific widget instance
    const widget = widgetWrapper.querySelector(".onboarding-widget");
    const indicatorsContainer = widgetWrapper.querySelector(".scroll-indicators");
    const sceneCounter = widgetWrapper.querySelector(".scene-counter");
    const prevButton = widgetWrapper.querySelector(".nav-button-prev");
    const nextButton = widgetWrapper.querySelector(".nav-button-next");
    const openImageButton = widgetWrapper.querySelector(".open-image-button");

    let currentScene = 0;

    // Generate slides from configuration
    function generateSlides() {
      SLIDES_CONFIG.forEach((slide, index) => {
        const sceneDiv = document.createElement("div");
        sceneDiv.className = "onboarding-scene";
        sceneDiv.setAttribute("data-scene", index + 1);

        sceneDiv.innerHTML = `
          <div class="screenshot-container">
            <img src="${slide.image}" alt="${slide.title}" />
            <div class="scene-description">
              <p class="title">${slide.title}</p>
              <p class="description">${slide.description}</p>
            </div>
          </div>
        `;

        widget.appendChild(sceneDiv);
      });
    }

    // Generate scroll indicator dots
    function generateIndicators() {
      SLIDES_CONFIG.forEach((slide, index) => {
        const dot = document.createElement("div");
        dot.className = "scroll-dot";
        dot.setAttribute("data-scene", index);

        dot.addEventListener("click", () => {
          scrollToScene(index);
        });

        indicatorsContainer.appendChild(dot);
      });
    }

    // Initialize the widget
    generateSlides();
    generateIndicators();

    const scenes = widgetWrapper.querySelectorAll(".onboarding-scene");
    const dots = widgetWrapper.querySelectorAll(".scroll-dot");

    // Function to get current image source
    function getCurrentImageSrc() {
      const currentSceneElement = scenes[currentScene];
      const img = currentSceneElement.querySelector("img");
      return img ? img.src : null;
    }

    // Function to update indicators and navigation buttons
    function updateIndicators(index) {
      currentScene = index;

      // Update dots
      dots.forEach((dot, i) => {
        dot.classList.toggle("active", i === index);
      });

      // Update counter
      sceneCounter.textContent = `${index + 1} / ${scenes.length}`;

      // Update navigation buttons
      prevButton.disabled = index === 0;
      nextButton.disabled = index === scenes.length - 1;
    }

    // Function to scroll to a specific scene
    function scrollToScene(index) {
      if (index < 0 || index >= scenes.length) {
        return;
      }

      const targetScene = scenes[index];
      targetScene.scrollIntoView({ behavior: "smooth", block: "start" });
    }

    // Detect which scene is currently in view based on scroll position
    function detectCurrentScene() {
      const scrollTop = widget.scrollTop;
      const sceneHeight = scenes[0].offsetHeight;
      const newScene = Math.round(scrollTop / sceneHeight);

      if (
        newScene !== currentScene &&
        newScene >= 0 &&
        newScene < scenes.length
      ) {
        updateIndicators(newScene);
      }
    }

    // Listen to scroll events to update indicators
    let scrollTimeout;
    widget.addEventListener(
      "scroll",
      () => {
        clearTimeout(scrollTimeout);
        scrollTimeout = setTimeout(() => {
          detectCurrentScene();
        }, 100);
      },
      { passive: true }
    );

    // Navigation button event listeners
    prevButton.addEventListener("click", () => {
      if (currentScene > 0) {
        scrollToScene(currentScene - 1);
      }
    });

    nextButton.addEventListener("click", () => {
      if (currentScene < scenes.length - 1) {
        scrollToScene(currentScene + 1);
      }
    });

    // Open image in new tab
    openImageButton.addEventListener("click", () => {
      const imageSrc = getCurrentImageSrc();
      if (imageSrc) {
        window.open(imageSrc, "_blank");
      }
    });

    // Initialize first scene indicators
    updateIndicators(0);
  })();
</script>

<!--kg-card-end: html-->
<h3 id="ninjapear-product-questions-answered">NinjaPear Product Questions, Answered</h3>
<blockquote>
<p>What is the KBS core use-case?</p>
</blockquote>
<p>NinjaPear's KBS use-case is intended to document product knowledge and FAQs for customers, like Intercom and Tawk.to.</p>
<blockquote>
<p>Does it support Markdown?</p>
</blockquote>
<p>Yes it does. Markdown is native. On top of that, it has a ribbon with rich-text utilities like Microsoft Word in case you or your teammates are not familiar with Markdown.</p>
<blockquote>
<p>Does it support code snippets formatting?</p>
</blockquote>
<p>Yes it does.</p>
<blockquote>
<p>What is the price?</p>
</blockquote>
<p>NinjaPear software features are 100% free with no limits.</p>
<blockquote>
<p>Is pricing charged per-seat?</p>
</blockquote>
<p>No. NinjaPear does not charge by seats, or contacts. It is free with no limits.</p>
<blockquote>
<p>What is the onboarding like?</p>
</blockquote>
<p>NinjaPear has the simplest and fastest onboarding compared to any other alternatives in the market. After registration, you are immediately brought to the knowledge base demo.</p>
<p>While you're at this demo page, NinjaPear will inform you that it is crawling your website to build a base knowledge base. Thereafter, it seems to use AI to build categories and articles stemming from data crawled off your company's website.</p>
<p>You can skip the demo and it goes straight to the dashboard featuring the knowledge base, for which you can add/update/delete articles and categories. I was able to publish a knowledge base article within a minute from the landing page through registration, all the way to the dashboard KBS editor.</p>
<blockquote>
<p>Does it have AI search?</p>
</blockquote>
<p>Yes, NinjaPear uses the knowledge base articles (both private and public) as sources of business knowledge for AI search. The AI search can be used to answer questions in the knowledge base, or to generate automated response suggestions in the Inbox, or to auto-reply customers in the live chat.</p>
<blockquote>
<p>Does it have SSO?</p>
</blockquote>
<p>Yes, which is enabled when you're on the $299/mo plan.</p>
<blockquote>
<p>Does it allow for the user to customize theming via CSS?</p>
</blockquote>
<p>Yes, NinjaPear allows you to insert custom CSS or even custom scripts into your knowledge base.</p>
<h3 id="rating-ninjapear">Rating NinjaPear</h3>
<table>
<thead>
<tr>
<th><strong>Feature</strong></th>
<th><strong>Rating</strong></th>
<th><strong>Details</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Pricing</strong></td>
<td>⭐⭐⭐⭐⭐ (5/5)</td>
<td>Free-er than free. Offers features that Tawk.to charges for, while still being free.</td>
</tr>
<tr>
<td><strong>Enterprise Ready</strong></td>
<td>⭐⭐⭐⭐ (4/5)</td>
<td>NinjaPear's SSO is locked behind an annual subscription plan.</td>
</tr>
<tr>
<td><strong>AI Integration</strong></td>
<td>⭐⭐⭐⭐ (4.5/5)</td>
<td>NinjaPear's AI implementation is front and center in every aspect of their product. The only drawback is that it does not (yet) allow the user to perform advanced LLM tweaks such as changing of models or editing the prompt.</td>
</tr>
<tr>
<td><strong>Design</strong></td>
<td>⭐⭐⭐⭐ (4/5)</td>
<td>NinjaPear's UI is simple and easy to navigate. But what truly shines is the focus on user-experience -- how easy it is to use and get started.</td>
</tr>
<tr>
<td><strong>Extensibility</strong></td>
<td>⭐⭐⭐⭐⭐ (5/5)</td>
<td>NinjaPear is the only product to score 5/5 for this segment because it is the only product that has open-sourced its entire communication protocol, as well as exposes an API for any developer to integrate into the KBS. In fact, you can use NinjaPear KBS without your customers ever visiting their website simply by using NinjaPear's API and infrastructure to power your own KBS front-end.</td>
</tr>
<tr>
<td><strong>Average</strong></td>
<td>⭐⭐⭐⭐ (4.5/5)</td>
<td>NinjaPear is a solid recommendation for SMBs and growing startups looking for customer-facing KBS solution for its pricing, Enterprise features, and AI integrations.</td>
</tr>
</tbody>
</table>
<h2 id="intercom">Intercom</h2>
<table>
<thead>
<tr>
<th><strong>Pricing</strong></th>
<th><strong>Enterprise Ready</strong></th>
<th><strong>AI Integration</strong></th>
<th><strong>Design</strong></th>
<th><strong>Extensibility</strong></th>
<th><strong>Average</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td>⭐ (1/5)</td>
<td>⭐⭐⭐⭐⭐ (5/5)</td>
<td>⭐⭐⭐⭐ (4.5/5)</td>
<td>⭐⭐⭐⭐ (4.5/5)</td>
<td>⭐⭐⭐⭐⭐ (5/5)</td>
<td>⭐⭐⭐⭐ (4/5)</td>
</tr>
</tbody>
</table>
<p>Intercom's rendition of Knowledge Base Software is known as the <em>Help Center</em>.</p>
<p>My impression of Intercom is that it is a mature but expensive product, starting at $39/user/month. Which means a company with 20 customer support representatives would cost $9360/month.</p>
<p>On top of that, it does seem like Fin AI, Intercom's AI solution, is a separate product from Intercom's offering. Not sure if that's a bane or a boon for customers. Personally for me, the KBS has to be a repository of knowledge for AI auto-replies to customers.</p>
<p>That said, Intercom is a battle-tested mature customer service solution that you cannot go wrong with so long as you're down to paying more and more as you grow. Pay for KBS, then pay for AI again.</p>
<h3 id="intercom-demo">Intercom Demo</h3>

<!--kg-card-begin: html-->
<style>
      * {
        margin: 0;
        padding: 0;
        box-sizing: border-box;
      }

      .onboarding-widget-wrapper {
        position: relative;
        width: 100%;
        height: 600px;
        border-radius: 8px;
        box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
        overflow: hidden;
      }

      .onboarding-widget {
        position: relative;
        width: 100%;
        height: 100%;
        overflow-y: scroll;
        overflow-x: hidden;
        background: #1a1a1a;
        scroll-snap-type: y mandatory;
        scroll-behavior: smooth;
        -webkit-overflow-scrolling: touch;
      }

      .onboarding-scene {
        position: relative;
        width: 100%;
        height: 600px;
        flex-shrink: 0;
        scroll-snap-align: start;
        scroll-snap-stop: always;
      }

      .screenshot-container {
        width: 100%;
        height: 100%;
        display: flex;
        justify-content: center;
        align-items: center;
        background: #1a1a1a;
        position: relative;
      }

      .screenshot-container img {
        width: 100%;
        height: 100%;
        object-fit: contain;
      }

      .scene-description {
        position: absolute;
        bottom: 0;
        left: 0;
        right: 0;
        background: linear-gradient(
          to top,
          rgba(0, 0, 0, 0.85) 0%,
          rgba(0, 0, 0, 0.7) 70%,
          transparent 100%
        );
        backdrop-filter: blur(8px);
        padding: 60px 30px 30px 30px;
        text-align: center;
      }

      .scene-description .title {
        font-size: 1.5rem;
        color: #ffffff;
        margin-bottom: 8px;
        font-weight: 600;
        text-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);
      }

      .scene-description .description {
        font-size: 0.95rem;
        line-height: 1.5;
        color: #e0e0e0;
        max-width: 800px;
        margin: 0 auto;
        text-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);
      }

      /* Scroll Indicators */
      .scroll-indicators {
        position: absolute;
        right: 20px;
        top: 50%;
        transform: translateY(-50%);
        display: flex;
        flex-direction: column;
        gap: 12px;
        z-index: 100;
        pointer-events: none;
      }

      .scroll-indicators .scroll-dot {
        pointer-events: auto;
      }

      .scroll-dot {
        width: 12px;
        height: 12px;
        border-radius: 50%;
        background: #d0d0d0;
        cursor: pointer;
        transition: all 0.3s ease;
        border: 2px solid transparent;
      }

      .scroll-dot:hover {
        background: #a0a0a0;
        transform: scale(1.2);
      }

      .scroll-dot.active {
        background: #4a90e2;
        border-color: #4a90e2;
        box-shadow: 0 0 0 3px rgba(74, 144, 226, 0.2);
      }

      /* Scene Counter and Navigation */
      .scene-navigation {
        position: absolute;
        top: 20px;
        left: 50%;
        transform: translateX(-50%);
        display: flex;
        align-items: center;
        gap: 12px;
        z-index: 100;
      }

      /* Open Image Button */
      .open-image-button {
        position: absolute;
        top: 20px;
        right: 20px;
        width: 40px;
        height: 40px;
        border-radius: 50%;
        background: rgba(255, 255, 255, 0.95);
        color: #333;
        border: 2px solid rgba(255, 255, 255, 0.3);
        cursor: pointer;
        display: flex;
        align-items: center;
        justify-content: center;
        transition: all 0.3s ease;
        backdrop-filter: blur(10px);
        box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3), 0 2px 4px rgba(0, 0, 0, 0.2);
        z-index: 100;
      }

      .open-image-button:hover {
        background: rgba(255, 255, 255, 1);
        transform: scale(1.1);
        box-shadow: 0 6px 16px rgba(0, 0, 0, 0.4), 0 3px 6px rgba(0, 0, 0, 0.3);
      }

      .open-image-button svg {
        width: 20px;
        height: 20px;
        fill: #333;
      }

      .nav-button {
        width: 36px;
        height: 36px;
        border-radius: 50%;
        background: rgba(255, 255, 255, 0.95);
        color: #333;
        border: 2px solid rgba(255, 255, 255, 0.3);
        cursor: pointer;
        display: flex;
        align-items: center;
        justify-content: center;
        transition: all 0.3s ease;
        backdrop-filter: blur(10px);
        box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3), 0 2px 4px rgba(0, 0, 0, 0.2);
      }

      .nav-button:hover:not(:disabled) {
        background: rgba(255, 255, 255, 1);
        transform: scale(1.1);
        box-shadow: 0 6px 16px rgba(0, 0, 0, 0.4), 0 3px 6px rgba(0, 0, 0, 0.3);
      }

      .nav-button:disabled {
        opacity: 0.4;
        cursor: not-allowed;
      }

      .nav-button svg {
        width: 16px;
        height: 16px;
        fill: #333;
      }

      .scene-counter {
        background: rgba(255, 255, 255, 0.95);
        color: #333;
        padding: 8px 16px;
        border-radius: 20px;
        font-size: 0.9rem;
        backdrop-filter: blur(10px);
        pointer-events: none;
        border: 2px solid rgba(255, 255, 255, 0.3);
        box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3), 0 2px 4px rgba(0, 0, 0, 0.2);
        font-weight: 600;
      }

      /* Mobile Responsive */
      @media (max-width: 768px) {
        .scene-description {
          padding: 40px 20px 20px 20px;
        }

        .scene-description .title {
          font-size: 1.2rem;
        }

        .scene-description .description {
          font-size: 0.85rem;
          line-height: 1.4;
        }

        .scroll-indicators {
          right: 10px;
        }

        .scroll-dot {
          width: 10px;
          height: 10px;
        }

        .nav-button {
          width: 32px;
          height: 32px;
        }

        .nav-button svg {
          width: 14px;
          height: 14px;
        }

        .scene-counter {
          font-size: 0.8rem;
          padding: 6px 12px;
        }

        .scene-navigation {
          top: 15px;
          gap: 8px;
        }

        .open-image-button {
          width: 36px;
          height: 36px;
          top: 15px;
          right: 15px;
        }

        .open-image-button svg {
          width: 18px;
          height: 18px;
        }
      }
</style>

<div class="onboarding-widget-wrapper" data-onboarding-widget>
  <div class="onboarding-widget">
    <!-- Scenes will be dynamically generated here -->
  </div>

  <!-- Scroll Indicators -->
  <div class="scroll-indicators"></div>

  <!-- Open Image Button -->
  <button class="open-image-button" aria-label="Open image in new tab">
    <svg viewBox="0 0 24 24">
      <path d="M19 19H5V5h7V3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2v-7h-2v7zM14 3v2h3.59l-9.83 9.83 1.41 1.41L19 6.41V10h2V3h-7z"/>
    </svg>
  </button>

  <!-- Scene Navigation -->
  <div class="scene-navigation">
    <button class="nav-button nav-button-prev" aria-label="Previous slide">
      <svg viewBox="0 0 24 24">
        <path d="M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z"/>
      </svg>
    </button>
    <div class="scene-counter">1 / 1</div>
    <button class="nav-button nav-button-next" aria-label="Next slide">
      <svg viewBox="0 0 24 24">
        <path d="M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"/>
      </svg>
    </button>
  </div>
</div>

<script>
  (function() {
    // ========================================
    // CONFIGURATION - Edit your slides here!
    // ========================================
    const SLIDES_CONFIG = [
      {
        image: "https://ninjapear-pub.sfo3.cdn.digitaloceanspaces.com/ninjapear_kbs_review_screenshots/intercom/1.png",
        title: "Intercom's Landing Page",
        description: "You can see from Intercom's landing page that they are focused on two products. Fin AI, their AI offering, and Intercom Suite, their customer support suite."
      },
      {
        image: "https://ninjapear-pub.sfo3.cdn.digitaloceanspaces.com/ninjapear_kbs_review_screenshots/intercom/2.png",
        title: "Registration Page",
        description: "Intercom's user registration page."
      },
      {
        image: "https://ninjapear-pub.sfo3.cdn.digitaloceanspaces.com/ninjapear_kbs_review_screenshots/intercom/3.png",
        title: "Trial",
        description: "I have to pick a trial. Naturally, I picked to trial the Intercom Suite."
      },
      {
        image: "https://ninjapear-pub.sfo3.cdn.digitaloceanspaces.com/ninjapear_kbs_review_screenshots/intercom/4.png",
        title: "Survey",
        description: "The onboarding journey begins. I am asked to tell them how big my company is. I imagine it is for their sales representatives to discern how high to prioritize my account."
      },
      {
        image: "https://ninjapear-pub.sfo3.cdn.digitaloceanspaces.com/ninjapear_kbs_review_screenshots/intercom/5.png",
        title: "Verify Email",
        description: "I have to verify my email, which I did."
      },
      {
        image: "https://ninjapear-pub.sfo3.cdn.digitaloceanspaces.com/ninjapear_kbs_review_screenshots/intercom/6.png",
        title: "Welcome Dashboard",
        description: "The trial begins and I get access to the whole Intercom Suite. Here I am, landing on their dashboard."
      },
      {
        image: "https://ninjapear-pub.sfo3.cdn.digitaloceanspaces.com/ninjapear_kbs_review_screenshots/intercom/7.png",
        title: "Onboarding Survey",
        description: "Another survey to customise the dashboard. I skipped it, as I wanted to get to the knowledge base."
      },
      {
        image: "https://ninjapear-pub.sfo3.cdn.digitaloceanspaces.com/ninjapear_kbs_review_screenshots/intercom/8.png",
        title: "Shilling Fin AI",
        description: "Intercom really wants to sell their Fin AI. Their AI solution for customer support. But hey, I'm here for the Knowledge Base."
      },
      {
        image: "https://ninjapear-pub.sfo3.cdn.digitaloceanspaces.com/ninjapear_kbs_review_screenshots/intercom/9.png",
        title: "Knowledge Base",
        description: "I clicked on the \"book\" icon and got access to the Knowledge Base dashboard page. Like NinjaPear, the knowledge base is a source of data for Fin AI. I can also import content from Zendesk."
      },
      {
        image: "https://ninjapear-pub.sfo3.cdn.digitaloceanspaces.com/ninjapear_kbs_review_screenshots/intercom/10.png",
        title: "Drafting an Article",
        description: "Drafting an article is like writing a blog post. No Markdown support though."
      },
      {
        image: "https://ninjapear-pub.sfo3.cdn.digitaloceanspaces.com/ninjapear_kbs_review_screenshots/intercom/11.png",
        title: "Making Help Center Live",
        description: "After publishing the article, Intercom reminds me that my knowledge base, or \"Help Center,\" is not live yet."
      },
      {
        image: "https://ninjapear-pub.sfo3.cdn.digitaloceanspaces.com/ninjapear_kbs_review_screenshots/intercom/12.png",
        title: "Live",
        description: "So, I made the Help Center live."
      },
      {
        image: "https://ninjapear-pub.sfo3.cdn.digitaloceanspaces.com/ninjapear_kbs_review_screenshots/intercom/13.png",
        title: "Customization",
        description: "I can tweak the branding of the Help Center. Nothing advanced like CSS tweaks though. Just icons, colors, etc."
      },
      {
        image: "https://ninjapear-pub.sfo3.cdn.digitaloceanspaces.com/ninjapear_kbs_review_screenshots/intercom/14.png",
        title: "Analytics",
        description: "Another cool thing that I think more knowledge base software should support is the ability to drop in your own analytics. Intercom lets me add in a Google Analytics tracking ID."
      },
      {
        image: "https://ninjapear-pub.sfo3.cdn.digitaloceanspaces.com/ninjapear_kbs_review_screenshots/intercom/15.png",
        title: "Pricing",
        description: "Pricing starts at $29/seat/month. If you want private articles, etc., you have to get the $85/seat/month plan, or larger."
      }
    ];
    // ========================================
    // End of configuration
    // ========================================

    // Find the current script's previous sibling (the widget wrapper)
    const currentScript = document.currentScript;
    const widgetWrapper = currentScript.previousElementSibling;

    if (!widgetWrapper || !widgetWrapper.hasAttribute('data-onboarding-widget')) {
      console.error('Onboarding widget wrapper not found');
      return;
    }

    // Get elements within this specific widget instance
    const widget = widgetWrapper.querySelector(".onboarding-widget");
    const indicatorsContainer = widgetWrapper.querySelector(".scroll-indicators");
    const sceneCounter = widgetWrapper.querySelector(".scene-counter");
    const prevButton = widgetWrapper.querySelector(".nav-button-prev");
    const nextButton = widgetWrapper.querySelector(".nav-button-next");
    const openImageButton = widgetWrapper.querySelector(".open-image-button");

    let currentScene = 0;

    // Generate slides from configuration
    function generateSlides() {
      SLIDES_CONFIG.forEach((slide, index) => {
        const sceneDiv = document.createElement("div");
        sceneDiv.className = "onboarding-scene";
        sceneDiv.setAttribute("data-scene", index + 1);

        sceneDiv.innerHTML = `
          <div class="screenshot-container">
            <img src="${slide.image}" alt="${slide.title}" />
            <div class="scene-description">
              <p class="title">${slide.title}</p>
              <p class="description">${slide.description}</p>
            </div>
          </div>
        `;

        widget.appendChild(sceneDiv);
      });
    }

    // Generate scroll indicator dots
    function generateIndicators() {
      SLIDES_CONFIG.forEach((slide, index) => {
        const dot = document.createElement("div");
        dot.className = "scroll-dot";
        dot.setAttribute("data-scene", index);

        dot.addEventListener("click", () => {
          scrollToScene(index);
        });

        indicatorsContainer.appendChild(dot);
      });
    }

    // Initialize the widget
    generateSlides();
    generateIndicators();

    const scenes = widgetWrapper.querySelectorAll(".onboarding-scene");
    const dots = widgetWrapper.querySelectorAll(".scroll-dot");

    // Function to get current image source
    function getCurrentImageSrc() {
      const currentSceneElement = scenes[currentScene];
      const img = currentSceneElement.querySelector("img");
      return img ? img.src : null;
    }

    // Function to update indicators and navigation buttons
    function updateIndicators(index) {
      currentScene = index;

      // Update dots
      dots.forEach((dot, i) => {
        dot.classList.toggle("active", i === index);
      });

      // Update counter
      sceneCounter.textContent = `${index + 1} / ${scenes.length}`;

      // Update navigation buttons
      prevButton.disabled = index === 0;
      nextButton.disabled = index === scenes.length - 1;
    }

    // Function to scroll to a specific scene
    function scrollToScene(index) {
      if (index < 0 || index >= scenes.length) {
        return;
      }

      const targetScene = scenes[index];
      targetScene.scrollIntoView({ behavior: "smooth", block: "start" });
    }

    // Detect which scene is currently in view based on scroll position
    function detectCurrentScene() {
      const scrollTop = widget.scrollTop;
      const sceneHeight = scenes[0].offsetHeight;
      const newScene = Math.round(scrollTop / sceneHeight);

      if (
        newScene !== currentScene &&
        newScene >= 0 &&
        newScene < scenes.length
      ) {
        updateIndicators(newScene);
      }
    }

    // Listen to scroll events to update indicators
    let scrollTimeout;
    widget.addEventListener(
      "scroll",
      () => {
        clearTimeout(scrollTimeout);
        scrollTimeout = setTimeout(() => {
          detectCurrentScene();
        }, 100);
      },
      { passive: true }
    );

    // Navigation button event listeners
    prevButton.addEventListener("click", () => {
      if (currentScene > 0) {
        scrollToScene(currentScene - 1);
      }
    });

    nextButton.addEventListener("click", () => {
      if (currentScene < scenes.length - 1) {
        scrollToScene(currentScene + 1);
      }
    });

    // Open image in new tab
    openImageButton.addEventListener("click", () => {
      const imageSrc = getCurrentImageSrc();
      if (imageSrc) {
        window.open(imageSrc, "_blank");
      }
    });

    // Initialize first scene indicators
    updateIndicators(0);
  })();
</script>

<!--kg-card-end: html-->
<h3 id="intercom-product-questions-answered">Intercom Product Questions, Answered</h3>
<blockquote>
<p>What is the KBS core use-case?</p>
</blockquote>
<p>Intercom's core offerings are primarily served for customer service. So Intercom's KBS is customer-facing and intended to document product knowledge and FAQ for consumption by customers.</p>
<blockquote>
<p>Does it support markdown?</p>
</blockquote>
<p>Unfortunately Intercom's knowledge base editor does not support markdown. It does support some point and click rich text formatting in the style of a Microsoft Word formatting ribbon. But that is all.</p>
<blockquote>
<p>Does it support code snippets formatting?</p>
</blockquote>
<p>Yes, it does, in the form of rich text formatting via UI (like Microsoft Word)</p>
<blockquote>
<p>What is the price?</p>
</blockquote>
<p>Prices start from $39/user/month, and goes up to $132/user/month. These prices <strong>do not</strong> include AI features.</p>
<blockquote>
<p>Is pricing charged per-seat?</p>
</blockquote>
<p>Yes. Intercom charges by seat.</p>
<blockquote>
<p>What is the onboarding like?</p>
</blockquote>
<p>It starts with a standard user registration and onboarding sequence, for which you will land on a dashboard promoting Fin AI, their AI solution. You can then click into the "Knowledge" section of the onboarding, for which you can manage collections of articles if you have any. Intercom's onboarding and knowledge base software is pretty standard and straightforward.</p>
<blockquote>
<p>Does it have AI search?</p>
</blockquote>
<p>Yes, via Fin AI which is chargeable separately.</p>
<blockquote>
<p>Does it have SSO?</p>
</blockquote>
<p>Yes, Intercom supports SSO <strong>if and only if</strong> you're on the highest tier plan which starts from $132/user/month.</p>
<blockquote>
<p>Does it allow the user to customize theming via CSS?</p>
</blockquote>
<p>No, Intercom does not support the use of custom CSS for the advanced theming of its knowledge base software. Instead of direct CSS access, Intercom provides a visual editor with limited customization options to brand your Help Center.</p>
<p><a name="intercom"></a></p>
<h3 id="rating-intercom">Rating Intercom</h3>
<table>
<thead>
<tr>
<th><strong>Feature</strong></th>
<th><strong>Rating</strong></th>
<th><strong>Details</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Pricing</strong></td>
<td>⭐ (1/5)</td>
<td>While Intercom is relatively cheaper than Hubspot, Intercom is still tremendously expensive particularly as you grow beyond a 10-man team to anything larger than 50 employees with SOC2 requirements because then it'll require at least $132/user/month just to get access to SSO. Ultimately, you'd want to have little/no cost concerns of inviting your entire team to a customer service platform. I think Intercom fails in this aspect making you very wary of growing with Intercom; or inviting your entire team to the platform.</td>
</tr>
<tr>
<td><strong>Enterprise Ready</strong></td>
<td>⭐⭐⭐⭐⭐ (5/5)</td>
<td>Yes to SSO and most other Enterprise requirements you might have.</td>
</tr>
<tr>
<td><strong>AI Integration</strong></td>
<td>⭐⭐⭐⭐ (4.5/5)</td>
<td>Intercom is all in on Fin AI, its AI plug-in solution. It does seem like Fin AI is pretty well integrated with the KBS using it as the source for completions.</td>
</tr>
<tr>
<td><strong>Design</strong></td>
<td>⭐⭐⭐⭐ (4.5/5)</td>
<td>My subjective opinion is that Intercom is well-designed and intuitive to use. My only take is that it requires way too many clicks to get started.</td>
</tr>
<tr>
<td><strong>Extensibility</strong></td>
<td>⭐⭐⭐⭐⭐ (5/5)</td>
<td>Intercom has an extensive API support which makes it very extensible.</td>
</tr>
<tr>
<td><strong>Average</strong></td>
<td>⭐⭐⭐⭐ (4/5)</td>
<td>Mature and solid product. Good for mature companies with the budget to spare.</td>
</tr>
</tbody>
</table>
<h2 id="tawkto">Tawk.to</h2>
<table>
<thead>
<tr>
<th><strong>Pricing</strong></th>
<th><strong>Enterprise Ready</strong></th>
<th><strong>AI Integration</strong></th>
<th><strong>Design</strong></th>
<th><strong>Extensibility</strong></th>
<th><strong>Average</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td>⭐⭐⭐⭐⭐ (5/5)</td>
<td>⭐ (1/5)</td>
<td>⭐⭐⭐⭐ (4/5)</td>
<td>⭐⭐⭐⭐ (4/5)</td>
<td>⭐⭐⭐ (3/5)</td>
<td>⭐⭐⭐ (3.4/5)</td>
</tr>
</tbody>
</table>
<p>Tawk.to is the world's most popular live chat service mostly because it is free. It also happens to come with a KBS feature. My first impressions of tawk.to is that it is easy to use, featureful, but somewhat buggy?</p>
<p>After registering for an account in Tawk.to, I proceeded straight to their knowledge base section and attempted to publish an article. It showed that it was published. However, the knowledge base that I was given a link to did not show the knowledge base. On top of that, I was shown a <a href="https://ninjapear.tawk.help/article/hello-world?preview=1&token=eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6Imtub3dsZWRnZS1iYXNlLXNlcnZpY2UtMjAyMDA3MTYifQ.eyJpYXQiOjE3NjAwMDIwMjUsImV4cCI6MTc2MDAwOTIyNSwianRpIjoiQ29tSC1ra1IwV1gzbllJNENkN09KIn0.XxjOdiXUgneBFbnlcABcALNhp8H2ji7ysTPgfPm0JVu_uFk-HVNT_nMP4AgiaWE-IyLC9o5NcqPD4UaM4mnUrg&ref=nubela.co">404 error</a> when I clicked on the preview link within the article editor. You can preview what the knowledge base I created in tawk.to looks like <a href="https://ninjapear.tawk.help/?ref=nubela.co">here</a>.</p>
<p>That said, should the KBS work as expected, Tawk.to's KBS seems like a simple feature with a minimal article/category setup.</p>
<h3 id="tawkto-demo">Tawk.to Demo</h3>

<!--kg-card-begin: html-->
<style>
      * {
        margin: 0;
        padding: 0;
        box-sizing: border-box;
      }

      .onboarding-widget-wrapper {
        position: relative;
        width: 100%;
        height: 600px;
        border-radius: 8px;
        box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
        overflow: hidden;
      }

      .onboarding-widget {
        position: relative;
        width: 100%;
        height: 100%;
        overflow-y: scroll;
        overflow-x: hidden;
        background: #1a1a1a;
        scroll-snap-type: y mandatory;
        scroll-behavior: smooth;
        -webkit-overflow-scrolling: touch;
      }

      .onboarding-scene {
        position: relative;
        width: 100%;
        height: 600px;
        flex-shrink: 0;
        scroll-snap-align: start;
        scroll-snap-stop: always;
      }

      .screenshot-container {
        width: 100%;
        height: 100%;
        display: flex;
        justify-content: center;
        align-items: center;
        background: #1a1a1a;
        position: relative;
      }

      .screenshot-container img {
        width: 100%;
        height: 100%;
        object-fit: contain;
      }

      .scene-description {
        position: absolute;
        bottom: 0;
        left: 0;
        right: 0;
        background: linear-gradient(
          to top,
          rgba(0, 0, 0, 0.85) 0%,
          rgba(0, 0, 0, 0.7) 70%,
          transparent 100%
        );
        backdrop-filter: blur(8px);
        padding: 60px 30px 30px 30px;
        text-align: center;
      }

      .scene-description .title {
        font-size: 1.5rem;
        color: #ffffff;
        margin-bottom: 8px;
        font-weight: 600;
        text-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);
      }

      .scene-description .description {
        font-size: 0.95rem;
        line-height: 1.5;
        color: #e0e0e0;
        max-width: 800px;
        margin: 0 auto;
        text-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);
      }

      /* Scroll Indicators */
      .scroll-indicators {
        position: absolute;
        right: 20px;
        top: 50%;
        transform: translateY(-50%);
        display: flex;
        flex-direction: column;
        gap: 12px;
        z-index: 100;
        pointer-events: none;
      }

      .scroll-indicators .scroll-dot {
        pointer-events: auto;
      }

      .scroll-dot {
        width: 12px;
        height: 12px;
        border-radius: 50%;
        background: #d0d0d0;
        cursor: pointer;
        transition: all 0.3s ease;
        border: 2px solid transparent;
      }

      .scroll-dot:hover {
        background: #a0a0a0;
        transform: scale(1.2);
      }

      .scroll-dot.active {
        background: #4a90e2;
        border-color: #4a90e2;
        box-shadow: 0 0 0 3px rgba(74, 144, 226, 0.2);
      }

      /* Scene Counter and Navigation */
      .scene-navigation {
        position: absolute;
        top: 20px;
        left: 50%;
        transform: translateX(-50%);
        display: flex;
        align-items: center;
        gap: 12px;
        z-index: 100;
      }

      /* Open Image Button */
      .open-image-button {
        position: absolute;
        top: 20px;
        right: 20px;
        width: 40px;
        height: 40px;
        border-radius: 50%;
        background: rgba(255, 255, 255, 0.95);
        color: #333;
        border: 2px solid rgba(255, 255, 255, 0.3);
        cursor: pointer;
        display: flex;
        align-items: center;
        justify-content: center;
        transition: all 0.3s ease;
        backdrop-filter: blur(10px);
        box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3), 0 2px 4px rgba(0, 0, 0, 0.2);
        z-index: 100;
      }

      .open-image-button:hover {
        background: rgba(255, 255, 255, 1);
        transform: scale(1.1);
        box-shadow: 0 6px 16px rgba(0, 0, 0, 0.4), 0 3px 6px rgba(0, 0, 0, 0.3);
      }

      .open-image-button svg {
        width: 20px;
        height: 20px;
        fill: #333;
      }

      .nav-button {
        width: 36px;
        height: 36px;
        border-radius: 50%;
        background: rgba(255, 255, 255, 0.95);
        color: #333;
        border: 2px solid rgba(255, 255, 255, 0.3);
        cursor: pointer;
        display: flex;
        align-items: center;
        justify-content: center;
        transition: all 0.3s ease;
        backdrop-filter: blur(10px);
        box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3), 0 2px 4px rgba(0, 0, 0, 0.2);
      }

      .nav-button:hover:not(:disabled) {
        background: rgba(255, 255, 255, 1);
        transform: scale(1.1);
        box-shadow: 0 6px 16px rgba(0, 0, 0, 0.4), 0 3px 6px rgba(0, 0, 0, 0.3);
      }

      .nav-button:disabled {
        opacity: 0.4;
        cursor: not-allowed;
      }

      .nav-button svg {
        width: 16px;
        height: 16px;
        fill: #333;
      }

      .scene-counter {
        background: rgba(255, 255, 255, 0.95);
        color: #333;
        padding: 8px 16px;
        border-radius: 20px;
        font-size: 0.9rem;
        backdrop-filter: blur(10px);
        pointer-events: none;
        border: 2px solid rgba(255, 255, 255, 0.3);
        box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3), 0 2px 4px rgba(0, 0, 0, 0.2);
        font-weight: 600;
      }

      /* Mobile Responsive */
      @media (max-width: 768px) {
        .scene-description {
          padding: 40px 20px 20px 20px;
        }

        .scene-description .title {
          font-size: 1.2rem;
        }

        .scene-description .description {
          font-size: 0.85rem;
          line-height: 1.4;
        }

        .scroll-indicators {
          right: 10px;
        }

        .scroll-dot {
          width: 10px;
          height: 10px;
        }

        .nav-button {
          width: 32px;
          height: 32px;
        }

        .nav-button svg {
          width: 14px;
          height: 14px;
        }

        .scene-counter {
          font-size: 0.8rem;
          padding: 6px 12px;
        }

        .scene-navigation {
          top: 15px;
          gap: 8px;
        }

        .open-image-button {
          width: 36px;
          height: 36px;
          top: 15px;
          right: 15px;
        }

        .open-image-button svg {
          width: 18px;
          height: 18px;
        }
      }
</style>

<div class="onboarding-widget-wrapper" data-onboarding-widget>
  <div class="onboarding-widget">
    <!-- Scenes will be dynamically generated here -->
  </div>

  <!-- Scroll Indicators -->
  <div class="scroll-indicators"></div>

  <!-- Open Image Button -->
  <button class="open-image-button" aria-label="Open image in new tab">
    <svg viewBox="0 0 24 24">
      <path d="M19 19H5V5h7V3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2v-7h-2v7zM14 3v2h3.59l-9.83 9.83 1.41 1.41L19 6.41V10h2V3h-7z"/>
    </svg>
  </button>

  <!-- Scene Navigation -->
  <div class="scene-navigation">
    <button class="nav-button nav-button-prev" aria-label="Previous slide">
      <svg viewBox="0 0 24 24">
        <path d="M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z"/>
      </svg>
    </button>
    <div class="scene-counter">1 / 1</div>
    <button class="nav-button nav-button-next" aria-label="Next slide">
      <svg viewBox="0 0 24 24">
        <path d="M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"/>
      </svg>
    </button>
  </div>
</div>

<script>
  (function() {
    // ========================================
    // CONFIGURATION - Edit your slides here!
    // ========================================
    const SLIDES_CONFIG = [
      {
        image: "https://ninjapear-pub.sfo3.cdn.digitaloceanspaces.com/ninjapear_kbs_review_screenshots/tawk.to/1.png",
        title: "Tawk.to Landing Page",
        description: "Tawk.to advertises itself as a customer support suite"
      },
      {
        image: "https://ninjapear-pub.sfo3.cdn.digitaloceanspaces.com/ninjapear_kbs_review_screenshots/tawk.to/2.png",
        title: "Product Setup",
        description: "I think because Tawk.to has a lot of products, I was asked to pick a product to set up first. Naturally, I picked the Knowledge Base to set up first."
      },
      {
        image: "https://ninjapear-pub.sfo3.cdn.digitaloceanspaces.com/ninjapear_kbs_review_screenshots/tawk.to/3.png",
        title: "Dashboard",
        description: "I was brought to Tawk.to's dashboard home, which seems to be analytics."
      },
      {
        image: "https://ninjapear-pub.sfo3.cdn.digitaloceanspaces.com/ninjapear_kbs_review_screenshots/tawk.to/4.png",
        title: "Knowledge Base",
        description: "Like most Knowledge Bases, you can create an article or category."
      },
      {
        image: "https://ninjapear-pub.sfo3.cdn.digitaloceanspaces.com/ninjapear_kbs_review_screenshots/tawk.to/5.png",
        title: "Bug",
        description: "I created my first article and published it and clicked on the URL of the knowledge base article, but somehow it was a 404 error page. I couldn't get a published article to work. Take what you want out of my experience."
      },
      {
        image: "https://ninjapear-pub.sfo3.cdn.digitaloceanspaces.com/ninjapear_kbs_review_screenshots/tawk.to/6.png",
        title: "Knowledge Base Administration",
        description: "On this page, I could tweak various settings for the knowledge base such as the subdomain."
      },
      {
        image: "https://ninjapear-pub.sfo3.cdn.digitaloceanspaces.com/ninjapear_kbs_review_screenshots/tawk.to/8.png",
        title: "Custom domain for your Knowledge Base is a Premium Product",
        description: "Not everything on Tawk.to is free. It costs money to create a custom domain. It costs $39/mo."
      },
      {
        image: "https://ninjapear-pub.sfo3.cdn.digitaloceanspaces.com/ninjapear_kbs_review_screenshots/tawk.to/9.png",
        title: "Pricing for Custom Domain",
        description: "It's cheaper at $29/month if you pay annually upfront."
      }
    ];
    // ========================================
    // End of configuration
    // ========================================

    // Find the current script's previous sibling (the widget wrapper)
    const currentScript = document.currentScript;
    const widgetWrapper = currentScript.previousElementSibling;

    if (!widgetWrapper || !widgetWrapper.hasAttribute('data-onboarding-widget')) {
      console.error('Onboarding widget wrapper not found');
      return;
    }

    // Get elements within this specific widget instance
    const widget = widgetWrapper.querySelector(".onboarding-widget");
    const indicatorsContainer = widgetWrapper.querySelector(".scroll-indicators");
    const sceneCounter = widgetWrapper.querySelector(".scene-counter");
    const prevButton = widgetWrapper.querySelector(".nav-button-prev");
    const nextButton = widgetWrapper.querySelector(".nav-button-next");
    const openImageButton = widgetWrapper.querySelector(".open-image-button");

    let currentScene = 0;

    // Generate slides from configuration
    function generateSlides() {
      SLIDES_CONFIG.forEach((slide, index) => {
        const sceneDiv = document.createElement("div");
        sceneDiv.className = "onboarding-scene";
        sceneDiv.setAttribute("data-scene", index + 1);

        sceneDiv.innerHTML = `
          <div class="screenshot-container">
            <img src="${slide.image}" alt="${slide.title}" />
            <div class="scene-description">
              <p class="title">${slide.title}</p>
              <p class="description">${slide.description}</p>
            </div>
          </div>
        `;

        widget.appendChild(sceneDiv);
      });
    }

    // Generate scroll indicator dots
    function generateIndicators() {
      SLIDES_CONFIG.forEach((slide, index) => {
        const dot = document.createElement("div");
        dot.className = "scroll-dot";
        dot.setAttribute("data-scene", index);

        dot.addEventListener("click", () => {
          scrollToScene(index);
        });

        indicatorsContainer.appendChild(dot);
      });
    }

    // Initialize the widget
    generateSlides();
    generateIndicators();

    const scenes = widgetWrapper.querySelectorAll(".onboarding-scene");
    const dots = widgetWrapper.querySelectorAll(".scroll-dot");

    // Function to get current image source
    function getCurrentImageSrc() {
      const currentSceneElement = scenes[currentScene];
      const img = currentSceneElement.querySelector("img");
      return img ? img.src : null;
    }

    // Function to update indicators and navigation buttons
    function updateIndicators(index) {
      currentScene = index;

      // Update dots
      dots.forEach((dot, i) => {
        dot.classList.toggle("active", i === index);
      });

      // Update counter
      sceneCounter.textContent = `${index + 1} / ${scenes.length}`;

      // Update navigation buttons
      prevButton.disabled = index === 0;
      nextButton.disabled = index === scenes.length - 1;
    }

    // Function to scroll to a specific scene
    function scrollToScene(index) {
      if (index < 0 || index >= scenes.length) {
        return;
      }

      const targetScene = scenes[index];
      targetScene.scrollIntoView({ behavior: "smooth", block: "start" });
    }

    // Detect which scene is currently in view based on scroll position
    function detectCurrentScene() {
      const scrollTop = widget.scrollTop;
      const sceneHeight = scenes[0].offsetHeight;
      const newScene = Math.round(scrollTop / sceneHeight);

      if (
        newScene !== currentScene &&
        newScene >= 0 &&
        newScene < scenes.length
      ) {
        updateIndicators(newScene);
      }
    }

    // Listen to scroll events to update indicators
    let scrollTimeout;
    widget.addEventListener(
      "scroll",
      () => {
        clearTimeout(scrollTimeout);
        scrollTimeout = setTimeout(() => {
          detectCurrentScene();
        }, 100);
      },
      { passive: true }
    );

    // Navigation button event listeners
    prevButton.addEventListener("click", () => {
      if (currentScene > 0) {
        scrollToScene(currentScene - 1);
      }
    });

    nextButton.addEventListener("click", () => {
      if (currentScene < scenes.length - 1) {
        scrollToScene(currentScene + 1);
      }
    });

    // Open image in new tab
    openImageButton.addEventListener("click", () => {
      const imageSrc = getCurrentImageSrc();
      if (imageSrc) {
        window.open(imageSrc, "_blank");
      }
    });

    // Initialize first scene indicators
    updateIndicators(0);
  })();
</script>

<!--kg-card-end: html-->
<h3 id="tawkto-product-questions-answered">Tawk.to Product Questions, Answered</h3>
<blockquote>
<p>What is the KBS core use-case?</p>
</blockquote>
<p>Like Intercom, Tawk.to's core offering is on providing customer service software, for which its KBS is intended to be customer-facing for documenting product knowledge, etc.</p>
<blockquote>
<p>Does it support markdown?</p>
</blockquote>
<p>No, tawk.to's knowledge base article editor does not support Markdown. Instead, it uses a block-based rich-text editor for creating articles</p>
<blockquote>
<p>Does it support code snippets formatting?</p>
</blockquote>
<p>Yes, it does, in the form of rich text formatting via UI (like Microsoft Word)</p>
<blockquote>
<p>What is the price?</p>
</blockquote>
<p>Tawk.to is free for use but you retain Tawk.to's branding and marketing. You also do have to pay $39/mo if you'd like to use a custom domain for the KBS. AI features are charged separately.</p>
<blockquote>
<p>Is pricing charged per-seat?</p>
</blockquote>
<p>No.</p>
<blockquote>
<p>What is the onboarding like?</p>
</blockquote>
<p>Onboarding for tawk.to is straightforward. I registered an account, and I was asked which product I wanted to set up first. I chose the Knowledge Base product. I was asked to pick a custom subdomain, then poof I was in the Knowledge Base's dashboard. Thereafter, I could create a category or an article. Straightforward.</p>
<blockquote>
<p>Does it have AI search?</p>
</blockquote>
<p>While Tawk.to has an AI feature known as Apollo AI, it does not seem to support AI searches of the knowledge base. At least based on the public documentation that I have read so far.</p>
<blockquote>
<p>Does it have SSO?</p>
</blockquote>
<p>No, tawk.to does not support SSO. Tawk.to is not enterprise-ready.</p>
<blockquote>
<p>Does it allow the user to customize theming via CSS?</p>
</blockquote>
<p>Unfortunately, tawk.to does not allow the user to theme their knowledge base with custom CSS. What they support is for you to upload a favicon and logo, set primary colors and fonts and customize the layout of the knowledge base.</p>
<h3 id="rating-tawkto">Rating Tawk.to</h3>
<table>
<thead>
<tr>
<th><strong>Feature</strong></th>
<th><strong>Rating</strong></th>
<th><strong>Details</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Pricing</strong></td>
<td>⭐⭐⭐⭐⭐ (5/5)</td>
<td>Nothing beats free and tawk.to is free. Custom domains and AI features are chargeable though, and they are fairly priced.</td>
</tr>
<tr>
<td><strong>Enterprise Ready</strong></td>
<td>⭐ (1/5)</td>
<td>Tawk.to is buggy, and it lacks SSO.</td>
</tr>
<tr>
<td><strong>AI Integration</strong></td>
<td>⭐⭐⭐⭐ (4/5)</td>
<td>Tawk.to's Apollo AI is very much focused on the live chat features instead of the knowledge base. The knowledge base might or might not be a source of knowledge for the live chat's AI suggestions/replies. That said, it does seem to be well thought out. But it is a new feature. You should test this out yourself and see if it is good enough for you.</td>
</tr>
<tr>
<td><strong>Design</strong></td>
<td>⭐⭐⭐⭐ (4/5)</td>
<td>Simple and easy to use UI. No negative comments here. It just needs to be less buggy.</td>
</tr>
<tr>
<td><strong>Extensibility</strong></td>
<td>⭐⭐⭐ (3/5)</td>
<td>Tawk.to's API is half-baked. It offers a webhook API for notification purposes, including various Zapier/Make integrations. What it does not feature is an API to extend the knowledge base software.</td>
</tr>
<tr>
<td><strong>Average</strong></td>
<td>⭐⭐⭐⭐ (3.4/5)</td>
<td>Tawk.to is a great product for small businesses and startups. But you probably have to switch to another provider as you grow because it lacks Enterprise-y features for a growing/big company even if you can pay for it, such as SSO.</td>
</tr>
</tbody>
</table>
<h2 id="guru">Guru</h2>
<table>
<thead>
<tr>
<th><strong>Pricing</strong></th>
<th><strong>Enterprise Ready</strong></th>
<th><strong>AI Integration</strong></th>
<th><strong>Design</strong></th>
<th><strong>Extensibility</strong></th>
<th><strong>Average</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td>⭐⭐ (2.5/5)</td>
<td>⭐⭐⭐⭐ (4.5/5)</td>
<td>⭐⭐⭐⭐ (4/5)</td>
<td>⭐⭐ (2/5)</td>
<td>⭐⭐⭐ (5/5)</td>
<td>⭐⭐⭐ (3.4/5)</td>
</tr>
</tbody>
</table>
<p>Guru looks like a wiki, acts like a wiki, and behaves like a wiki for non-tech savvy people. In my opinion, Guru is a glorified wiki with integrations and a pretty UI. It brands itself as the single source of truth of internal business knowledge. And I can imagine that to be true, if you are not very tech-savvy.</p>
<p>However, as a serial entrepreneur, I'm not sure it is smart to place secrets, internal discussions, and anything proprietary into a 3rd-party platform which might hold you hostage unless you cough up more money. Like what Slack, Gitlab, or Google Workspace has done to us before. That said, I'd say Guru is a pretty slick wiki product.</p>
<h3 id="guru-demo">Guru Demo</h3>

<!--kg-card-begin: html-->
<style>
      * {
        margin: 0;
        padding: 0;
        box-sizing: border-box;
      }

      .onboarding-widget-wrapper {
        position: relative;
        width: 100%;
        height: 600px;
        border-radius: 8px;
        box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
        overflow: hidden;
      }

      .onboarding-widget {
        position: relative;
        width: 100%;
        height: 100%;
        overflow-y: scroll;
        overflow-x: hidden;
        background: #1a1a1a;
        scroll-snap-type: y mandatory;
        scroll-behavior: smooth;
        -webkit-overflow-scrolling: touch;
      }

      .onboarding-scene {
        position: relative;
        width: 100%;
        height: 600px;
        flex-shrink: 0;
        scroll-snap-align: start;
        scroll-snap-stop: always;
      }

      .screenshot-container {
        width: 100%;
        height: 100%;
        display: flex;
        justify-content: center;
        align-items: center;
        background: #1a1a1a;
        position: relative;
      }

      .screenshot-container img {
        width: 100%;
        height: 100%;
        object-fit: contain;
      }

      .scene-description {
        position: absolute;
        bottom: 0;
        left: 0;
        right: 0;
        background: linear-gradient(
          to top,
          rgba(0, 0, 0, 0.85) 0%,
          rgba(0, 0, 0, 0.7) 70%,
          transparent 100%
        );
        backdrop-filter: blur(8px);
        padding: 60px 30px 30px 30px;
        text-align: center;
      }

      .scene-description .title {
        font-size: 1.5rem;
        color: #ffffff;
        margin-bottom: 8px;
        font-weight: 600;
        text-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);
      }

      .scene-description .description {
        font-size: 0.95rem;
        line-height: 1.5;
        color: #e0e0e0;
        max-width: 800px;
        margin: 0 auto;
        text-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);
      }

      /* Scroll Indicators */
      .scroll-indicators {
        position: absolute;
        right: 20px;
        top: 50%;
        transform: translateY(-50%);
        display: flex;
        flex-direction: column;
        gap: 12px;
        z-index: 100;
        pointer-events: none;
      }

      .scroll-indicators .scroll-dot {
        pointer-events: auto;
      }

      .scroll-dot {
        width: 12px;
        height: 12px;
        border-radius: 50%;
        background: #d0d0d0;
        cursor: pointer;
        transition: all 0.3s ease;
        border: 2px solid transparent;
      }

      .scroll-dot:hover {
        background: #a0a0a0;
        transform: scale(1.2);
      }

      .scroll-dot.active {
        background: #4a90e2;
        border-color: #4a90e2;
        box-shadow: 0 0 0 3px rgba(74, 144, 226, 0.2);
      }

      /* Scene Counter and Navigation */
      .scene-navigation {
        position: absolute;
        top: 20px;
        left: 50%;
        transform: translateX(-50%);
        display: flex;
        align-items: center;
        gap: 12px;
        z-index: 100;
      }

      /* Open Image Button */
      .open-image-button {
        position: absolute;
        top: 20px;
        right: 20px;
        width: 40px;
        height: 40px;
        border-radius: 50%;
        background: rgba(255, 255, 255, 0.95);
        color: #333;
        border: 2px solid rgba(255, 255, 255, 0.3);
        cursor: pointer;
        display: flex;
        align-items: center;
        justify-content: center;
        transition: all 0.3s ease;
        backdrop-filter: blur(10px);
        box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3), 0 2px 4px rgba(0, 0, 0, 0.2);
        z-index: 100;
      }

      .open-image-button:hover {
        background: rgba(255, 255, 255, 1);
        transform: scale(1.1);
        box-shadow: 0 6px 16px rgba(0, 0, 0, 0.4), 0 3px 6px rgba(0, 0, 0, 0.3);
      }

      .open-image-button svg {
        width: 20px;
        height: 20px;
        fill: #333;
      }

      .nav-button {
        width: 36px;
        height: 36px;
        border-radius: 50%;
        background: rgba(255, 255, 255, 0.95);
        color: #333;
        border: 2px solid rgba(255, 255, 255, 0.3);
        cursor: pointer;
        display: flex;
        align-items: center;
        justify-content: center;
        transition: all 0.3s ease;
        backdrop-filter: blur(10px);
        box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3), 0 2px 4px rgba(0, 0, 0, 0.2);
      }

      .nav-button:hover:not(:disabled) {
        background: rgba(255, 255, 255, 1);
        transform: scale(1.1);
        box-shadow: 0 6px 16px rgba(0, 0, 0, 0.4), 0 3px 6px rgba(0, 0, 0, 0.3);
      }

      .nav-button:disabled {
        opacity: 0.4;
        cursor: not-allowed;
      }

      .nav-button svg {
        width: 16px;
        height: 16px;
        fill: #333;
      }

      .scene-counter {
        background: rgba(255, 255, 255, 0.95);
        color: #333;
        padding: 8px 16px;
        border-radius: 20px;
        font-size: 0.9rem;
        backdrop-filter: blur(10px);
        pointer-events: none;
        border: 2px solid rgba(255, 255, 255, 0.3);
        box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3), 0 2px 4px rgba(0, 0, 0, 0.2);
        font-weight: 600;
      }

      /* Mobile Responsive */
      @media (max-width: 768px) {
        .scene-description {
          padding: 40px 20px 20px 20px;
        }

        .scene-description .title {
          font-size: 1.2rem;
        }

        .scene-description .description {
          font-size: 0.85rem;
          line-height: 1.4;
        }

        .scroll-indicators {
          right: 10px;
        }

        .scroll-dot {
          width: 10px;
          height: 10px;
        }

        .nav-button {
          width: 32px;
          height: 32px;
        }

        .nav-button svg {
          width: 14px;
          height: 14px;
        }

        .scene-counter {
          font-size: 0.8rem;
          padding: 6px 12px;
        }

        .scene-navigation {
          top: 15px;
          gap: 8px;
        }

        .open-image-button {
          width: 36px;
          height: 36px;
          top: 15px;
          right: 15px;
        }

        .open-image-button svg {
          width: 18px;
          height: 18px;
        }
      }
</style>

<div class="onboarding-widget-wrapper" data-onboarding-widget>
  <div class="onboarding-widget">
    <!-- Scenes will be dynamically generated here -->
  </div>

  <!-- Scroll Indicators -->
  <div class="scroll-indicators"></div>

  <!-- Open Image Button -->
  <button class="open-image-button" aria-label="Open image in new tab">
    <svg viewBox="0 0 24 24">
      <path d="M19 19H5V5h7V3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2v-7h-2v7zM14 3v2h3.59l-9.83 9.83 1.41 1.41L19 6.41V10h2V3h-7z"/>
    </svg>
  </button>

  <!-- Scene Navigation -->
  <div class="scene-navigation">
    <button class="nav-button nav-button-prev" aria-label="Previous slide">
      <svg viewBox="0 0 24 24">
        <path d="M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z"/>
      </svg>
    </button>
    <div class="scene-counter">1 / 1</div>
    <button class="nav-button nav-button-next" aria-label="Next slide">
      <svg viewBox="0 0 24 24">
        <path d="M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"/>
      </svg>
    </button>
  </div>
</div>

<script>
  (function() {
    // ========================================
    // CONFIGURATION - Edit your slides here!
    // ========================================
    const SLIDES_CONFIG = [
      {
        image: "https://ninjapear-pub.sfo3.cdn.digitaloceanspaces.com/ninjapear_kbs_review_screenshots/guru/1.png",
        title: "Guru's Landing Page",
        description: "Guru says it is an AI source of truth. Yet another company that has leaned into AI in the post-ChatGPT world."
      },
      {
        image: "https://ninjapear-pub.sfo3.cdn.digitaloceanspaces.com/ninjapear_kbs_review_screenshots/guru/2.png",
        title: "User Registration",
        description: "I registered an account."
      },
      {
        image: "https://ninjapear-pub.sfo3.cdn.digitaloceanspaces.com/ninjapear_kbs_review_screenshots/guru/3.png",
        title: "Email Verification",
        description: "Then I was asked to verify my email."
      },
      {
        image: "https://ninjapear-pub.sfo3.cdn.digitaloceanspaces.com/ninjapear_kbs_review_screenshots/guru/4.png",
        title: "Workspaces",
        description: "What I did not understand is that I was asked to switch workspaces. I mean, obviously I have none. Why couldn't it create one for me? Anyways, I created one and was brought to the dashboard."
      },
      {
        image: "https://ninjapear-pub.sfo3.cdn.digitaloceanspaces.com/ninjapear_kbs_review_screenshots/guru/5.png",
        title: "Dashboard",
        description: "This is what Guru's dashboard looks like."
      },
      {
        image: "https://ninjapear-pub.sfo3.cdn.digitaloceanspaces.com/ninjapear_kbs_review_screenshots/guru/6.png",
        title: "Create New Page",
        description: "I created a new page named \"Testing\" and published it."
      },
      {
        image: "https://ninjapear-pub.sfo3.cdn.digitaloceanspaces.com/ninjapear_kbs_review_screenshots/guru/7.png",
        title: "Knowledge Base Article UI",
        description: "This is what a published Guru article looks like."
      },
      {
        image: "https://ninjapear-pub.sfo3.cdn.digitaloceanspaces.com/ninjapear_kbs_review_screenshots/guru/8.png",
        title: "Knowledge Base Article UI P2",
        description: "I scrolled it down and this is how it looks."
      },
      {
        image: "https://ninjapear-pub.sfo3.cdn.digitaloceanspaces.com/ninjapear_kbs_review_screenshots/guru/9.png",
        title: "Billing",
        description: "As you can see, it is NOT cheap. $3000/year. My god."
      },
      {
        image: "https://ninjapear-pub.sfo3.cdn.digitaloceanspaces.com/ninjapear_kbs_review_screenshots/guru/10.png",
        title: "Integrations",
        description: "One of the angles that Guru sells hard is its integrations. You can see that it has a bunch of integrations."
      },
      {
        image: "https://ninjapear-pub.sfo3.cdn.digitaloceanspaces.com/ninjapear_kbs_review_screenshots/guru/11.png",
        title: "Integrations P2",
        description: "More Integrations!"
      }
    ];
    // ========================================
    // End of configuration
    // ========================================

    // Find the current script's previous sibling (the widget wrapper)
    const currentScript = document.currentScript;
    const widgetWrapper = currentScript.previousElementSibling;

    if (!widgetWrapper || !widgetWrapper.hasAttribute('data-onboarding-widget')) {
      console.error('Onboarding widget wrapper not found');
      return;
    }

    // Get elements within this specific widget instance
    const widget = widgetWrapper.querySelector(".onboarding-widget");
    const indicatorsContainer = widgetWrapper.querySelector(".scroll-indicators");
    const sceneCounter = widgetWrapper.querySelector(".scene-counter");
    const prevButton = widgetWrapper.querySelector(".nav-button-prev");
    const nextButton = widgetWrapper.querySelector(".nav-button-next");
    const openImageButton = widgetWrapper.querySelector(".open-image-button");

    let currentScene = 0;

    // Generate slides from configuration
    function generateSlides() {
      SLIDES_CONFIG.forEach((slide, index) => {
        const sceneDiv = document.createElement("div");
        sceneDiv.className = "onboarding-scene";
        sceneDiv.setAttribute("data-scene", index + 1);

        sceneDiv.innerHTML = `
          <div class="screenshot-container">
            <img src="${slide.image}" alt="${slide.title}" />
            <div class="scene-description">
              <p class="title">${slide.title}</p>
              <p class="description">${slide.description}</p>
            </div>
          </div>
        `;

        widget.appendChild(sceneDiv);
      });
    }

    // Generate scroll indicator dots
    function generateIndicators() {
      SLIDES_CONFIG.forEach((slide, index) => {
        const dot = document.createElement("div");
        dot.className = "scroll-dot";
        dot.setAttribute("data-scene", index);

        dot.addEventListener("click", () => {
          scrollToScene(index);
        });

        indicatorsContainer.appendChild(dot);
      });
    }

    // Initialize the widget
    generateSlides();
    generateIndicators();

    const scenes = widgetWrapper.querySelectorAll(".onboarding-scene");
    const dots = widgetWrapper.querySelectorAll(".scroll-dot");

    // Function to get current image source
    function getCurrentImageSrc() {
      const currentSceneElement = scenes[currentScene];
      const img = currentSceneElement.querySelector("img");
      return img ? img.src : null;
    }

    // Function to update indicators and navigation buttons
    function updateIndicators(index) {
      currentScene = index;

      // Update dots
      dots.forEach((dot, i) => {
        dot.classList.toggle("active", i === index);
      });

      // Update counter
      sceneCounter.textContent = `${index + 1} / ${scenes.length}`;

      // Update navigation buttons
      prevButton.disabled = index === 0;
      nextButton.disabled = index === scenes.length - 1;
    }

    // Function to scroll to a specific scene
    function scrollToScene(index) {
      if (index < 0 || index >= scenes.length) {
        return;
      }

      const targetScene = scenes[index];
      targetScene.scrollIntoView({ behavior: "smooth", block: "start" });
    }

    // Detect which scene is currently in view based on scroll position
    function detectCurrentScene() {
      const scrollTop = widget.scrollTop;
      const sceneHeight = scenes[0].offsetHeight;
      const newScene = Math.round(scrollTop / sceneHeight);

      if (
        newScene !== currentScene &&
        newScene >= 0 &&
        newScene < scenes.length
      ) {
        updateIndicators(newScene);
      }
    }

    // Listen to scroll events to update indicators
    let scrollTimeout;
    widget.addEventListener(
      "scroll",
      () => {
        clearTimeout(scrollTimeout);
        scrollTimeout = setTimeout(() => {
          detectCurrentScene();
        }, 100);
      },
      { passive: true }
    );

    // Navigation button event listeners
    prevButton.addEventListener("click", () => {
      if (currentScene > 0) {
        scrollToScene(currentScene - 1);
      }
    });

    nextButton.addEventListener("click", () => {
      if (currentScene < scenes.length - 1) {
        scrollToScene(currentScene + 1);
      }
    });

    // Open image in new tab
    openImageButton.addEventListener("click", () => {
      const imageSrc = getCurrentImageSrc();
      if (imageSrc) {
        window.open(imageSrc, "_blank");
      }
    });

    // Initialize first scene indicators
    updateIndicators(0);
  })();
</script>

<!--kg-card-end: html-->
<h3 id="guru-product-questions-answered">Guru Product Questions, Answered</h3>
<blockquote>
<p>What is the KBS core use-case?</p>
</blockquote>
<p>Unlike most other KBs mentioned above which are largely customer-oriented, Guru sits comfortably in the category of being a KBS that serves to document <strong>business knowledge</strong> for <strong>internal use</strong>. Especially since it brands itself as the <em>AI source of truth</em>.</p>
<blockquote>
<p>Does it support markdown?</p>
</blockquote>
<p>50/50. Guru does support markdown editing within content blocks of a page editor. The editor for content is similar to a WYSIWYG page editor. Personally, I abhor such editors. Content should just be Markdown documents or rich text, and nothing more.</p>
<blockquote>
<p>Does it support code snippets formatting?</p>
</blockquote>
<p>Yes, but in a WYSIWYG manner.</p>
<blockquote>
<p>What is the price?</p>
</blockquote>
<p>$25/seat/month.</p>
<blockquote>
<p>Is pricing charged per-seat?</p>
</blockquote>
<p>Yes.</p>
<blockquote>
<p>What is the onboarding like?</p>
</blockquote>
<p>You register an account, and then you're brought to a Slack-like interface for which instead of chats, you get webpages with content; for which you can post/edit/delete pages.</p>
<blockquote>
<p>Does it have AI search?</p>
</blockquote>
<p>Yes.</p>
<blockquote>
<p>Does it have SSO?</p>
</blockquote>
<p>Yes, Guru supports SSO. It uses SAML 2.0 standard for SSO connections.</p>
<blockquote>
<p>Does it allow for the user to customize theming via CSS?</p>
</blockquote>
<p>No, getguru.com does not support theming via custom CSS. Instead, it offers more limited, built-in branding options controlled by an administrator through the Workspace Preferences settings</p>
<h3 id="rating-guru">Rating Guru</h3>
<table>
<thead>
<tr>
<th><strong>Feature</strong></th>
<th><strong>Rating</strong></th>
<th><strong>Details</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Pricing</strong></td>
<td>⭐⭐ (2.5/5)</td>
<td>I am going to be honest. I don't like seat-based charging but I understand why SaaS do that. It's a fair way to charge more to companies that are bigger and likely to be able to afford it. Guru's offering is simple. An internal wiki with integrations and AI, but I'm not sure it is worth $25/seat/month.</td>
</tr>
<tr>
<td><strong>Enterprise Ready</strong></td>
<td>⭐⭐⭐⭐ (4/5)</td>
<td>I'm honestly not very sure what Guru is trying to offer. It brands itself to be an Enterprise-ready wiki for internal users, so it is obviously targeted towards larger companies. However, I cannot imagine a larger company trusting its proprietary knowledge to sit on a 3rd-party platform. That said, it does support Enterprise features.</td>
</tr>
<tr>
<td><strong>AI Integration</strong></td>
<td>⭐⭐⭐⭐ (4/5)</td>
<td>AI is well integrated into Guru. What sets it apart is a form of AI-based search known as RAG (retrieval-augmented generation) for the knowledge base; which seems to serve the internal users instead of customers.</td>
</tr>
<tr>
<td><strong>Design</strong></td>
<td>⭐⭐ (2/5)</td>
<td>This is subjective, but I find the general design all great, until it comes to the WYSIWYG editing of the page content, which is both obtrusive and hard to use. I feel like it is complexity for the sake of complexity.</td>
</tr>
<tr>
<td><strong>Extensibility</strong></td>
<td>⭐⭐⭐⭐⭐ (5/5)</td>
<td>Guru has a comprehensive REST API that allows developers to programmatically access and manage a team's knowledge. It is a key part of Guru's Developer Network, which also offers webhooks and a Python SDK for building integrations and automating workflows.</td>
</tr>
<tr>
<td><strong>Average</strong></td>
<td>⭐⭐⭐⭐ (3.4/5)</td>
<td>I am going to be honest. I'd not recommend using Guru for storing your company's internal wiki for two reasons:<br>1. You should not grow with your proprietary knowledge stuck in another platform.<br>2. You should not be paying $25/employee/month. No wiki is worth that much.<br><br>Self-host something simple instead.</td>
</tr>
</tbody>
</table>
<h2 id="slite">Slite</h2>
<table>
<thead>
<tr>
<th><strong>Pricing</strong></th>
<th><strong>Enterprise Ready</strong></th>
<th><strong>AI Integration</strong></th>
<th><strong>Design</strong></th>
<th><strong>Extensibility</strong></th>
<th><strong>Average</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td>⭐⭐ (2.5/5)</td>
<td>⭐⭐⭐⭐ (4.5/5)</td>
<td>⭐⭐⭐⭐ (4/5)</td>
<td>⭐⭐ (2/5)</td>
<td>⭐⭐⭐ (5/5)</td>
<td>⭐⭐⭐ (3.4/5)</td>
</tr>
</tbody>
</table>
<p>Slite is a business wiki for internal use. It is a lot like Guru, except that it gets content editing right -- It offers a Markdown-first experience with optional UI rich-text editing. On top of that, the AI integration is done better than Guru. With a tagline that says "Where knowledge <s>goes to die</s> thrives", it is selling its AI (RAG) search for which I believe is modern search done right.</p>
<h3 id="slite-demo">Slite Demo</h3>

<!--kg-card-begin: html-->
<style>
      * {
        margin: 0;
        padding: 0;
        box-sizing: border-box;
      }

      .onboarding-widget-wrapper {
        position: relative;
        width: 100%;
        height: 600px;
        border-radius: 8px;
        box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
        overflow: hidden;
      }

      .onboarding-widget {
        position: relative;
        width: 100%;
        height: 100%;
        overflow-y: scroll;
        overflow-x: hidden;
        background: #1a1a1a;
        scroll-snap-type: y mandatory;
        scroll-behavior: smooth;
        -webkit-overflow-scrolling: touch;
      }

      .onboarding-scene {
        position: relative;
        width: 100%;
        height: 600px;
        flex-shrink: 0;
        scroll-snap-align: start;
        scroll-snap-stop: always;
      }

      .screenshot-container {
        width: 100%;
        height: 100%;
        display: flex;
        justify-content: center;
        align-items: center;
        background: #1a1a1a;
        position: relative;
      }

      .screenshot-container img {
        width: 100%;
        height: 100%;
        object-fit: contain;
      }

      .scene-description {
        position: absolute;
        bottom: 0;
        left: 0;
        right: 0;
        background: linear-gradient(
          to top,
          rgba(0, 0, 0, 0.85) 0%,
          rgba(0, 0, 0, 0.7) 70%,
          transparent 100%
        );
        backdrop-filter: blur(8px);
        padding: 60px 30px 30px 30px;
        text-align: center;
      }

      .scene-description .title {
        font-size: 1.5rem;
        color: #ffffff;
        margin-bottom: 8px;
        font-weight: 600;
        text-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);
      }

      .scene-description .description {
        font-size: 0.95rem;
        line-height: 1.5;
        color: #e0e0e0;
        max-width: 800px;
        margin: 0 auto;
        text-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);
      }

      /* Scroll Indicators */
      .scroll-indicators {
        position: absolute;
        right: 20px;
        top: 50%;
        transform: translateY(-50%);
        display: flex;
        flex-direction: column;
        gap: 12px;
        z-index: 100;
        pointer-events: none;
      }

      .scroll-indicators .scroll-dot {
        pointer-events: auto;
      }

      .scroll-dot {
        width: 12px;
        height: 12px;
        border-radius: 50%;
        background: #d0d0d0;
        cursor: pointer;
        transition: all 0.3s ease;
        border: 2px solid transparent;
      }

      .scroll-dot:hover {
        background: #a0a0a0;
        transform: scale(1.2);
      }

      .scroll-dot.active {
        background: #4a90e2;
        border-color: #4a90e2;
        box-shadow: 0 0 0 3px rgba(74, 144, 226, 0.2);
      }

      /* Scene Counter and Navigation */
      .scene-navigation {
        position: absolute;
        top: 20px;
        left: 50%;
        transform: translateX(-50%);
        display: flex;
        align-items: center;
        gap: 12px;
        z-index: 100;
      }

      /* Open Image Button */
      .open-image-button {
        position: absolute;
        top: 20px;
        right: 20px;
        width: 40px;
        height: 40px;
        border-radius: 50%;
        background: rgba(255, 255, 255, 0.95);
        color: #333;
        border: 2px solid rgba(255, 255, 255, 0.3);
        cursor: pointer;
        display: flex;
        align-items: center;
        justify-content: center;
        transition: all 0.3s ease;
        backdrop-filter: blur(10px);
        box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3), 0 2px 4px rgba(0, 0, 0, 0.2);
        z-index: 100;
      }

      .open-image-button:hover {
        background: rgba(255, 255, 255, 1);
        transform: scale(1.1);
        box-shadow: 0 6px 16px rgba(0, 0, 0, 0.4), 0 3px 6px rgba(0, 0, 0, 0.3);
      }

      .open-image-button svg {
        width: 20px;
        height: 20px;
        fill: #333;
      }

      .nav-button {
        width: 36px;
        height: 36px;
        border-radius: 50%;
        background: rgba(255, 255, 255, 0.95);
        color: #333;
        border: 2px solid rgba(255, 255, 255, 0.3);
        cursor: pointer;
        display: flex;
        align-items: center;
        justify-content: center;
        transition: all 0.3s ease;
        backdrop-filter: blur(10px);
        box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3), 0 2px 4px rgba(0, 0, 0, 0.2);
      }

      .nav-button:hover:not(:disabled) {
        background: rgba(255, 255, 255, 1);
        transform: scale(1.1);
        box-shadow: 0 6px 16px rgba(0, 0, 0, 0.4), 0 3px 6px rgba(0, 0, 0, 0.3);
      }

      .nav-button:disabled {
        opacity: 0.4;
        cursor: not-allowed;
      }

      .nav-button svg {
        width: 16px;
        height: 16px;
        fill: #333;
      }

      .scene-counter {
        background: rgba(255, 255, 255, 0.95);
        color: #333;
        padding: 8px 16px;
        border-radius: 20px;
        font-size: 0.9rem;
        backdrop-filter: blur(10px);
        pointer-events: none;
        border: 2px solid rgba(255, 255, 255, 0.3);
        box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3), 0 2px 4px rgba(0, 0, 0, 0.2);
        font-weight: 600;
      }

      /* Mobile Responsive */
      @media (max-width: 768px) {
        .scene-description {
          padding: 40px 20px 20px 20px;
        }

        .scene-description .title {
          font-size: 1.2rem;
        }

        .scene-description .description {
          font-size: 0.85rem;
          line-height: 1.4;
        }

        .scroll-indicators {
          right: 10px;
        }

        .scroll-dot {
          width: 10px;
          height: 10px;
        }

        .nav-button {
          width: 32px;
          height: 32px;
        }

        .nav-button svg {
          width: 14px;
          height: 14px;
        }

        .scene-counter {
          font-size: 0.8rem;
          padding: 6px 12px;
        }

        .scene-navigation {
          top: 15px;
          gap: 8px;
        }

        .open-image-button {
          width: 36px;
          height: 36px;
          top: 15px;
          right: 15px;
        }

        .open-image-button svg {
          width: 18px;
          height: 18px;
        }
      }
</style>

<div class="onboarding-widget-wrapper" data-onboarding-widget>
  <div class="onboarding-widget">
    <!-- Scenes will be dynamically generated here -->
  </div>

  <!-- Scroll Indicators -->
  <div class="scroll-indicators"></div>

  <!-- Open Image Button -->
  <button class="open-image-button" aria-label="Open image in new tab">
    <svg viewBox="0 0 24 24">
      <path d="M19 19H5V5h7V3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2v-7h-2v7zM14 3v2h3.59l-9.83 9.83 1.41 1.41L19 6.41V10h2V3h-7z"/>
    </svg>
  </button>

  <!-- Scene Navigation -->
  <div class="scene-navigation">
    <button class="nav-button nav-button-prev" aria-label="Previous slide">
      <svg viewBox="0 0 24 24">
        <path d="M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z"/>
      </svg>
    </button>
    <div class="scene-counter">1 / 1</div>
    <button class="nav-button nav-button-next" aria-label="Next slide">
      <svg viewBox="0 0 24 24">
        <path d="M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"/>
      </svg>
    </button>
  </div>
</div>

<script>
  (function() {
    // ========================================
    // CONFIGURATION - Edit your slides here!
    // ========================================
    const SLITES_IMAGE_BASE = "https://ninjapear-pub.sfo3.cdn.digitaloceanspaces.com/ninjapear_kbs_review_screenshots/slite/";
    const SLIDES_CONFIG = [
      {
        image: SLITES_IMAGE_BASE + "1.png",
        title: "Slite",
        description: "Where knowledge <s>goes to die</s> thrives"
      },
      {
        image: SLITES_IMAGE_BASE + "2.png",
        title: "User Registration",
        description: "I registered an account with my work email."
      },
      {
        image: SLITES_IMAGE_BASE + "3.png",
        title: "Account Survey",
        description: "Right after registration, I was asked to fill out a survey to tell Slite how big my company is, and our intentions with Slite. I guess it is to provide enough data to prioritize our account with Slite's sales representatives."
      },
      {
        image: SLITES_IMAGE_BASE + "4.png",
        title: "Team Invite",
        description: "The next step of the onboarding journey was to ask me to invite my team. It did not really make sense to me because why would I invite any of my teammates until I understand how well the product works for me?"
      },
      {
        image: SLITES_IMAGE_BASE + "5.png",
        title: "Product Tour",
        description: "Next, I was given a product tour. I skipped it like any ADHD nerd."
      },
      {
        image: SLITES_IMAGE_BASE + "6.png",
        title: "Dashboard",
        description: "I was shown a dashboard with some placeholder data. I learned that a channel is like a \"folder\" that holds articles. A channel can be public or private."
      },
      {
        image: SLITES_IMAGE_BASE + "7.png",
        title: "Templates",
        description: "There are also ready-made document templates which I could leverage, or create my own."
      },
      {
        image: SLITES_IMAGE_BASE + "8.png",
        title: "Channels",
        description: "I tried to create a public channel."
      },
      {
        image: SLITES_IMAGE_BASE + "9.png",
        title: "Roles",
        description: "And I could invite people to access the channel."
      },
      {
        image: SLITES_IMAGE_BASE + "10.png",
        title: "Editor",
        description: "The editor looks like Ghost's article editor. And that's a compliment. Looks good."
      }
    ];
    // ========================================
    // End of configuration
    // ========================================

    // Find the current script's previous sibling (the widget wrapper)
    const currentScript = document.currentScript;
    const widgetWrapper = currentScript.previousElementSibling;

    if (!widgetWrapper || !widgetWrapper.hasAttribute('data-onboarding-widget')) {
      console.error('Onboarding widget wrapper not found');
      return;
    }

    // Get elements within this specific widget instance
    const widget = widgetWrapper.querySelector(".onboarding-widget");
    const indicatorsContainer = widgetWrapper.querySelector(".scroll-indicators");
    const sceneCounter = widgetWrapper.querySelector(".scene-counter");
    const prevButton = widgetWrapper.querySelector(".nav-button-prev");
    const nextButton = widgetWrapper.querySelector(".nav-button-next");
    const openImageButton = widgetWrapper.querySelector(".open-image-button");

    let currentScene = 0;

    // Generate slides from configuration
    function generateSlides() {
      SLIDES_CONFIG.forEach((slide, index) => {
        const sceneDiv = document.createElement("div");
        sceneDiv.className = "onboarding-scene";
        sceneDiv.setAttribute("data-scene", index + 1);

        sceneDiv.innerHTML = `
          <div class="screenshot-container">
            <img src="${slide.image}" alt="${slide.title}" />
            <div class="scene-description">
              <p class="title">${slide.title}</p>
              <p class="description">${slide.description}</p>
            </div>
          </div>
        `;

        widget.appendChild(sceneDiv);
      });
    }

    // Generate scroll indicator dots
    function generateIndicators() {
      SLIDES_CONFIG.forEach((slide, index) => {
        const dot = document.createElement("div");
        dot.className = "scroll-dot";
        dot.setAttribute("data-scene", index);

        dot.addEventListener("click", () => {
          scrollToScene(index);
        });

        indicatorsContainer.appendChild(dot);
      });
    }

    // Initialize the widget
    generateSlides();
    generateIndicators();

    const scenes = widgetWrapper.querySelectorAll(".onboarding-scene");
    const dots = widgetWrapper.querySelectorAll(".scroll-dot");

    // Function to get current image source
    function getCurrentImageSrc() {
      const currentSceneElement = scenes[currentScene];
      const img = currentSceneElement.querySelector("img");
      return img ? img.src : null;
    }

    // Function to update indicators and navigation buttons
    function updateIndicators(index) {
      currentScene = index;

      // Update dots
      dots.forEach((dot, i) => {
        dot.classList.toggle("active", i === index);
      });

      // Update counter
      sceneCounter.textContent = `${index + 1} / ${scenes.length}`;

      // Update navigation buttons
      prevButton.disabled = index === 0;
      nextButton.disabled = index === scenes.length - 1;
    }

    // Function to scroll to a specific scene
    function scrollToScene(index) {
      if (index < 0 || index >= scenes.length) {
        return;
      }

      const targetScene = scenes[index];
      targetScene.scrollIntoView({ behavior: "smooth", block: "start" });
    }

    // Detect which scene is currently in view based on scroll position
    function detectCurrentScene() {
      const scrollTop = widget.scrollTop;
      const sceneHeight = scenes[0].offsetHeight;
      const newScene = Math.round(scrollTop / sceneHeight);

      if (
        newScene !== currentScene &&
        newScene >= 0 &&
        newScene < scenes.length
      ) {
        updateIndicators(newScene);
      }
    }

    // Listen to scroll events to update indicators
    let scrollTimeout;
    widget.addEventListener(
      "scroll",
      () => {
        clearTimeout(scrollTimeout);
        scrollTimeout = setTimeout(() => {
          detectCurrentScene();
        }, 100);
      },
      { passive: true }
    );

    // Navigation button event listeners
    prevButton.addEventListener("click", () => {
      if (currentScene > 0) {
        scrollToScene(currentScene - 1);
      }
    });

    nextButton.addEventListener("click", () => {
      if (currentScene < scenes.length - 1) {
        scrollToScene(currentScene + 1);
      }
    });

    // Open image in new tab
    openImageButton.addEventListener("click", () => {
      const imageSrc = getCurrentImageSrc();
      if (imageSrc) {
        window.open(imageSrc, "_blank");
      }
    });

    // Initialize first scene indicators
    updateIndicators(0);
  })();
</script>

<!--kg-card-end: html-->
<h3 id="slite-product-questions-answered">Slite Product Questions, Answered</h3>
<blockquote>
<p>What is the KBS core use-case?</p>
</blockquote>
<p>Slite is a KBS intended to document business knowledge. It looks and behaves very much like a wiki.</p>
<blockquote>
<p>Does it support markdown?</p>
</blockquote>
<p>Yes! Markdown is native on Slite.</p>
<blockquote>
<p>Does it support code snippets formatting?</p>
</blockquote>
<p>Because Markdown is native on Slite, code snippets are very well supported with the ` character.</p>
<blockquote>
<p>What is the price?</p>
</blockquote>
<p>Prices start from $8/seat/month and it includes AI search.</p>
<blockquote>
<p>Is pricing charged per-seat?</p>
</blockquote>
<p>Yes.</p>
<blockquote>
<p>What is the onboarding like?</p>
</blockquote>
<p>Onboarding is straightforward. You register an account, then you are asked for your team size (probably for their sales team). Then you are asked to invite your teammates. You are then dropped into the Slite's dashboard which is really the home of the wiki.</p>
<blockquote>
<p>Does it have AI search?</p>
</blockquote>
<p>Yes.</p>
<blockquote>
<p>Does it have SSO?</p>
</blockquote>
<p>Yes, if you go up to their $20/user/month plan.</p>
<blockquote>
<p>Does it allow for the user to customize theming via CSS?</p>
</blockquote>
<p>No, Slite does not allow users to customize their wiki or documentation with custom CSS. The platform is designed for a streamlined and minimalist aesthetic and keeps customization options limited to maintain a consistent user experience.</p>
<h3 id="rating-slite">Rating Slite</h3>
<table>
<thead>
<tr>
<th><strong>Feature</strong></th>
<th><strong>Rating</strong></th>
<th><strong>Details</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Pricing</strong></td>
<td>⭐⭐⭐⭐ (4.5/5)</td>
<td>Even though Slite charges by seat, I have to say that Slite prices itself fairly. $20/seat/month for SSO, $8 if you don't need SSO or the other enterprise-y stuff. Very fair.</td>
</tr>
<tr>
<td><strong>Enterprise Ready</strong></td>
<td>⭐⭐⭐⭐ (4.5/5)</td>
<td>Slite is Enterprise-ready. My concerns with Slite remain the same with Guru, even though it is fairly priced. It is that if you are a growing business, why would you keep your product knowledge with a 3rd-party that might die any day if it does not make enough money or gets itself sued. Worst, the product gets hacked and is entirely out of your control. That said, I also understand the flip side of the equation for which you are a growing business and you want to focus on what matters -- growing the business and nothing more. In this case, by all means go with Slite. I think it is Enterprise ready and it is why I give it a rating of 4.5/5.</td>
</tr>
<tr>
<td><strong>AI Integration</strong></td>
<td>⭐⭐⭐⭐ (4.5/5)</td>
<td>AI is native on Slite. Well-integrated!</td>
</tr>
<tr>
<td><strong>Design</strong></td>
<td>⭐⭐⭐⭐ (4.5/5)</td>
<td>Slite looks well-designed and slick!</td>
</tr>
<tr>
<td><strong>Extensibility</strong></td>
<td>⭐⭐⭐⭐ (4.5/5)</td>
<td>Yes, Slite has a REST API that allows you to automate tasks and build custom integrations with your knowledge base.</td>
</tr>
<tr>
<td><strong>Average</strong></td>
<td>⭐⭐⭐⭐ (4.5/5)</td>
<td>Slite is very well-done as an internal wiki for internal business knowledge documentation. My concerns with Slite remain the same as with Guru. If you are a growing company, why would you trust a 3rd-party site to manage the security and sanctity of your proprietary business knowledge?</td>
</tr>
</tbody>
</table>
<h2 id="helpjuice">Helpjuice</h2>
<table>
<thead>
<tr>
<th><strong>Pricing</strong></th>
<th><strong>Enterprise Ready</strong></th>
<th><strong>AI Integration</strong></th>
<th><strong>Design</strong></th>
<th><strong>Extensibility</strong></th>
<th><strong>Average</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td>⭐ (1/5)</td>
<td>⭐⭐⭐ (3/5)</td>
<td>⭐⭐⭐ (3.5/5)</td>
<td>⭐⭐⭐ (3.5/5)</td>
<td>⭐⭐⭐⭐ (4.5/5)</td>
<td>⭐⭐⭐ (3.1/5)</td>
</tr>
</tbody>
</table>
<p>Helpjuice is the worst KBS product out of everything I have tested. In my opinion -- Helpjuice has a minimal feature set, and is ridiculously mispriced <em>and</em> overpriced, and worst of all, it is buggy. As an engineer, it also seems to be a sales-led company with part of the onboarding getting you to book a call with their sales representatives. Nothing wrong with that except that it gives the engineer in me the ick.</p>
<h3 id="helpjuice-demo">Helpjuice Demo</h3>

<!--kg-card-begin: html-->
<style>
      * {
        margin: 0;
        padding: 0;
        box-sizing: border-box;
      }

      .onboarding-widget-wrapper {
        position: relative;
        width: 100%;
        height: 600px;
        border-radius: 8px;
        box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
        overflow: hidden;
      }

      .onboarding-widget {
        position: relative;
        width: 100%;
        height: 100%;
        overflow-y: scroll;
        overflow-x: hidden;
        background: #1a1a1a;
        scroll-snap-type: y mandatory;
        scroll-behavior: smooth;
        -webkit-overflow-scrolling: touch;
      }

      .onboarding-scene {
        position: relative;
        width: 100%;
        height: 600px;
        flex-shrink: 0;
        scroll-snap-align: start;
        scroll-snap-stop: always;
      }

      .screenshot-container {
        width: 100%;
        height: 100%;
        display: flex;
        justify-content: center;
        align-items: center;
        background: #1a1a1a;
        position: relative;
      }

      .screenshot-container img {
        width: 100%;
        height: 100%;
        object-fit: contain;
      }

      .scene-description {
        position: absolute;
        bottom: 0;
        left: 0;
        right: 0;
        background: linear-gradient(
          to top,
          rgba(0, 0, 0, 0.85) 0%,
          rgba(0, 0, 0, 0.7) 70%,
          transparent 100%
        );
        backdrop-filter: blur(8px);
        padding: 60px 30px 30px 30px;
        text-align: center;
      }

      .scene-description .title {
        font-size: 1.5rem;
        color: #ffffff;
        margin-bottom: 8px;
        font-weight: 600;
        text-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);
      }

      .scene-description .description {
        font-size: 0.95rem;
        line-height: 1.5;
        color: #e0e0e0;
        max-width: 800px;
        margin: 0 auto;
        text-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);
      }

      /* Scroll Indicators */
      .scroll-indicators {
        position: absolute;
        right: 20px;
        top: 50%;
        transform: translateY(-50%);
        display: flex;
        flex-direction: column;
        gap: 12px;
        z-index: 100;
        pointer-events: none;
      }

      .scroll-indicators .scroll-dot {
        pointer-events: auto;
      }

      .scroll-dot {
        width: 12px;
        height: 12px;
        border-radius: 50%;
        background: #d0d0d0;
        cursor: pointer;
        transition: all 0.3s ease;
        border: 2px solid transparent;
      }

      .scroll-dot:hover {
        background: #a0a0a0;
        transform: scale(1.2);
      }

      .scroll-dot.active {
        background: #4a90e2;
        border-color: #4a90e2;
        box-shadow: 0 0 0 3px rgba(74, 144, 226, 0.2);
      }

      /* Scene Counter and Navigation */
      .scene-navigation {
        position: absolute;
        top: 20px;
        left: 50%;
        transform: translateX(-50%);
        display: flex;
        align-items: center;
        gap: 12px;
        z-index: 100;
      }

      /* Open Image Button */
      .open-image-button {
        position: absolute;
        top: 20px;
        right: 20px;
        width: 40px;
        height: 40px;
        border-radius: 50%;
        background: rgba(255, 255, 255, 0.95);
        color: #333;
        border: 2px solid rgba(255, 255, 255, 0.3);
        cursor: pointer;
        display: flex;
        align-items: center;
        justify-content: center;
        transition: all 0.3s ease;
        backdrop-filter: blur(10px);
        box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3), 0 2px 4px rgba(0, 0, 0, 0.2);
        z-index: 100;
      }

      .open-image-button:hover {
        background: rgba(255, 255, 255, 1);
        transform: scale(1.1);
        box-shadow: 0 6px 16px rgba(0, 0, 0, 0.4), 0 3px 6px rgba(0, 0, 0, 0.3);
      }

      .open-image-button svg {
        width: 20px;
        height: 20px;
        fill: #333;
      }

      .nav-button {
        width: 36px;
        height: 36px;
        border-radius: 50%;
        background: rgba(255, 255, 255, 0.95);
        color: #333;
        border: 2px solid rgba(255, 255, 255, 0.3);
        cursor: pointer;
        display: flex;
        align-items: center;
        justify-content: center;
        transition: all 0.3s ease;
        backdrop-filter: blur(10px);
        box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3), 0 2px 4px rgba(0, 0, 0, 0.2);
      }

      .nav-button:hover:not(:disabled) {
        background: rgba(255, 255, 255, 1);
        transform: scale(1.1);
        box-shadow: 0 6px 16px rgba(0, 0, 0, 0.4), 0 3px 6px rgba(0, 0, 0, 0.3);
      }

      .nav-button:disabled {
        opacity: 0.4;
        cursor: not-allowed;
      }

      .nav-button svg {
        width: 16px;
        height: 16px;
        fill: #333;
      }

      .scene-counter {
        background: rgba(255, 255, 255, 0.95);
        color: #333;
        padding: 8px 16px;
        border-radius: 20px;
        font-size: 0.9rem;
        backdrop-filter: blur(10px);
        pointer-events: none;
        border: 2px solid rgba(255, 255, 255, 0.3);
        box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3), 0 2px 4px rgba(0, 0, 0, 0.2);
        font-weight: 600;
      }

      /* Mobile Responsive */
      @media (max-width: 768px) {
        .scene-description {
          padding: 40px 20px 20px 20px;
        }

        .scene-description .title {
          font-size: 1.2rem;
        }

        .scene-description .description {
          font-size: 0.85rem;
          line-height: 1.4;
        }

        .scroll-indicators {
          right: 10px;
        }

        .scroll-dot {
          width: 10px;
          height: 10px;
        }

        .nav-button {
          width: 32px;
          height: 32px;
        }

        .nav-button svg {
          width: 14px;
          height: 14px;
        }

        .scene-counter {
          font-size: 0.8rem;
          padding: 6px 12px;
        }

        .scene-navigation {
          top: 15px;
          gap: 8px;
        }

        .open-image-button {
          width: 36px;
          height: 36px;
          top: 15px;
          right: 15px;
        }

        .open-image-button svg {
          width: 18px;
          height: 18px;
        }
      }
</style>

<div class="onboarding-widget-wrapper" data-onboarding-widget>
  <div class="onboarding-widget">
    <!-- Scenes will be dynamically generated here -->
  </div>

  <!-- Scroll Indicators -->
  <div class="scroll-indicators"></div>

  <!-- Open Image Button -->
  <button class="open-image-button" aria-label="Open image in new tab">
    <svg viewBox="0 0 24 24">
      <path d="M19 19H5V5h7V3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2v-7h-2v7zM14 3v2h3.59l-9.83 9.83 1.41 1.41L19 6.41V10h2V3h-7z"/>
    </svg>
  </button>

  <!-- Scene Navigation -->
  <div class="scene-navigation">
    <button class="nav-button nav-button-prev" aria-label="Previous slide">
      <svg viewBox="0 0 24 24">
        <path d="M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z"/>
      </svg>
    </button>
    <div class="scene-counter">1 / 1</div>
    <button class="nav-button nav-button-next" aria-label="Next slide">
      <svg viewBox="0 0 24 24">
        <path d="M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"/>
      </svg>
    </button>
  </div>
</div>

<script>
  (function() {
    // ========================================
    // CONFIGURATION - Edit your slides here!
    // ========================================
    const HELPJUICE_IMAGE_BASE = "https://ninjapear-pub.sfo3.cdn.digitaloceanspaces.com/ninjapear_kbs_review_screenshots/helpjuice/";
    const SLIDES_CONFIG = [
      {
        image: HELPJUICE_IMAGE_BASE + "1.png",
        title: "Helpjuice",
        description: "Helpjuice wants to be the ultimate Knowledge Base Software trying to straddle between customer-facing help center vs. internal-use wiki"
      },
      {
        image: HELPJUICE_IMAGE_BASE + "2.png",
        title: "Registration",
        description: "After registering an account, I was asked to verify my email."
      },
      {
        image: HELPJUICE_IMAGE_BASE + "3.png",
        title: "Knowledge Base Setup",
        description: "I was asked if I wanted to import an existing knowledge base, or start from scratch. Cool, because it means that it will crawl a knowledge base and copy it over to Helpjuice. I chose to start from scratch."
      },
      {
        image: HELPJUICE_IMAGE_BASE + "4.png",
        title: "Access Type",
        description: "I was then asked to choose the access type: if I wanted to open it to the public, or keep it private for employees, or both."
      },
      {
        image: HELPJUICE_IMAGE_BASE + "5.png",
        title: "Layout",
        description: "And to choose a layout."
      },
      {
        image: HELPJUICE_IMAGE_BASE + "6.png",
        title: "Book a call with a Sales Rep",
        description: "Helpjuice is pushing me to book a call with a sales rep with various dark patterns, like claiming it is a consulting session that costs $500. Not a good look."
      },
      {
        image: HELPJUICE_IMAGE_BASE + "7.png",
        title: "Knowledge Base Tour",
        description: "Next, I was given a tour of what the knowledge base will look like."
      },
      {
        image: HELPJUICE_IMAGE_BASE + "8.png",
        title: "Dashboard",
        description: "A view of the dashboard to work with the knowledge base. Looks like a wiki."
      },
      {
        image: HELPJUICE_IMAGE_BASE + "9.png",
        title: "Editor",
        description: "What the editor looks like. It supports Markdown somewhat."
      },
      {
        image: HELPJUICE_IMAGE_BASE + "10.png",
        title: "Bug",
        description: "Guess what. After publishing an article and trying to view it in its published link, I got a 404 error page saying it is not found."
      },
      {
        image: HELPJUICE_IMAGE_BASE + "11.png",
        title: "How the Knowledge Base looks like",
        description: "But the knowledge base loads. This is how it looks."
      },
      {
        image: HELPJUICE_IMAGE_BASE + "12.png",
        title: "Editor Options",
        description: "Various versioning options in the editor."
      },
      {
        image: HELPJUICE_IMAGE_BASE + "13.png",
        title: "Pricing plans",
        description: "Plans start from $249/mo."
      },
      {
        image: HELPJUICE_IMAGE_BASE + "14.png",
        title: "Comparing Plans",
        description: "I really don't like Helpjuice's pricing tiers."
      }
    ];
    // ========================================
    // End of configuration
    // ========================================

    // Find the current script's previous sibling (the widget wrapper)
    const currentScript = document.currentScript;
    const widgetWrapper = currentScript.previousElementSibling;

    if (!widgetWrapper || !widgetWrapper.hasAttribute('data-onboarding-widget')) {
      console.error('Onboarding widget wrapper not found');
      return;
    }

    // Get elements within this specific widget instance
    const widget = widgetWrapper.querySelector(".onboarding-widget");
    const indicatorsContainer = widgetWrapper.querySelector(".scroll-indicators");
    const sceneCounter = widgetWrapper.querySelector(".scene-counter");
    const prevButton = widgetWrapper.querySelector(".nav-button-prev");
    const nextButton = widgetWrapper.querySelector(".nav-button-next");
    const openImageButton = widgetWrapper.querySelector(".open-image-button");

    let currentScene = 0;

    // Generate slides from configuration
    function generateSlides() {
      SLIDES_CONFIG.forEach((slide, index) => {
        const sceneDiv = document.createElement("div");
        sceneDiv.className = "onboarding-scene";
        sceneDiv.setAttribute("data-scene", index + 1);

        sceneDiv.innerHTML = `
          <div class="screenshot-container">
            <img src="${slide.image}" alt="${slide.title}" />
            <div class="scene-description">
              <p class="title">${slide.title}</p>
              <p class="description">${slide.description}</p>
            </div>
          </div>
        `;

        widget.appendChild(sceneDiv);
      });
    }

    // Generate scroll indicator dots
    function generateIndicators() {
      SLIDES_CONFIG.forEach((slide, index) => {
        const dot = document.createElement("div");
        dot.className = "scroll-dot";
        dot.setAttribute("data-scene", index);

        dot.addEventListener("click", () => {
          scrollToScene(index);
        });

        indicatorsContainer.appendChild(dot);
      });
    }

    // Initialize the widget
    generateSlides();
    generateIndicators();

    const scenes = widgetWrapper.querySelectorAll(".onboarding-scene");
    const dots = widgetWrapper.querySelectorAll(".scroll-dot");

    // Function to get current image source
    function getCurrentImageSrc() {
      const currentSceneElement = scenes[currentScene];
      const img = currentSceneElement.querySelector("img");
      return img ? img.src : null;
    }

    // Function to update indicators and navigation buttons
    function updateIndicators(index) {
      currentScene = index;

      // Update dots
      dots.forEach((dot, i) => {
        dot.classList.toggle("active", i === index);
      });

      // Update counter
      sceneCounter.textContent = `${index + 1} / ${scenes.length}`;

      // Update navigation buttons
      prevButton.disabled = index === 0;
      nextButton.disabled = index === scenes.length - 1;
    }

    // Function to scroll to a specific scene
    function scrollToScene(index) {
      if (index < 0 || index >= scenes.length) {
        return;
      }

      const targetScene = scenes[index];
      targetScene.scrollIntoView({ behavior: "smooth", block: "start" });
    }

    // Detect which scene is currently in view based on scroll position
    function detectCurrentScene() {
      const scrollTop = widget.scrollTop;
      const sceneHeight = scenes[0].offsetHeight;
      const newScene = Math.round(scrollTop / sceneHeight);

      if (
        newScene !== currentScene &&
        newScene >= 0 &&
        newScene < scenes.length
      ) {
        updateIndicators(newScene);
      }
    }

    // Listen to scroll events to update indicators
    let scrollTimeout;
    widget.addEventListener(
      "scroll",
      () => {
        clearTimeout(scrollTimeout);
        scrollTimeout = setTimeout(() => {
          detectCurrentScene();
        }, 100);
      },
      { passive: true }
    );

    // Navigation button event listeners
    prevButton.addEventListener("click", () => {
      if (currentScene > 0) {
        scrollToScene(currentScene - 1);
      }
    });

    nextButton.addEventListener("click", () => {
      if (currentScene < scenes.length - 1) {
        scrollToScene(currentScene + 1);
      }
    });

    // Open image in new tab
    openImageButton.addEventListener("click", () => {
      const imageSrc = getCurrentImageSrc();
      if (imageSrc) {
        window.open(imageSrc, "_blank");
      }
    });

    // Initialize first scene indicators
    updateIndicators(0);
  })();
</script>

<!--kg-card-end: html-->
<h3 id="buggy-software">Buggy Software</h3>
<p>In my experience, Helpjuice is plagued with bugs. At the time of testing, the footer of every page links to the API documentation via <code>https://help.helpjuice.com/en_US/api-v3-webhooks/api-v3</code>. However, that was found to be a 404 error page. This is not the only bug, but the one bug that I had jotted down in my testing.</p>
<h3 id="helpjuice-product-questions-answered">Helpjuice Product Questions, Answered</h3>
<blockquote>
<p>What is the KBS core use-case?</p>
</blockquote>
<p>Superficially, Helpjuice's core use-case seems to be for documentation of product knowledge and various FAQ for customers.</p>
<p>However, it also introduces various user roles and permissions which means the knowledge base can also be used for internal use. Which means a portion of articles can only be viewed when logged in as an employee; and other public articles intended for customers. This is similar to what NinjaPear has with public and private articles. Which is very helpful because regardless of visibility, having a single source of business knowledge is very helpful for AI search.</p>
<blockquote>
<p>Does it support markdown?</p>
</blockquote>
<p>Yes, Helpjuice supports Markdown within its page article content block.</p>
<blockquote>
<p>Does it support code snippets formatting?</p>
</blockquote>
<p>Yes.</p>
<blockquote>
<p>What is the price?</p>
</blockquote>
<p>Prices start at $249/mo (!) By far the highest amongst all the platforms I have reviewed. The caveat is that $249/mo grants you 30 seats.</p>
<blockquote>
<p>Is pricing charged per-seat?</p>
</blockquote>
<p>By and large, yes. Unless you get on the largest plan of $799/mo which grants you <em>unlimited</em> users.</p>
<blockquote>
<p>What is the onboarding like?</p>
</blockquote>
<p>The onboarding process starts with a user registration and an email verification.</p>
<p>The onboarding process begins step-by-step:</p>
<p>First, you are asked to "import an existing knowledge base" or start from scratch. I am guessing that importing means that Helpjuice would crawl the existing knowledge base to populate their knowledge base with legacy content.</p>
<p>Then you are asked the access type of the knowledge base, for which the user can choose between:</p>
<ul>
<li>Mixed access</li>
<li>External</li>
<li>Internal</li>
</ul>
<p>Next, you'll be asked to choose the layout of the knowledge base.</p>
<p>The next step will be to schedule what I presume is a call with a sales-rep to upsell you to a conversion.</p>
<p>Finally, you'll be shown a tour of the knowledge base.</p>
<p>In my opinion, the onboarding process for HelpJuice has far too many steps.</p>
<blockquote>
<p>Does it have AI search?</p>
</blockquote>
<p>Yes, it is part of the "Swifty AI" suite.</p>
<blockquote>
<p>Does it have SSO?</p>
</blockquote>
<p>Yes, Helpjuice supports SSO.</p>
<blockquote>
<p>Does it allow for the user to customize theming via CSS?</p>
</blockquote>
<p>Yes, Helpjuice allows users to customize their knowledge base with custom CSS, with a built-in CSS editor. You can even upload your own custom CSS file. All these on top of the pre-built themes.</p>
<h3 id="rating-helpjuice">Rating Helpjuice</h3>
<table>
<thead>
<tr>
<th><strong>Feature</strong></th>
<th><strong>Rating</strong></th>
<th><strong>Details</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Pricing</strong></td>
<td>⭐ (1/5)</td>
<td>Helpjuice has a steep entry-price of $249/mo, with tiered pricing limited by seats. On top of that, it is in my opinion, buggy software.</td>
</tr>
<tr>
<td><strong>Enterprise Ready</strong></td>
<td>⭐⭐⭐ (3/5)</td>
<td>I believe Helpjuice has positioned itself to be very much targeted towards Enterprises with a sales-led approach, as well as various Enterprise requirements such as SSO. However, its buggy software and minimal feature set made me doubt that it is ready for Enterprises beyond just a marketing gimmick.</td>
</tr>
<tr>
<td><strong>AI Integration</strong></td>
<td>⭐⭐⭐ (3.5/5)</td>
<td>There is AI on Helpjuice. That is all I would say.</td>
</tr>
<tr>
<td><strong>Design</strong></td>
<td>⭐⭐⭐ (3.5/5)</td>
<td>Helpjuice design is ok. Not atrocious. Nothing bad, nothing good.</td>
</tr>
<tr>
<td><strong>Extensibility</strong></td>
<td>⭐⭐⭐⭐ (4.5/5)</td>
<td>Ok, Helpjuice has a pretty extensive and well-documented API. I will give props where they are due.</td>
</tr>
<tr>
<td><strong>Average</strong></td>
<td>⭐⭐⭐⭐ (3.1/5)</td>
<td>The problem with Helpjuice is that it lacks focus. I'm not sure what it is trying to do, and I think that's their design goal -- to build a KBS that can be for internal documentation, or for public documentation, or a mix of both. Which is what you can see during the onboarding process when you are asked to pick one. In trying to do everything, you end up doing nothing. I would not recommend Helpjuice to anyone.</td>
</tr>
</tbody>
</table>
<h2 id="helpscout">HelpScout</h2>
<table>
<thead>
<tr>
<th><strong>Pricing</strong></th>
<th><strong>Enterprise Ready</strong></th>
<th><strong>AI Integration</strong></th>
<th><strong>Design</strong></th>
<th><strong>Extensibility</strong></th>
<th><strong>Average</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td>⭐⭐⭐⭐ (4/5)</td>
<td>⭐⭐ (2/5)</td>
<td>⭐⭐⭐⭐ (4/5)</td>
<td>⭐⭐⭐⭐ (4.5/5)</td>
<td>⭐⭐⭐⭐ (4.5/5)</td>
<td>⭐⭐⭐ (3.8/5)</td>
</tr>
</tbody>
</table>
<p>HelpScout is an interesting product in that it flips the script against charging the product by seats, but by contacts instead. Both angles are to tax you by growth.</p>
<p>Beyond that, HelpScout is a platform with quite a bit of features, with the focus on customer support. The HelpScout platform has a shared inbox, a live chat, a knowledge base software, a messaging/survey product. The quirk is that while it ticks the checkboxes, each of these features are very minimal in depth. And you can see that in effect with HelpScout's KBS.</p>
<p>HelpScout is also pretty buggy during my time in testing.</p>
<h3 id="helpscout-demo">HelpScout Demo</h3>

<!--kg-card-begin: html-->
<style>
      * {
        margin: 0;
        padding: 0;
        box-sizing: border-box;
      }

      .onboarding-widget-wrapper {
        position: relative;
        width: 100%;
        height: 600px;
        border-radius: 8px;
        box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
        overflow: hidden;
      }

      .onboarding-widget {
        position: relative;
        width: 100%;
        height: 100%;
        overflow-y: scroll;
        overflow-x: hidden;
        background: #1a1a1a;
        scroll-snap-type: y mandatory;
        scroll-behavior: smooth;
        -webkit-overflow-scrolling: touch;
      }

      .onboarding-scene {
        position: relative;
        width: 100%;
        height: 600px;
        flex-shrink: 0;
        scroll-snap-align: start;
        scroll-snap-stop: always;
      }

      .screenshot-container {
        width: 100%;
        height: 100%;
        display: flex;
        justify-content: center;
        align-items: center;
        background: #1a1a1a;
        position: relative;
      }

      .screenshot-container img {
        width: 100%;
        height: 100%;
        object-fit: contain;
      }

      .scene-description {
        position: absolute;
        bottom: 0;
        left: 0;
        right: 0;
        background: linear-gradient(
          to top,
          rgba(0, 0, 0, 0.85) 0%,
          rgba(0, 0, 0, 0.7) 70%,
          transparent 100%
        );
        backdrop-filter: blur(8px);
        padding: 60px 30px 30px 30px;
        text-align: center;
      }

      .scene-description .title {
        font-size: 1.5rem;
        color: #ffffff;
        margin-bottom: 8px;
        font-weight: 600;
        text-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);
      }

      .scene-description .description {
        font-size: 0.95rem;
        line-height: 1.5;
        color: #e0e0e0;
        max-width: 800px;
        margin: 0 auto;
        text-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);
      }

      /* Scroll Indicators */
      .scroll-indicators {
        position: absolute;
        right: 20px;
        top: 50%;
        transform: translateY(-50%);
        display: flex;
        flex-direction: column;
        gap: 12px;
        z-index: 100;
        pointer-events: none;
      }

      .scroll-indicators .scroll-dot {
        pointer-events: auto;
      }

      .scroll-dot {
        width: 12px;
        height: 12px;
        border-radius: 50%;
        background: #d0d0d0;
        cursor: pointer;
        transition: all 0.3s ease;
        border: 2px solid transparent;
      }

      .scroll-dot:hover {
        background: #a0a0a0;
        transform: scale(1.2);
      }

      .scroll-dot.active {
        background: #4a90e2;
        border-color: #4a90e2;
        box-shadow: 0 0 0 3px rgba(74, 144, 226, 0.2);
      }

      /* Scene Counter and Navigation */
      .scene-navigation {
        position: absolute;
        top: 20px;
        left: 50%;
        transform: translateX(-50%);
        display: flex;
        align-items: center;
        gap: 12px;
        z-index: 100;
      }

      /* Open Image Button */
      .open-image-button {
        position: absolute;
        top: 20px;
        right: 20px;
        width: 40px;
        height: 40px;
        border-radius: 50%;
        background: rgba(255, 255, 255, 0.95);
        color: #333;
        border: 2px solid rgba(255, 255, 255, 0.3);
        cursor: pointer;
        display: flex;
        align-items: center;
        justify-content: center;
        transition: all 0.3s ease;
        backdrop-filter: blur(10px);
        box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3), 0 2px 4px rgba(0, 0, 0, 0.2);
        z-index: 100;
      }

      .open-image-button:hover {
        background: rgba(255, 255, 255, 1);
        transform: scale(1.1);
        box-shadow: 0 6px 16px rgba(0, 0, 0, 0.4), 0 3px 6px rgba(0, 0, 0, 0.3);
      }

      .open-image-button svg {
        width: 20px;
        height: 20px;
        fill: #333;
      }

      .nav-button {
        width: 36px;
        height: 36px;
        border-radius: 50%;
        background: rgba(255, 255, 255, 0.95);
        color: #333;
        border: 2px solid rgba(255, 255, 255, 0.3);
        cursor: pointer;
        display: flex;
        align-items: center;
        justify-content: center;
        transition: all 0.3s ease;
        backdrop-filter: blur(10px);
        box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3), 0 2px 4px rgba(0, 0, 0, 0.2);
      }

      .nav-button:hover:not(:disabled) {
        background: rgba(255, 255, 255, 1);
        transform: scale(1.1);
        box-shadow: 0 6px 16px rgba(0, 0, 0, 0.4), 0 3px 6px rgba(0, 0, 0, 0.3);
      }

      .nav-button:disabled {
        opacity: 0.4;
        cursor: not-allowed;
      }

      .nav-button svg {
        width: 16px;
        height: 16px;
        fill: #333;
      }

      .scene-counter {
        background: rgba(255, 255, 255, 0.95);
        color: #333;
        padding: 8px 16px;
        border-radius: 20px;
        font-size: 0.9rem;
        backdrop-filter: blur(10px);
        pointer-events: none;
        border: 2px solid rgba(255, 255, 255, 0.3);
        box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3), 0 2px 4px rgba(0, 0, 0, 0.2);
        font-weight: 600;
      }

      /* Mobile Responsive */
      @media (max-width: 768px) {
        .scene-description {
          padding: 40px 20px 20px 20px;
        }

        .scene-description .title {
          font-size: 1.2rem;
        }

        .scene-description .description {
          font-size: 0.85rem;
          line-height: 1.4;
        }

        .scroll-indicators {
          right: 10px;
        }

        .scroll-dot {
          width: 10px;
          height: 10px;
        }

        .nav-button {
          width: 32px;
          height: 32px;
        }

        .nav-button svg {
          width: 14px;
          height: 14px;
        }

        .scene-counter {
          font-size: 0.8rem;
          padding: 6px 12px;
        }

        .scene-navigation {
          top: 15px;
          gap: 8px;
        }

        .open-image-button {
          width: 36px;
          height: 36px;
          top: 15px;
          right: 15px;
        }

        .open-image-button svg {
          width: 18px;
          height: 18px;
        }
      }
</style>

<div class="onboarding-widget-wrapper" data-onboarding-widget>
  <div class="onboarding-widget">
    <!-- Scenes will be dynamically generated here -->
  </div>

  <!-- Scroll Indicators -->
  <div class="scroll-indicators"></div>

  <!-- Open Image Button -->
  <button class="open-image-button" aria-label="Open image in new tab">
    <svg viewBox="0 0 24 24">
      <path d="M19 19H5V5h7V3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2v-7h-2v7zM14 3v2h3.59l-9.83 9.83 1.41 1.41L19 6.41V10h2V3h-7z"/>
    </svg>
  </button>

  <!-- Scene Navigation -->
  <div class="scene-navigation">
    <button class="nav-button nav-button-prev" aria-label="Previous slide">
      <svg viewBox="0 0 24 24">
        <path d="M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z"/>
      </svg>
    </button>
    <div class="scene-counter">1 / 1</div>
    <button class="nav-button nav-button-next" aria-label="Next slide">
      <svg viewBox="0 0 24 24">
        <path d="M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"/>
      </svg>
    </button>
  </div>
</div>

<script>
  (function() {
    // ========================================
    // CONFIGURATION - Edit your slides here!
    // ========================================
    const HELPSCOUT_IMAGE_BASE = "https://ninjapear-pub.sfo3.cdn.digitaloceanspaces.com/ninjapear_kbs_review_screenshots/helpscout/";
    const SLIDES_CONFIG = [
      {
        image: HELPSCOUT_IMAGE_BASE + "1.png",
        title: "HelpScout",
        description: "HelpScout's unique angle here is that they offer Unlimited Seats (and charge for contacts instead)."
      },
      {
        image: HELPSCOUT_IMAGE_BASE + "2.png",
        title: "Account Registration",
        description: "I registered an account."
      },
      {
        image: HELPSCOUT_IMAGE_BASE + "3.png",
        title: "Account Registration Fail",
        description: "But it failed, not once, but persistently! I had to change to another email before it <b>worked</b>."
      },
      {
        image: HELPSCOUT_IMAGE_BASE + "4.png",
        title: "Captcha",
        description: "I don't understand why Captcha needs to be a separate page. But I solved it."
      },
      {
        image: HELPSCOUT_IMAGE_BASE + "5.png",
        title: "Survey",
        description: "I <b>was</b> asked about my company size and industry, as well as how I found out about them. Typical questions to see if they would need to prioritize this account."
      },
      {
        image: HELPSCOUT_IMAGE_BASE + "6.png",
        title: "Survey P2",
        description: "More questions about how we intend to use the product."
      },
      {
        image: HELPSCOUT_IMAGE_BASE + "7.png",
        title: "Ticket Inbox Dashboard",
        description: "After the registration flow, I <b>was</b> dropped into the ticketing inbox dashboard. I guess that's what <b>HelpScout</b> is focused on, customer support via tickets."
      },
      {
        image: HELPSCOUT_IMAGE_BASE + "8.png",
        title: "Docs",
        description: "I clicked into the Knowledge Base page by clicking on the \"Docs\". I <b>could</b> create articles or categories."
      },
      {
        image: HELPSCOUT_IMAGE_BASE + "9.png",
        title: "New Article",
        description: "Here, I tried to create and publish my first article."
      },
      {
        image: HELPSCOUT_IMAGE_BASE + "10.png",
        title: "Error Page",
        description: "I published the article and tried to visit the public link to the article, but I got an error page. Bug."
      },
      {
        image: HELPSCOUT_IMAGE_BASE + "11.png",
        title: "Dashboard",
        description: "How the dashboard looks after the article was published."
      }
    ];
    // ========================================
    // End of configuration
    // ========================================

    // Find the current script's previous sibling (the widget wrapper)
    const currentScript = document.currentScript;
    const widgetWrapper = currentScript.previousElementSibling;

    if (!widgetWrapper || !widgetWrapper.hasAttribute('data-onboarding-widget')) {
      console.error('Onboarding widget wrapper not found');
      return;
    }

    // Get elements within this specific widget instance
    const widget = widgetWrapper.querySelector(".onboarding-widget");
    const indicatorsContainer = widgetWrapper.querySelector(".scroll-indicators");
    const sceneCounter = widgetWrapper.querySelector(".scene-counter");
    const prevButton = widgetWrapper.querySelector(".nav-button-prev");
    const nextButton = widgetWrapper.querySelector(".nav-button-next");
    const openImageButton = widgetWrapper.querySelector(".open-image-button");

    let currentScene = 0;

    // Generate slides from configuration
    function generateSlides() {
      SLIDES_CONFIG.forEach((slide, index) => {
        const sceneDiv = document.createElement("div");
        sceneDiv.className = "onboarding-scene";
        sceneDiv.setAttribute("data-scene", index + 1);

        sceneDiv.innerHTML = `
          <div class="screenshot-container">
            <img src="${slide.image}" alt="${slide.title}" />
            <div class="scene-description">
              <p class="title">${slide.title}</p>
              <p class="description">${slide.description}</p>
            </div>
          </div>
        `;

        widget.appendChild(sceneDiv);
      });
    }

    // Generate scroll indicator dots
    function generateIndicators() {
      SLIDES_CONFIG.forEach((slide, index) => {
        const dot = document.createElement("div");
        dot.className = "scroll-dot";
        dot.setAttribute("data-scene", index);

        dot.addEventListener("click", () => {
          scrollToScene(index);
        });

        indicatorsContainer.appendChild(dot);
      });
    }

    // Initialize the widget
    generateSlides();
    generateIndicators();

    const scenes = widgetWrapper.querySelectorAll(".onboarding-scene");
    const dots = widgetWrapper.querySelectorAll(".scroll-dot");

    // Function to get current image source
    function getCurrentImageSrc() {
      const currentSceneElement = scenes[currentScene];
      const img = currentSceneElement.querySelector("img");
      return img ? img.src : null;
    }

    // Function to update indicators and navigation buttons
    function updateIndicators(index) {
      currentScene = index;

      // Update dots
      dots.forEach((dot, i) => {
        dot.classList.toggle("active", i === index);
      });

      // Update counter
      sceneCounter.textContent = `${index + 1} / ${scenes.length}`;

      // Update navigation buttons
      prevButton.disabled = index === 0;
      nextButton.disabled = index === scenes.length - 1;
    }

    // Function to scroll to a specific scene
    function scrollToScene(index) {
      if (index < 0 || index >= scenes.length) {
        return;
      }

      const targetScene = scenes[index];
      targetScene.scrollIntoView({ behavior: "smooth", block: "start" });
    }

    // Detect which scene is currently in view based on scroll position
    function detectCurrentScene() {
      const scrollTop = widget.scrollTop;
      const sceneHeight = scenes[0].offsetHeight;
      const newScene = Math.round(scrollTop / sceneHeight);

      if (
        newScene !== currentScene &&
        newScene >= 0 &&
        newScene < scenes.length
      ) {
        updateIndicators(newScene);
      }
    }

    // Listen to scroll events to update indicators
    let scrollTimeout;
    widget.addEventListener(
      "scroll",
      () => {
        clearTimeout(scrollTimeout);
        scrollTimeout = setTimeout(() => {
          detectCurrentScene();
        }, 100);
      },
      { passive: true }
    );

    // Navigation button event listeners
    prevButton.addEventListener("click", () => {
      if (currentScene > 0) {
        scrollToScene(currentScene - 1);
      }
    });

    nextButton.addEventListener("click", () => {
      if (currentScene < scenes.length - 1) {
        scrollToScene(currentScene + 1);
      }
    });

    // Open image in new tab
    openImageButton.addEventListener("click", () => {
      const imageSrc = getCurrentImageSrc();
      if (imageSrc) {
        window.open(imageSrc, "_blank");
      }
    });

    // Initialize first scene indicators
    updateIndicators(0);
  })();
</script>

<!--kg-card-end: html-->
<h3 id="helpscout-product-questions-answered">HelpScout Product Questions, Answered</h3>
<blockquote>
<p>What is the KBS core use-case?</p>
</blockquote>
<p>HelpScout's KBS is oriented towards customers, for documenting product knowledge and FAQ. Much like every other customer support platform out there.</p>
<blockquote>
<p>Does it support markdown?</p>
</blockquote>
<p>Yes, Help Scout's knowledge base editor supports standard Markdown syntax for formatting articles. While you can use a rich-text editor with toolbars, you also have the option to apply formatting by typing Markdown shortcuts directly.</p>
<blockquote>
<p>Does it support code snippets formatting?</p>
</blockquote>
<p>Yes.</p>
<blockquote>
<p>What is the price?</p>
</blockquote>
<p>There is a free plan which grants you to contact up to 100 contacts per month. And a standard plan stating at $50/mo which gives you 100 contacts per month with the option to scale. But guess what, these are pricing for its live chat feature.</p>
<p>If you plan to use just its knowledge base feature, then it is <em>free</em>!</p>
<blockquote>
<p>Is pricing charged per-seat?</p>
</blockquote>
<p>No.</p>
<blockquote>
<p>What is the onboarding like?</p>
</blockquote>
<p>The onboarding process was pretty buggy. First, I registered an account with my work email but then I got an error. I had to try another email before that error went away.</p>
<p>I was then asked to describe my company, industry, company size, etc. Pretty standard although I don't know why the survey needs to be spread over two pages.</p>
<p>I was then brought to a ticket inbox dashboard page. This is when you realised HelpScout is really not a KBS but a customer support suite with a bolted-on KBS.</p>
<p>Then I clicked over to "Docs" and I could either create a category or an article.</p>
<p>I tried to create an article, published it, only to get an error page.</p>
<p>Honestly not the best onboarding experience. Great landing page though.</p>
<blockquote>
<p>Does it have AI search?</p>
</blockquote>
<p>Yes, Help Scout has an AI Search feature called AI Answers. It is an AI-powered chatbot that uses your knowledge base articles to provide instant, conversational answers to customer questions via the Beacon help widget.</p>
<blockquote>
<p>Does it have SSO?</p>
</blockquote>
<p>Yes, HelpScout supports SSO.</p>
<blockquote>
<p>Does it allow for the user to customize theming via CSS?</p>
</blockquote>
<p>Yes, Help Scout allows for extensive customization of its Docs knowledge base theme using CSS. You can either upload a stylesheet or enter CSS directly into the Custom Code section of your Docs settings.</p>
<h3 id="rating-helpscout">Rating HelpScout</h3>
<table>
<thead>
<tr>
<th><strong>Feature</strong></th>
<th><strong>Rating</strong></th>
<th><strong>Details</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Pricing</strong></td>
<td>⭐⭐⭐⭐ (4/5)</td>
<td>4/5 because it is essentially free if you're just looking to use their KBS feature. However, if you are looking to use their other products, then you might hit their contact limit and might end up having to pay. That said, their prices look fair and you simply pay more if you have more contacts (which really means more customers).</td>
</tr>
<tr>
<td><strong>Enterprise Ready</strong></td>
<td>⭐⭐ (2/5)</td>
<td>While HelpScout has various features required for Enterprises such as SSO, its minimal feature set and buggy platform makes it not very palatable for Enterprises to adopt HelpScout.</td>
</tr>
<tr>
<td><strong>AI Integration</strong></td>
<td>⭐⭐⭐⭐ (4/5)</td>
<td>HelpScout has AI integration through its platform.</td>
</tr>
<tr>
<td><strong>Design</strong></td>
<td>⭐⭐⭐⭐ (4.5/5)</td>
<td>I think HelpScout's UI is well-designed and the dashboard is easy to navigate. -0.5 because of the extensive onboarding survey spread over two pages.</td>
</tr>
<tr>
<td><strong>Extensibility</strong></td>
<td>⭐⭐⭐⭐ (4.5/5)</td>
<td>Help Scout has a robust developer platform with several APIs and tools for integrating with other applications and customizing functionality.</td>
</tr>
<tr>
<td><strong>Average</strong></td>
<td>⭐⭐⭐ (3.8/5)</td>
<td>HelpScout is OK as a customer support platform. Meh if you're considering it as a KBS. There are better alternatives in almost every aspect from UI, product stability, pricing, features, etc.</td>
</tr>
</tbody>
</table>
<h2 id="freshdesk">Freshdesk</h2>
<table>
<thead>
<tr>
<th><strong>Pricing</strong></th>
<th><strong>Enterprise Ready</strong></th>
<th><strong>AI Integration</strong></th>
<th><strong>Design</strong></th>
<th><strong>Extensibility</strong></th>
<th><strong>Average</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td>⭐⭐⭐ (/5)</td>
<td>⭐⭐⭐⭐ (4.5/5)</td>
<td>⭐⭐⭐ (3/5)</td>
<td>⭐⭐⭐⭐ (4/5)</td>
<td>⭐⭐⭐⭐ (4.5/5)</td>
<td>⭐⭐⭐ (3.8/5)</td>
</tr>
</tbody>
</table>
<p>Freshdesk is a straightforward product. With the quirk in that it has a ticketing system built alongside the knowledge base. That means customers can create new tickets from the public knowledge base's interface. This is because Freshdesk is first and foremost a ticketing system, with every other feature built to augment their ticketing system.</p>
<h3 id="freshdesk-demo">Freshdesk Demo</h3>

<!--kg-card-begin: html-->
<style>
      * {
        margin: 0;
        padding: 0;
        box-sizing: border-box;
      }

      .onboarding-widget-wrapper {
        position: relative;
        width: 100%;
        height: 600px;
        border-radius: 8px;
        box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
        overflow: hidden;
      }

      .onboarding-widget {
        position: relative;
        width: 100%;
        height: 100%;
        overflow-y: scroll;
        overflow-x: hidden;
        background: #1a1a1a;
        scroll-snap-type: y mandatory;
        scroll-behavior: smooth;
        -webkit-overflow-scrolling: touch;
      }

      .onboarding-scene {
        position: relative;
        width: 100%;
        height: 600px;
        flex-shrink: 0;
        scroll-snap-align: start;
        scroll-snap-stop: always;
      }

      .screenshot-container {
        width: 100%;
        height: 100%;
        display: flex;
        justify-content: center;
        align-items: center;
        background: #1a1a1a;
        position: relative;
      }

      .screenshot-container img {
        width: 100%;
        height: 100%;
        object-fit: contain;
      }

      .scene-description {
        position: absolute;
        bottom: 0;
        left: 0;
        right: 0;
        background: linear-gradient(
          to top,
          rgba(0, 0, 0, 0.85) 0%,
          rgba(0, 0, 0, 0.7) 70%,
          transparent 100%
        );
        backdrop-filter: blur(8px);
        padding: 60px 30px 30px 30px;
        text-align: center;
      }

      .scene-description .title {
        font-size: 1.5rem;
        color: #ffffff;
        margin-bottom: 8px;
        font-weight: 600;
        text-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);
      }

      .scene-description .description {
        font-size: 0.95rem;
        line-height: 1.5;
        color: #e0e0e0;
        max-width: 800px;
        margin: 0 auto;
        text-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);
      }

      /* Scroll Indicators */
      .scroll-indicators {
        position: absolute;
        right: 20px;
        top: 50%;
        transform: translateY(-50%);
        display: flex;
        flex-direction: column;
        gap: 12px;
        z-index: 100;
        pointer-events: none;
      }

      .scroll-indicators .scroll-dot {
        pointer-events: auto;
      }

      .scroll-dot {
        width: 12px;
        height: 12px;
        border-radius: 50%;
        background: #d0d0d0;
        cursor: pointer;
        transition: all 0.3s ease;
        border: 2px solid transparent;
      }

      .scroll-dot:hover {
        background: #a0a0a0;
        transform: scale(1.2);
      }

      .scroll-dot.active {
        background: #4a90e2;
        border-color: #4a90e2;
        box-shadow: 0 0 0 3px rgba(74, 144, 226, 0.2);
      }

      /* Scene Counter and Navigation */
      .scene-navigation {
        position: absolute;
        top: 20px;
        left: 50%;
        transform: translateX(-50%);
        display: flex;
        align-items: center;
        gap: 12px;
        z-index: 100;
      }

      /* Open Image Button */
      .open-image-button {
        position: absolute;
        top: 20px;
        right: 20px;
        width: 40px;
        height: 40px;
        border-radius: 50%;
        background: rgba(255, 255, 255, 0.95);
        color: #333;
        border: 2px solid rgba(255, 255, 255, 0.3);
        cursor: pointer;
        display: flex;
        align-items: center;
        justify-content: center;
        transition: all 0.3s ease;
        backdrop-filter: blur(10px);
        box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3), 0 2px 4px rgba(0, 0, 0, 0.2);
        z-index: 100;
      }

      .open-image-button:hover {
        background: rgba(255, 255, 255, 1);
        transform: scale(1.1);
        box-shadow: 0 6px 16px rgba(0, 0, 0, 0.4), 0 3px 6px rgba(0, 0, 0, 0.3);
      }

      .open-image-button svg {
        width: 20px;
        height: 20px;
        fill: #333;
      }

      .nav-button {
        width: 36px;
        height: 36px;
        border-radius: 50%;
        background: rgba(255, 255, 255, 0.95);
        color: #333;
        border: 2px solid rgba(255, 255, 255, 0.3);
        cursor: pointer;
        display: flex;
        align-items: center;
        justify-content: center;
        transition: all 0.3s ease;
        backdrop-filter: blur(10px);
        box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3), 0 2px 4px rgba(0, 0, 0, 0.2);
      }

      .nav-button:hover:not(:disabled) {
        background: rgba(255, 255, 255, 1);
        transform: scale(1.1);
        box-shadow: 0 6px 16px rgba(0, 0, 0, 0.4), 0 3px 6px rgba(0, 0, 0, 0.3);
      }

      .nav-button:disabled {
        opacity: 0.4;
        cursor: not-allowed;
      }

      .nav-button svg {
        width: 16px;
        height: 16px;
        fill: #333;
      }

      .scene-counter {
        background: rgba(255, 255, 255, 0.95);
        color: #333;
        padding: 8px 16px;
        border-radius: 20px;
        font-size: 0.9rem;
        backdrop-filter: blur(10px);
        pointer-events: none;
        border: 2px solid rgba(255, 255, 255, 0.3);
        box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3), 0 2px 4px rgba(0, 0, 0, 0.2);
        font-weight: 600;
      }

      /* Mobile Responsive */
      @media (max-width: 768px) {
        .scene-description {
          padding: 40px 20px 20px 20px;
        }

        .scene-description .title {
          font-size: 1.2rem;
        }

        .scene-description .description {
          font-size: 0.85rem;
          line-height: 1.4;
        }

        .scroll-indicators {
          right: 10px;
        }

        .scroll-dot {
          width: 10px;
          height: 10px;
        }

        .nav-button {
          width: 32px;
          height: 32px;
        }

        .nav-button svg {
          width: 14px;
          height: 14px;
        }

        .scene-counter {
          font-size: 0.8rem;
          padding: 6px 12px;
        }

        .scene-navigation {
          top: 15px;
          gap: 8px;
        }

        .open-image-button {
          width: 36px;
          height: 36px;
          top: 15px;
          right: 15px;
        }

        .open-image-button svg {
          width: 18px;
          height: 18px;
        }
      }
</style>

<div class="onboarding-widget-wrapper" data-onboarding-widget>
  <div class="onboarding-widget">
    <!-- Scenes will be dynamically generated here -->
  </div>

  <!-- Scroll Indicators -->
  <div class="scroll-indicators"></div>

  <!-- Open Image Button -->
  <button class="open-image-button" aria-label="Open image in new tab">
    <svg viewBox="0 0 24 24">
      <path d="M19 19H5V5h7V3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2v-7h-2v7zM14 3v2h3.59l-9.83 9.83 1.41 1.41L19 6.41V10h2V3h-7z"/>
    </svg>
  </button>

  <!-- Scene Navigation -->
  <div class="scene-navigation">
    <button class="nav-button nav-button-prev" aria-label="Previous slide">
      <svg viewBox="0 0 24 24">
        <path d="M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z"/>
      </svg>
    </button>
    <div class="scene-counter">1 / 1</div>
    <button class="nav-button nav-button-next" aria-label="Next slide">
      <svg viewBox="0 0 24 24">
        <path d="M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"/>
      </svg>
    </button>
  </div>
</div>

<script>
  (function() {
    // ========================================
    // CONFIGURATION - Edit your slides here!
    // ========================================
    const FRESHDESK_IMAGE_BASE = "https://ninjapear-pub.sfo3.cdn.digitaloceanspaces.com/ninjapear_kbs_review_screenshots/freshdesk/";
    const SLIDES_CONFIG = [
      {
        image: FRESHDESK_IMAGE_BASE + "1.png",
        title: "Freshdesk",
        description: "The landing page of Freshdesk. I've always known about Freshdesk and their name being very similar to Zendesk is not a coincidence. They are an Indian company which tried very hard to compete with Freshdesk."
      },
      {
        image: FRESHDESK_IMAGE_BASE + "2.png",
        title: "User Registration",
        description: "I signed up for an account on Freshdesk with my work email. Take note that I was not asked to fill in a password."
      },
      {
        image: FRESHDESK_IMAGE_BASE + "3.png",
        title: "Survey",
        description: "As usual in sales-led companies, I had to fill out a survey on my company size, industry and my experience level."
      },
      {
        image: FRESHDESK_IMAGE_BASE + "4.png",
        title: "Dashboard",
        description: "After registration, I was brought to the dashboard where I was asked to connect my support email. Although my focus here is on the Knowledge Base."
      },
      {
        image: FRESHDESK_IMAGE_BASE + "5.png",
        title: "Knowledge Base Dashboard",
        description: "So I clicked on the icon that looks like a book, and I was brought to the Knowledge Base dashboard page, where the primary call to action was to create a new article."
      },
      {
        image: FRESHDESK_IMAGE_BASE + "6.png",
        title: "Editor",
        description: "I created a simple article but I couldn't publish it until I verified my account."
      },
      {
        image: FRESHDESK_IMAGE_BASE + "7.png",
        title: "Email Verification",
        description: "I checked my email and followed the email verification link, where I was asked to enter a password for the account and activate my account."
      }
    ];
    // ========================================
    // End of configuration
    // ========================================

    // Find the current script's previous sibling (the widget wrapper)
    const currentScript = document.currentScript;
    const widgetWrapper = currentScript.previousElementSibling;

    if (!widgetWrapper || !widgetWrapper.hasAttribute('data-onboarding-widget')) {
      console.error('Onboarding widget wrapper not found');
      return;
    }

    // Get elements within this specific widget instance
    const widget = widgetWrapper.querySelector(".onboarding-widget");
    const indicatorsContainer = widgetWrapper.querySelector(".scroll-indicators");
    const sceneCounter = widgetWrapper.querySelector(".scene-counter");
    const prevButton = widgetWrapper.querySelector(".nav-button-prev");
    const nextButton = widgetWrapper.querySelector(".nav-button-next");
    const openImageButton = widgetWrapper.querySelector(".open-image-button");

    let currentScene = 0;

    // Generate slides from configuration
    function generateSlides() {
      SLIDES_CONFIG.forEach((slide, index) => {
        const sceneDiv = document.createElement("div");
        sceneDiv.className = "onboarding-scene";
        sceneDiv.setAttribute("data-scene", index + 1);

        sceneDiv.innerHTML = `
          <div class="screenshot-container">
            <img src="${slide.image}" alt="${slide.title}" />
            <div class="scene-description">
              <p class="title">${slide.title}</p>
              <p class="description">${slide.description}</p>
            </div>
          </div>
        `;

        widget.appendChild(sceneDiv);
      });
    }

    // Generate scroll indicator dots
    function generateIndicators() {
      SLIDES_CONFIG.forEach((slide, index) => {
        const dot = document.createElement("div");
        dot.className = "scroll-dot";
        dot.setAttribute("data-scene", index);

        dot.addEventListener("click", () => {
          scrollToScene(index);
        });

        indicatorsContainer.appendChild(dot);
      });
    }

    // Initialize the widget
    generateSlides();
    generateIndicators();

    const scenes = widgetWrapper.querySelectorAll(".onboarding-scene");
    const dots = widgetWrapper.querySelectorAll(".scroll-dot");

    // Function to get current image source
    function getCurrentImageSrc() {
      const currentSceneElement = scenes[currentScene];
      const img = currentSceneElement.querySelector("img");
      return img ? img.src : null;
    }

    // Function to update indicators and navigation buttons
    function updateIndicators(index) {
      currentScene = index;

      // Update dots
      dots.forEach((dot, i) => {
        dot.classList.toggle("active", i === index);
      });

      // Update counter
      sceneCounter.textContent = `${index + 1} / ${scenes.length}`;

      // Update navigation buttons
      prevButton.disabled = index === 0;
      nextButton.disabled = index === scenes.length - 1;
    }

    // Function to scroll to a specific scene
    function scrollToScene(index) {
      if (index < 0 || index >= scenes.length) {
        return;
      }

      const targetScene = scenes[index];
      targetScene.scrollIntoView({ behavior: "smooth", block: "start" });
    }

    // Detect which scene is currently in view based on scroll position
    function detectCurrentScene() {
      const scrollTop = widget.scrollTop;
      const sceneHeight = scenes[0].offsetHeight;
      const newScene = Math.round(scrollTop / sceneHeight);

      if (
        newScene !== currentScene &&
        newScene >= 0 &&
        newScene < scenes.length
      ) {
        updateIndicators(newScene);
      }
    }

    // Listen to scroll events to update indicators
    let scrollTimeout;
    widget.addEventListener(
      "scroll",
      () => {
        clearTimeout(scrollTimeout);
        scrollTimeout = setTimeout(() => {
          detectCurrentScene();
        }, 100);
      },
      { passive: true }
    );

    // Navigation button event listeners
    prevButton.addEventListener("click", () => {
      if (currentScene > 0) {
        scrollToScene(currentScene - 1);
      }
    });

    nextButton.addEventListener("click", () => {
      if (currentScene < scenes.length - 1) {
        scrollToScene(currentScene + 1);
      }
    });

    // Open image in new tab
    openImageButton.addEventListener("click", () => {
      const imageSrc = getCurrentImageSrc();
      if (imageSrc) {
        window.open(imageSrc, "_blank");
      }
    });

    // Initialize first scene indicators
    updateIndicators(0);
  })();
</script>

<!--kg-card-end: html-->
<h3 id="freshdesk-product-questions-answered">Freshdesk Product Questions, Answered</h3>
<blockquote>
<p>What is the KBS core use-case?</p>
</blockquote>
<p>Freshdesk's KBS use-case is intended to document product knowledge and FAQs for customers.</p>
<blockquote>
<p>Does it support markdown?</p>
</blockquote>
<p>No, Freshdesk does not natively support Markdown in its knowledge base article editor. Instead, it uses a rich text editor (also known as a WYSIWYG editor) for formatting articles.</p>
<blockquote>
<p>Does it support code snippets formatting?</p>
</blockquote>
<p>It does, via the WYSIWYG editor when you select a code block</p>
<blockquote>
<p>What is the price?</p>
</blockquote>
<p>Freshdesk pricing starts from $15/agent/month. AI usage is charged separately. Prices can go as high as to $79/agent/month.</p>
<blockquote>
<p>Is pricing charged per-seat?</p>
</blockquote>
<p>Yes.</p>
<blockquote>
<p>What is the onboarding like?</p>
</blockquote>
<p>Freshdesk's onboarding starts with a user registration without any password input. Thereafter, you have to activate your account after registering which includes quite a long process of password input, inputting your company size and type, etc.</p>
<p>Upon login, you are brought to the tickets dashboard. What I did was to navigate to the "Solutions" tab, which is essentially their KBS.</p>
<p>From which I attempted to publish a simple "hello world" article. That was when it became really jarring because first I have to select a "hierarchy" folder and then a "category" for which I simply cannot understand why these two entities need to exist. I guess to form a multi-level folder structure?</p>
<p>After account activation and creation of a category <em>and</em> a hierarchy, then I could have the hello world <a href="https://ninjapear.freshdesk.com/support/solutions/articles/159000415432-hello-world?ref=nubela.co">published</a>.</p>
<blockquote>
<p>Does it have AI search?</p>
</blockquote>
<p>Yes, Freshdesk provides AI search capabilities for its knowledge base through its native AI engine, Freddy AI.</p>
<blockquote>
<p>Does it have SSO?</p>
</blockquote>
<p>Yes, Freshdesk fully supports Single Sign-On (SSO).</p>
<blockquote>
<p>Does it allow for the user to customize theming via CSS?</p>
</blockquote>
<p>Yes, Freshdesk allows users to customize the theming of their Knowledge Base using CSS through an advanced code editor. You can access this editor to apply custom CSS and make changes to the layout and appearance of your entire customer portal, including the Knowledge Base section.</p>
<h3 id="rating-freshdesk">Rating Freshdesk</h3>
<table>
<thead>
<tr>
<th><strong>Feature</strong></th>
<th><strong>Rating</strong></th>
<th><strong>Details</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Pricing</strong></td>
<td>⭐⭐⭐ (3/5)</td>
<td>Not the cheapest, nor the most expensive. Average prices.</td>
</tr>
<tr>
<td><strong>Enterprise Ready</strong></td>
<td>⭐⭐⭐⭐ (4.5/5)</td>
<td>Freshdesk works. It's not buggy, it has Enterprise features, and it has a ticketing system which large enterprise-y companies love.</td>
</tr>
<tr>
<td><strong>AI Integration</strong></td>
<td>⭐⭐⭐ (3/5)</td>
<td>Freshdesk has Freddy AI bolted on which seems to be well integrated.</td>
</tr>
<tr>
<td><strong>Design</strong></td>
<td>⭐⭐⭐⭐ (4/5)</td>
<td>Freshdesk's UI looks ok, if not slightly dated. I am able to easily navigate within Freshdesk so that's a huge win that most products can't even accomplish.</td>
</tr>
<tr>
<td><strong>Extensibility</strong></td>
<td>⭐⭐⭐⭐ (4.5/5)</td>
<td>Yes, Freshdesk does have an API that allows developers to access and manage help desk data programmatically.</td>
</tr>
<tr>
<td><strong>Average</strong></td>
<td>⭐⭐⭐ (3.8/5)</td>
<td>Freshdesk is a firm contender against its other customer-service oriented platforms. That said, it is not the best. Near the best, but not the best.</td>
</tr>
</tbody>
</table>
<h2 id="zendesk">Zendesk</h2>
<table>
<thead>
<tr>
<th><strong>Pricing</strong></th>
<th><strong>Enterprise Ready</strong></th>
<th><strong>AI Integration</strong></th>
<th><strong>Design</strong></th>
<th><strong>Extensibility</strong></th>
<th><strong>Average</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td>⭐ (1/5)</td>
<td>⭐⭐⭐⭐ (4.5/5)</td>
<td>⭐⭐⭐ (3/5)</td>
<td>⭐ (1/5)</td>
<td>⭐⭐⭐⭐ (4.5/5)</td>
<td>⭐⭐ (2.8/5)</td>
</tr>
</tbody>
</table>
<p>Zendesk is a customer support platform not unlike Freshdesk or Intercom which happens to offer a KBS.</p>
<p>Firstly, I really wanted to like Zendesk because it acquired and absorbed a similar startup from Singapore so I had high hopes for it.</p>
<p>Unfortunately it is a really slow site at the time of testing. I mean, it <em>crawls</em> from my office internet in Singapore. One part of the onboarding process was to create a mock knowledge base and it literally took <em>minutes</em>. This is hardcoded mock data! It does not take minutes to insert it into a database. It reeks of poor developer culture.</p>
<p>On top of that, its onboarding form's UX is terrible and inefficient with one field per page. On top of that, it is <strong>super expensive</strong>. I really don't understand why anyone would want to use Zendesk other than legacy.</p>
<h3 id="zendesk-demo">Zendesk Demo</h3>

<!--kg-card-begin: html-->
<style>
      * {
        margin: 0;
        padding: 0;
        box-sizing: border-box;
      }

      .onboarding-widget-wrapper {
        position: relative;
        width: 100%;
        height: 600px;
        border-radius: 8px;
        box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
        overflow: hidden;
      }

      .onboarding-widget {
        position: relative;
        width: 100%;
        height: 100%;
        overflow-y: scroll;
        overflow-x: hidden;
        background: #1a1a1a;
        scroll-snap-type: y mandatory;
        scroll-behavior: smooth;
        -webkit-overflow-scrolling: touch;
      }

      .onboarding-scene {
        position: relative;
        width: 100%;
        height: 600px;
        flex-shrink: 0;
        scroll-snap-align: start;
        scroll-snap-stop: always;
      }

      .screenshot-container {
        width: 100%;
        height: 100%;
        display: flex;
        justify-content: center;
        align-items: center;
        background: #1a1a1a;
        position: relative;
      }

      .screenshot-container img {
        width: 100%;
        height: 100%;
        object-fit: contain;
      }

      .scene-description {
        position: absolute;
        bottom: 0;
        left: 0;
        right: 0;
        background: linear-gradient(
          to top,
          rgba(0, 0, 0, 0.85) 0%,
          rgba(0, 0, 0, 0.7) 70%,
          transparent 100%
        );
        backdrop-filter: blur(8px);
        padding: 60px 30px 30px 30px;
        text-align: center;
      }

      .scene-description .title {
        font-size: 1.5rem;
        color: #ffffff;
        margin-bottom: 8px;
        font-weight: 600;
        text-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);
      }

      .scene-description .description {
        font-size: 0.95rem;
        line-height: 1.5;
        color: #e0e0e0;
        max-width: 800px;
        margin: 0 auto;
        text-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);
      }

      /* Scroll Indicators */
      .scroll-indicators {
        position: absolute;
        right: 20px;
        top: 50%;
        transform: translateY(-50%);
        display: flex;
        flex-direction: column;
        gap: 12px;
        z-index: 100;
        pointer-events: none;
      }

      .scroll-indicators .scroll-dot {
        pointer-events: auto;
      }

      .scroll-dot {
        width: 12px;
        height: 12px;
        border-radius: 50%;
        background: #d0d0d0;
        cursor: pointer;
        transition: all 0.3s ease;
        border: 2px solid transparent;
      }

      .scroll-dot:hover {
        background: #a0a0a0;
        transform: scale(1.2);
      }

      .scroll-dot.active {
        background: #4a90e2;
        border-color: #4a90e2;
        box-shadow: 0 0 0 3px rgba(74, 144, 226, 0.2);
      }

      /* Scene Counter and Navigation */
      .scene-navigation {
        position: absolute;
        top: 20px;
        left: 50%;
        transform: translateX(-50%);
        display: flex;
        align-items: center;
        gap: 12px;
        z-index: 100;
      }

      /* Open Image Button */
      .open-image-button {
        position: absolute;
        top: 20px;
        right: 20px;
        width: 40px;
        height: 40px;
        border-radius: 50%;
        background: rgba(255, 255, 255, 0.95);
        color: #333;
        border: 2px solid rgba(255, 255, 255, 0.3);
        cursor: pointer;
        display: flex;
        align-items: center;
        justify-content: center;
        transition: all 0.3s ease;
        backdrop-filter: blur(10px);
        box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3), 0 2px 4px rgba(0, 0, 0, 0.2);
        z-index: 100;
      }

      .open-image-button:hover {
        background: rgba(255, 255, 255, 1);
        transform: scale(1.1);
        box-shadow: 0 6px 16px rgba(0, 0, 0, 0.4), 0 3px 6px rgba(0, 0, 0, 0.3);
      }

      .open-image-button svg {
        width: 20px;
        height: 20px;
        fill: #333;
      }

      .nav-button {
        width: 36px;
        height: 36px;
        border-radius: 50%;
        background: rgba(255, 255, 255, 0.95);
        color: #333;
        border: 2px solid rgba(255, 255, 255, 0.3);
        cursor: pointer;
        display: flex;
        align-items: center;
        justify-content: center;
        transition: all 0.3s ease;
        backdrop-filter: blur(10px);
        box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3), 0 2px 4px rgba(0, 0, 0, 0.2);
      }

      .nav-button:hover:not(:disabled) {
        background: rgba(255, 255, 255, 1);
        transform: scale(1.1);
        box-shadow: 0 6px 16px rgba(0, 0, 0, 0.4), 0 3px 6px rgba(0, 0, 0, 0.3);
      }

      .nav-button:disabled {
        opacity: 0.4;
        cursor: not-allowed;
      }

      .nav-button svg {
        width: 16px;
        height: 16px;
        fill: #333;
      }

      .scene-counter {
        background: rgba(255, 255, 255, 0.95);
        color: #333;
        padding: 8px 16px;
        border-radius: 20px;
        font-size: 0.9rem;
        backdrop-filter: blur(10px);
        pointer-events: none;
        border: 2px solid rgba(255, 255, 255, 0.3);
        box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3), 0 2px 4px rgba(0, 0, 0, 0.2);
        font-weight: 600;
      }

      /* Mobile Responsive */
      @media (max-width: 768px) {
        .scene-description {
          padding: 40px 20px 20px 20px;
        }

        .scene-description .title {
          font-size: 1.2rem;
        }

        .scene-description .description {
          font-size: 0.85rem;
          line-height: 1.4;
        }

        .scroll-indicators {
          right: 10px;
        }

        .scroll-dot {
          width: 10px;
          height: 10px;
        }

        .nav-button {
          width: 32px;
          height: 32px;
        }

        .nav-button svg {
          width: 14px;
          height: 14px;
        }

        .scene-counter {
          font-size: 0.8rem;
          padding: 6px 12px;
        }

        .scene-navigation {
          top: 15px;
          gap: 8px;
        }

        .open-image-button {
          width: 36px;
          height: 36px;
          top: 15px;
          right: 15px;
        }

        .open-image-button svg {
          width: 18px;
          height: 18px;
        }
      }
</style>

<div class="onboarding-widget-wrapper" data-onboarding-widget>
  <div class="onboarding-widget">
    <!-- Scenes will be dynamically generated here -->
  </div>

  <!-- Scroll Indicators -->
  <div class="scroll-indicators"></div>

  <!-- Open Image Button -->
  <button class="open-image-button" aria-label="Open image in new tab">
    <svg viewBox="0 0 24 24">
      <path d="M19 19H5V5h7V3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2v-7h-2v7zM14 3v2h3.59l-9.83 9.83 1.41 1.41L19 6.41V10h2V3h-7z"/>
    </svg>
  </button>

  <!-- Scene Navigation -->
  <div class="scene-navigation">
    <button class="nav-button nav-button-prev" aria-label="Previous slide">
      <svg viewBox="0 0 24 24">
        <path d="M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z"/>
      </svg>
    </button>
    <div class="scene-counter">1 / 1</div>
    <button class="nav-button nav-button-next" aria-label="Next slide">
      <svg viewBox="0 0 24 24">
        <path d="M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"/>
      </svg>
    </button>
  </div>
</div>

<script>
  (function() {
    // ========================================
    // CONFIGURATION - Edit your slides here!
    // ========================================
    const ZENDESK_IMAGE_BASE = "https://ninjapear-pub.sfo3.cdn.digitaloceanspaces.com/ninjapear_kbs_review_screenshots/zendesk/";
    const SLIDES_CONFIG = [
      {
        image: ZENDESK_IMAGE_BASE + "1.png",
        title: "Zendesk",
        description: "Zendesk has been a veteran in the customer support space."
      },
      {
        image: ZENDESK_IMAGE_BASE + "2.png",
        title: "User Registration",
        description: "I like their registration page. Only 1 field, and it makes me see the dashboard in the background which I love and makes me want to get to it ASAP."
      },
      {
        image: ZENDESK_IMAGE_BASE + "3.png",
        title: "Registration Flow",
        description: "I was asked for a job title. Ok, I don't like this. I prefer all the fields on one page. But that might just be me."
      },
      {
        image: ZENDESK_IMAGE_BASE + "4.png",
        title: "Registration Flow P3",
        description: "I was asked what product I want to try. I chose the \"Customer Service\"."
      },
      {
        image: ZENDESK_IMAGE_BASE + "5.png",
        title: "Registration Flow P4",
        description: "I'm asked to verify my email, which I did."
      },
      {
        image: ZENDESK_IMAGE_BASE + "6.png",
        title: "Product Tour and Onboarding",
        description: "I never liked Product Tour. In this case, they are showcasing their AI features."
      },
      {
        image: ZENDESK_IMAGE_BASE + "7.png",
        title: "Onboarding P2",
        description: "I was then asked to invite my team. I'd prefer to try out the product first, decide that it is good, before I invite my colleagues into a product."
      },
      {
        image: ZENDESK_IMAGE_BASE + "8.png",
        title: "Onboarding P3",
        description: "This felt a bit weird. Zendesk wants us to test out AI inferencing with some background knowledge and asked us to provide that to them. Weird. Where do I even start?"
      },
      {
        image: ZENDESK_IMAGE_BASE + "9.png",
        title: "Onboarding P4",
        description: "Then I'm asked to connect my email. Not of interest because my focus is on the Knowledge Base."
      },
      {
        image: ZENDESK_IMAGE_BASE + "10.png",
        title: "Onboarding P5",
        description: "I'm asked to solve a test ticket. Not relevant since my focus is on the knowledge base."
      },
      {
        image: ZENDESK_IMAGE_BASE + "11.png",
        title: "Onboarding P6",
        description: "Ugh this is getting draggy. More product tour."
      },
      {
        image: ZENDESK_IMAGE_BASE + "12.png",
        title: "Knowledge Base Dashboard",
        description: "Finally, we're on the Knowledge Base. I chose to \"Start from scratch\"."
      },
      {
        image: ZENDESK_IMAGE_BASE + "13.png",
        title: "Knowledge Base UI",
        description: "How the base Knowledge Base UI looks"
      },
      {
        image: ZENDESK_IMAGE_BASE + "14.png",
        title: "Editor",
        description: "How the editor looks. Looks good. And no I don't want another tour. I created and published a test article."
      },
      {
        image: ZENDESK_IMAGE_BASE + "15.png",
        title: "Knowledge Base Article",
        description: "After publishing the article, this is how the article looks."
      },
      {
        image: ZENDESK_IMAGE_BASE + "16.png",
        title: "Editor Article Settings",
        description: "Here you can see how you can add extra metadata/visibility settings to an article."
      }
    ];
    // ========================================
    // End of configuration
    // ========================================

    // Find the current script's previous sibling (the widget wrapper)
    const currentScript = document.currentScript;
    const widgetWrapper = currentScript.previousElementSibling;

    if (!widgetWrapper || !widgetWrapper.hasAttribute('data-onboarding-widget')) {
      console.error('Onboarding widget wrapper not found');
      return;
    }

    // Get elements within this specific widget instance
    const widget = widgetWrapper.querySelector(".onboarding-widget");
    const indicatorsContainer = widgetWrapper.querySelector(".scroll-indicators");
    const sceneCounter = widgetWrapper.querySelector(".scene-counter");
    const prevButton = widgetWrapper.querySelector(".nav-button-prev");
    const nextButton = widgetWrapper.querySelector(".nav-button-next");
    const openImageButton = widgetWrapper.querySelector(".open-image-button");

    let currentScene = 0;

    // Generate slides from configuration
    function generateSlides() {
      SLIDES_CONFIG.forEach((slide, index) => {
        const sceneDiv = document.createElement("div");
        sceneDiv.className = "onboarding-scene";
        sceneDiv.setAttribute("data-scene", index + 1);

        sceneDiv.innerHTML = `
          <div class="screenshot-container">
            <img src="${slide.image}" alt="${slide.title}" />
            <div class="scene-description">
              <p class="title">${slide.title}</p>
              <p class="description">${slide.description}</p>
            </div>
          </div>
        `;

        widget.appendChild(sceneDiv);
      });
    }

    // Generate scroll indicator dots
    function generateIndicators() {
      SLIDES_CONFIG.forEach((slide, index) => {
        const dot = document.createElement("div");
        dot.className = "scroll-dot";
        dot.setAttribute("data-scene", index);

        dot.addEventListener("click", () => {
          scrollToScene(index);
        });

        indicatorsContainer.appendChild(dot);
      });
    }

    // Initialize the widget
    generateSlides();
    generateIndicators();

    const scenes = widgetWrapper.querySelectorAll(".onboarding-scene");
    const dots = widgetWrapper.querySelectorAll(".scroll-dot");

    // Function to get current image source
    function getCurrentImageSrc() {
      const currentSceneElement = scenes[currentScene];
      const img = currentSceneElement.querySelector("img");
      return img ? img.src : null;
    }

    // Function to update indicators and navigation buttons
    function updateIndicators(index) {
      currentScene = index;

      // Update dots
      dots.forEach((dot, i) => {
        dot.classList.toggle("active", i === index);
      });

      // Update counter
      sceneCounter.textContent = `${index + 1} / ${scenes.length}`;

      // Update navigation buttons
      prevButton.disabled = index === 0;
      nextButton.disabled = index === scenes.length - 1;
    }

    // Function to scroll to a specific scene
    function scrollToScene(index) {
      if (index < 0 || index >= scenes.length) {
        return;
      }

      const targetScene = scenes[index];
      targetScene.scrollIntoView({ behavior: "smooth", block: "start" });
    }

    // Detect which scene is currently in view based on scroll position
    function detectCurrentScene() {
      const scrollTop = widget.scrollTop;
      const sceneHeight = scenes[0].offsetHeight;
      const newScene = Math.round(scrollTop / sceneHeight);

      if (
        newScene !== currentScene &&
        newScene >= 0 &&
        newScene < scenes.length
      ) {
        updateIndicators(newScene);
      }
    }

    // Listen to scroll events to update indicators
    let scrollTimeout;
    widget.addEventListener(
      "scroll",
      () => {
        clearTimeout(scrollTimeout);
        scrollTimeout = setTimeout(() => {
          detectCurrentScene();
        }, 100);
      },
      { passive: true }
    );

    // Navigation button event listeners
    prevButton.addEventListener("click", () => {
      if (currentScene > 0) {
        scrollToScene(currentScene - 1);
      }
    });

    nextButton.addEventListener("click", () => {
      if (currentScene < scenes.length - 1) {
        scrollToScene(currentScene + 1);
      }
    });

    // Open image in new tab
    openImageButton.addEventListener("click", () => {
      const imageSrc = getCurrentImageSrc();
      if (imageSrc) {
        window.open(imageSrc, "_blank");
      }
    });

    // Initialize first scene indicators
    updateIndicators(0);
  })();
</script>

<!--kg-card-end: html-->
<h3 id="zendesk-product-questions-answered">Zendesk Product Questions, Answered</h3>
<blockquote>
<p>What is the KBS core use-case?</p>
</blockquote>
<p>Zendesk's KBS use-case is intended to document product knowledge and FAQs for customers, like Intercom and Freshdesk.</p>
<blockquote>
<p>Does it support Markdown?</p>
</blockquote>
<p>Yes it does.</p>
<blockquote>
<p>Does it support code snippets formatting?</p>
</blockquote>
<p>Yes it does, although weirdly, Markdown's double backtick does not seem to initiate Markdown's code snippet block. So I'm guessing that their editor supports only a subset of Markdown features.</p>
<blockquote>
<p>What is the price?</p>
</blockquote>
<p>Zendesk KBS plans start at $55/agent/month, and goes all the way up to $169/agent/month with AI included.</p>
<blockquote>
<p>Is pricing charged per-seat?</p>
</blockquote>
<p>Yes.</p>
<blockquote>
<p>What is the onboarding like?</p>
</blockquote>
<p>Slow, <strong>many</strong> steps, and confusing UI.</p>
<p>First, I was asked to register an account, for which it was tedious. Then I was brought to the ticketing dashboard. And I had a hard time finding where the knowledge base feature is. I clicked into the Setup Guides, then I saw that there is a separate setup for Knowledge Base. I enabled the Knowledge Base trial, and then I was in a preview of the knowledge base, for which I can create an article.</p>
<blockquote>
<p>Does it have AI search?</p>
</blockquote>
<p>Yes, Zendesk has AI search capabilities for its knowledge base, featuring both generative and semantic search. This allows users to get instant, AI-generated answers to their questions, rather than just a list of article links.</p>
<blockquote>
<p>Does it have SSO?</p>
</blockquote>
<p>Yes.</p>
<blockquote>
<p>Does it allow for the user to customize theming via CSS?</p>
</blockquote>
<p>Yes, Zendesk allows users to customize the theming of their Help Center knowledge base with custom CSS. This capability is available by editing the code of your theme within the Zendesk Guide admin panel, though it is not available on the lowest-tier plans.</p>
<h3 id="rating-zendesk">Rating Zendesk</h3>
<table>
<thead>
<tr>
<th><strong>Feature</strong></th>
<th><strong>Rating</strong></th>
<th><strong>Details</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Pricing</strong></td>
<td>⭐ (1/5)</td>
<td>Too expensive for features that are confusing to use.</td>
</tr>
<tr>
<td><strong>Enterprise Ready</strong></td>
<td>⭐⭐⭐⭐ (4.5/5)</td>
<td>Zendesk has Enterprise customers and is one of the giants in the customer support space. It is Enterprise ready.</td>
</tr>
<tr>
<td><strong>AI Integration</strong></td>
<td>⭐⭐⭐ (3/5)</td>
<td>Zendesk has AI integrations but they are bolted on and not well-integrated.</td>
</tr>
<tr>
<td><strong>Design</strong></td>
<td>⭐ (1/5)</td>
<td>Zendesk has a great UI but poor UX. Things look beautiful but they clearly do not think through how a user feels or experiences the UI. I'd guess that the entire product is designed by committee instead of by a singular UI/UX dictator. Which makes it all over the place. Ticks the boxes but fails the vibe test.</td>
</tr>
<tr>
<td><strong>Extensibility</strong></td>
<td>⭐⭐⭐⭐ (4.5/5)</td>
<td>Yes, Zendesk has an API for integrating and extending its products.</td>
</tr>
<tr>
<td><strong>Average</strong></td>
<td>⭐⭐⭐ (2.8/5)</td>
<td>There are way better alternatives in the customer service space with KBS other than Zendesk. I do not recommend Zendesk.</td>
</tr>
</tbody>
</table>
<h2 id="putting-it-all-together">Putting it all together</h2>
<p>This has been a long read and I hope it serves as an encyclopaedia of knowledge base software when you do need one. And trust me, you ought to use one. I self-host a wiki in my homelab just to document my own personal stuff; let alone for a growing business.</p>
<p>What we know so far is that there are three primary use-cases for a Knowledge Base Software:</p>
<ol>
<li>A KBS to document business knowledge for customers</li>
<li>A KBS to document technical knowledge for customers</li>
<li>A KBS to document business knowledge for internal use</li>
</ol>
<p>There exists HelpJuice which tries to do it for all, but fails at doing it well because it was not focused enough.</p>
<p>If you require a KBS to document business knowledge for internal use, I'd recommend <em>Slite</em>.</p>
<p>If you require a KBS for customer-facing knowledge documentation, I'd highly recommend NinjaPear for its rock-solid simple product with common sense pricing, and Intercom (to a lesser extent) if and only if you need something mature with more years in the market.</p>
 ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ Introducing NinjaPear ]]></title>
        <description><![CDATA[ NinjaPear is a **100% free** and **unlimited** customer support suite, offering Live Chat and a Knowledge Base for product teams in SMBs. ]]></description>
        <link>https://nubela.co/blog/introducing-ninjapear/</link>
        <guid isPermaLink="false">68de651a14dc920001fdfad8</guid>
        <category><![CDATA[ ninjapear ]]></category>
        <dc:creator><![CDATA[ Steven Goh | CEO ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2019/05/square.jpg"/>
        <pubDate>Thu, 02 Oct 2025 20:43:10 +0800</pubDate>
        <media:content url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2025/10/Gemini_Generated_Image_3kw8yw3kw8yw3kw8.png" medium="image"/>
        <content:encoded><![CDATA[ <div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">💡</div><div class="kg-callout-text">UPDATE 29th January 2026 -- NinjaPear has pivoted to become a data platform. We will share an announcement blog post soon. In the meantime, see <a href="https://nubela.co/?ref=nubela.co" rel="noreferrer">https://nubela.co</a> and give the new NinjaPear a test drive.</div></div><p>After months of rest, followed by heads-down building, I'm happy to share that we're launching <a href="https://nubela.co/?ref=nubela.co">NinjaPear</a> today! NinjaPear is a <strong>100% free</strong> and <strong>unlimited</strong> customer support suite, offering Live Chat and a Knowledge Base for product teams in SMBs.</p>
<p>I'll give you three reasons why you should choose NinjaPear instead of Intercom, Zendesk, or Tawk.to (a popular free live chat service). And I say this as a veteran founder who used to make purchasing decisions.</p>
<h2 id="1-truly-unlimited-100-free">1. Truly Unlimited, 100% Free</h2>
<p>You can invite as many team members as you want to NinjaPear. We do not charge per seat.</p>
<p>You can have as many contacts/unique conversations as you want. We do not charge by contacts.</p>
<p>When I say we are truly unlimited and free, I mean it. You see, I'm a technical founder, and I'm going to be honest with you. In this post-LLM world, the equation of build versus buy has very much veered toward <em>build</em> in most companies, simply because it's so easy to hack together a prototype. I mean, a significant number of lines of code in NinjaPear are generated by LLMs. The days of hacking together simple software and charging $9.99 per seat are over.</p>
<p>This is why the <a href="https://en.wikipedia.org/wiki/Unique_selling_proposition?ref=nubela.co">USP</a> of NinjaPear is that we're, in fact, an enterprise AI inference company, masquerading as a customer service suite. We charge customers at a profitable premium for every LLM inference made with our products.</p>
<p>Therefore, to veer the customer toward buying, we are offering these core features for free, without limits. We can do this because we are a post-LLM company, unlike Intercom, Zendesk, etc.</p>
<h2 id="2-open-protocolsapi">2. Open Protocols/API</h2>
<p>I don't want you to ever worry about growing and scaling with NinjaPear. When our product's implementation no longer befits your needs, build on top of it! Make full use of our infrastructure. It's managed and free!</p>
<p>Starting with our live chat's communication protocol, we have made it open and <a href="https://nubela.co/docs/protocol/?ref=nubela.co">properly documented</a>. You can build on top of our APIs and support any platform or business needs you might have.</p>
<p>As a founder, I hate being stuck on any platform (looking at you, Slack/Google Workspace). That's why we open-sourced our protocol APIs so your integration can be ported out anytime you want.</p>
<p>Always remember, the founder (me) is technical. We are a dev company, building for fellow devs, with love.</p>
<h2 id="3-ai-native">3. AI-Native</h2>
<p>We started building NinjaPear this year, around April. I deliberately moved very slowly with AI, waiting for the tech to mature and progress to slow down. For one, the performance of open-weight LLMs is pretty near the bleeding-edge closed models from OpenAI and Anthropic.</p>
<p>As I shared above, the open secret of NinjaPear is that we are, in fact, an AI inference company masquerading as a customer service suite. This is why LLM inferencing is a first-class integration in everything we designed, and not slapped on like with every other pre-ChatGPT customer service company.</p>
<p>I believe in less and more. There are two core points of AI integration in NinjaPear:</p>
<ol>
<li>Auto-replies by Ninja Agents</li>
<li>Inbox AI suggestions in the Inbox</li>
</ol>
<h3 id="ninja-agents">Ninja Agents</h3>
<p>Ninja Agents are AI agents that auto-reply to incoming messages. And they <a href="https://www.youtube.com/watch?v=gAjR4_CbPpQ&ref=nubela.co">perform harder, better, faster, <s>stronger</s></a> than human operators.</p>
<p><strong>Faster</strong> because Ninja Agents already have all the business knowledge gathered in a millisecond: your website, pre-crawled; your curated knowledge base; your past chat conversations.</p>
<p><strong>Better</strong> because they do not have emotions, nor will they make English errors, and they understand most written languages.</p>
<p><strong>Harder</strong> because LLMs don't sleep.</p>
<p>No seriously, Ninja Agents are better customer support agents than humans are.</p>
<h3 id="inbox-ai-suggestions">Inbox AI Suggestions</h3>
<p>Humans like talking to humans. I know, because bots smell like bots. I always know. Personally, I prefer talking to humans. But you know what's better than talking to a human? A human augmented with AI powers. Give them every perk a Ninja Agent has, such as millisecond business knowledge retrieval, throw in LLM-generated suggestions, and let a human wipe that bot smell away.</p>
<hr>
<p>As a serial entrepreneur with two exits under my belt over 12 years now, every product I have launched started off as a solution to a personal pain point. This is the first product that I built that solved numerous pains my previous company had.</p>
<p>The NinjaPear I'm sharing with you stands as a humble first iteration. I want you to know NinjaPear is here to stay, and you will see us make a lot of mistakes along the way, for which I will chronicle each and every lesson I learn here in this blog.</p>
<p>Like every company I've built, NinjaPear will be bootstrapped, so there will not be any unhealthy growth pressure that a VC-backed company would have, which means there will be no bait and switch that might come later. At the same time, because we are bootstrapped and funded by 12 years of past profits/exits, you can be sure we will be relentlessly focused on building a company where the margins make sense for us as a profitable and long-term minded company.</p>
<p>It's good to be back with another product, post-Proxycurl! We learned a lot scaling a bootstrapped company from $0 to $10M ARR. And I look forward to taking those lessons forward with NinjaPear. If you have any questions at all, send us an email to <a href="mailto:hello@nubela.co">hello@nubela.co</a> :) I'll be personally replying to every email.</p>
 ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ Proxycurl Shuts Down. Thank you. ]]></title>
        <description><![CDATA[ 💡The team behind Proxycurl is now focused on NinjaPear, a new data platform.

In January earlier this year (2025), LinkedIn filed a lawsuit against Proxycurl. Today, we are shutting Proxycurl down. The team is now focused on NinjaPear, a Competitive Intelligence Data company. Regardless of the merits of LinkedIn&#39; ]]></description>
        <link>https://nubela.co/blog/goodbye-proxycurl/</link>
        <guid isPermaLink="false">68677169b966d80001974e5b</guid>
        <category><![CDATA[ proxycurl ]]></category>
        <dc:creator><![CDATA[ Steven Goh | CEO ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2019/05/square.jpg"/>
        <pubDate>Fri, 04 Jul 2025 14:15:57 +0800</pubDate>
        <media:content url="" medium="image"/>
        <content:encoded><![CDATA[ <div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">💡</div><div class="kg-callout-text"><b><strong style="white-space: pre-wrap;">The team behind Proxycurl is now focused on </strong></b><a href="https://nubela.co/?ref=proxycurl" rel="noopener"><b><strong style="white-space: pre-wrap;">NinjaPear</strong></b></a>, a new data platform.</div></div><p>In January earlier this year (2025), LinkedIn filed a lawsuit against Proxycurl. Today, we are shutting Proxycurl down. <strong>The team is now focused on </strong><a href="https://nubela.co/?ref=proxycurl" rel="noopener"><strong>NinjaPear</strong></a>, a Competitive Intelligence Data company. Regardless of the merits of LinkedIn's lawsuit, there is no winning in fighting this. This is due to two reasons:</p><ul><li><a href="https://en.wikipedia.org/wiki/American_rule_(attorney's_fees)?ref=nubela.co" rel="noreferrer"><strong>The American Rule</strong></a><strong>,</strong> which means that even if we were to win the lawsuit, we would not be able to claim legal fees.</li><li><strong>LinkedIn,</strong> owned by Microsoft, has more or less an unlimited war chest.</li></ul><p>If I were sappy and any less of an optimist than I am, I'd be dismissive of the fact that LinkedIn had to resort to lawfare to shut us down. Instead, I have now learned a lesson: if I were to build a great and big business, lawfare had better be one of the weapons in my arsenal. And I had better build a business big and fast, so that LinkedIn (or any other huge incumbent competitor) would think twice before suing me, especially if a harmful legal precedent might be made against a defendant with means (like Apollo).</p><p>This is my biggest mistake with Proxycurl—that I chose to grow it organically.</p><p>This is not a sudden closure. Over the past few weeks/months, I have been assisting our existing customers with deboarding Proxycurl as best as I can. If you are an existing customer, please reach out to <a href="mailto:hello@nubela.co">hello@nubela.co</a> and we'll see how I can assist you further.</p><p>I built Proxycurl around two core principles:</p><ul><li><strong>Giving a fuck about the customer.</strong> I'm not sure if it shows, but I made sure that all support emails were replied to properly, within a reasonable time. I also made sure to read all emails, whether sent by our sales reps or our customer support reps. Most, if not all, emails that involved customers had me CC-ed.</li><li><strong>A product for developers, by developers.</strong> This meant backward compatibility, great documentation, clear and transparent pricing, great API error messages, and most importantly, uptime.</li></ul><p>I think this is how we were able to grow Proxycurl to a ~$10M revenue business before we had to shut it down to comply with the legal settlement with LinkedIn.</p><p>All good things come to an end. I have to be honest, this is refreshing. I haven't had a break since I graduated from university some 12 years ago. I continue to retain my work email and this domain.</p><p>Thank you for your support and for giving Proxycurl a chance. I did my best, and this will not be the last you hear from me. I continue to be of service to you. If there is anything I can do to help, feel free to send an email to <a href="mailto:hello@nubela.co">hello@nubela.co</a>.</p> ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ The Ultimate Guide to the Professional Social Network API: People Profile API (with Python Example) ]]></title>
        <description><![CDATA[ In this first chapter of the &quot;Ultimate Guide to the Professional Social Network API&quot; series, my goal is to get your product integrated with Professional Social Network API without the need to be approved as a Professional Social Network Partner.

This guide is intended for software engineers comfortable ]]></description>
        <link>https://nubela.co/blog/old-the-ultimate-guide-to-the-linkedin-api-people-profile-api-with-python-example/</link>
        <guid isPermaLink="false">65601a72d6eb9000013bfa09</guid>
        <category><![CDATA[ profile api ]]></category>
        <dc:creator><![CDATA[ Steven Goh | CEO ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2019/05/square.jpg"/>
        <pubDate>Sat, 28 Jun 2025 17:31:14 +0800</pubDate>
        <media:content url="" medium="image"/>
        <content:encoded><![CDATA[ <p>In this first chapter of the "Ultimate Guide to the Professional Social Network API" series, my goal is to get your product integrated with Professional Social Network API without the need to be approved as a Professional Social Network Partner.</p><p>This guide is intended for software engineers comfortable making API calls who would like to short-circuit the business problems that come with the official Professional Social Network API and to get productive immediately.</p><h2 id="what-professional-social-network-apis-exist">What Professional Social Network APIs exist?</h2><p>Professional Social Network is a powerful professional social network. It's a treasure trove of data for professionals and job listings, data that a <a href="https://nubela.co/proxycurl/solutions/hr-tech?ref=nubela.co">recruitment tech startup</a> or a <a href="https://nubela.co/proxycurl/solutions/sales-marketing-automation-api?ref=nubela.co">sales automation product</a> would love to integrate into their offering. Professional Social Network is aware of this value and have <a href="https://developer.professionalsocialnetwork.com/blog/posts/2015/todays-changes?ref=nubela.co">turned off public access to their API since 2015</a>. To gain access to the official Professional Social Network API, you would need to be a Professional Social Network Partner.</p><h3 id="getting-approved-as-a-professional-social-network-partner">Getting approved as a Professional Social Network Partner</h3><p>The Professional Social Network Partner Program is open to four segments of businesses, namely:</p><ol><li>Talent Solutions, for HR tech companies</li><li>Marketing Solutions, for marketing automation companies</li><li>Sales Navigator Application Development, for startups looking to enhance Professional Social Network Sales Navigator</li><li>Professional Social Network Learning Integration, for content companies</li></ol><p>I understand that it is a long and laborious process to get a company approved as a Professional Social Network Partner. Your best bet is to pick the category that best fits your company's offering and apply to be a Professional Social Network Partner.</p><p>Most of the cool Professional Social Network API features also require a paid subscription to Professional Social Network Developer Enterprise Products.</p><h3 id="using-an-unofficial-professional-social-network-api-without-being-a-professional-social-network-partner">Using an unofficial Professional Social Network API without being a Professional Social Network Partner</h3><p>It makes business sense for Professional Social Network to be selective in picking partners because why should they give away their data? The chances are that most companies that apply <strong>will not be approved as a Professional Social Network Partner</strong>.</p><p>Thankfully, you can achieve the same effects of Professional Social Network API with <a href="https://nubela.co/proxycurl/Professional%20Social%20Network?ref=nubela.co">Proxycurl's Professional Social Network API</a>. Even better, Proxycurl's Professional Social Network API has a <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#overview-rate-limit">generous rate limit of 300 requests per minute</a>, and you can get an API key immediately.</p><p>In the rest of this guide, we will go over two code examples: </p><ol><li>One with the official Professional Social Network API.</li><li>One using Proxycurl's Professional Social Network API, designed for developers in your situation.</li></ol><p>While you are waiting to be approved (or not) as Professional Social Network Partner, <a href="https://nubela.co/proxycurl/auth/login?ref=nubela.co">do head over to Proxycurl and get yourself a trial API key</a> so you can get started immediately.</p><h2 id="get-started-with-professional-social-network-consumer-solutions-platform-csp">Get Started With<em> Professional Social Network Consumer Solutions Platform (CSP)</em></h2><p>Most companies will want to start with Professional Social Network's Consumer Solutions Platform (CSP). When you think of Professional Social Network, you are thinking of the rich and bountiful profiles. And the CSP is how you can access these juicy profiles.</p><p>There are only two features of the CSP that allow you to exfiltrate data out of Professional Social Network:</p><ol><li><code>Sign In with Professional Social Network</code> provides the authentication layer to your product by letting users sign in with their professional Professional Social Network profile.</li><li><code>Profile API</code> returns structured data of a profile programmatically.</li></ol><h3 id="sign-in-with-professional-social-network">Sign In with Professional Social Network</h3><p><em>Sign In with Professional Social Network</em> is an OAuth provider for your application. Most people assume that if you use <em>Sign In with Professional Social Network</em>, Professional Social Network will tell you every user's Professional Social Network profile. It turns out that they do not. What can be returned are:</p><ol><li>First/Last name</li><li>Email address</li><li>Profile picture</li></ol><p>Also, there is a rate limit of <code>500</code> requests per day.</p><p>In my opinion, <em>Sign In with Professional Social Network</em> serves very little utility for most applications because the key data you want to extract is the user's Professional Social Network profile and not generic information.</p><p>Proxycurl is currently looking into replicating an alternative to <em>Sign In with Professional Social Network</em>. An alternative that serves similarly as an authentication layer will provide the user's identity in the form of structured data from their Professional Social Network profile.</p><p>In the meantime, do <a href="https://sendy.nubela.co/subscription?f=YI47f4TeTuhdFoSrZ763iI5gnFtkM1892fYkWD4WQBr28jBkqkCoOcaUummVfjrHTdJMswah3Df7630TYW46gSDXzPUw&ref=nubela.co">subscribe to our mailing list</a> so we can send you an update when we have a replacement for <em>Sign In with Professional Social Network</em>.</p><h2 id="people-api">People API</h2><p>The <a href="https://nubela.co/proxycurl/Professional%20Social%20Network?ref=nubela.co">People API</a> is the meat of this chapter.</p><p>To orient you to the People API, we will start with this problem:</p><blockquote>Given a profile ID, how can I get structured data of this profile into my application?</blockquote><h2 id="fetch-profile-data-via-the-official-professional-social-network-profile-api">Fetch profile data via the o<em>fficial Professional Social Network Profile API</em></h2><p>There are two ways to fetch the data of a profile via the official Professional Social Network API:</p><ol><li>The first method is free and available for most developers. The caveat is that you have to <strong>get permission from each profile</strong> you wish to extract into your application.</li><li>The second method is available only for <strong>approved developers on a paid subscription</strong> to Professional Social Network's Consumer Solution Platform. It allows you to fetch profile data from any profile ID.</li></ol><h3 id="seeking-permission-and-getting-structured-data-profile-from-a-user">Seeking permission and getting structured data profile from a user</h3><p>The first method requires you, the developer, to seek permission from the user that owns the profile. To do that, Professional Social Network requires you to fetch an access_token via 3-legged OAuth, a fancy term to describe a two-step process to get an access token.</p><p><strong>Step 0</strong>: Get a CLIENT_ID and CLIENT_SECRET by creating an app at the <em>Professional Social Network Developers</em> page. (You can Google the link for this page)</p><p><strong>Step 1</strong>: To get permission from a user, you will generate an authorization URL to send your user to Professional Social Network so they can permit your application to download their profile.</p><p>In this case, you must provide a REDIRECT_URI, the web page for which Professional Social Network will send the user back after they have finished granting the permission.</p><pre><code class="language-python">def generate_authorization_url():
    """
    Generate an authorization URL for a user to give permission to extract their Professional Social Network Profile.

    The genereated URL will take the user to a Professional Social Network page where the user will be asked to give explicit
    permission to share their profile with you (the application creator).

    Should the user agree, they will be redirected to `Professional Social Network_REDIRECT_URI`.
    In the redirect, two fields will appear in the URL parameter, namely `code` and `state`.

    * `state` is generated below using `secrets.token_hex(8).upper()`. This is as a form of identifier for this user.
    * `code` is the authorization_code, and can be used in `get_access_token()` to exchange for an `access_token`.

    """
    LI_AUTH_URL = 'https://www.professionalsocialnetwork.com/oauth/v2/authorization'
    url = requests.Request('GET', LI_AUTH_URL,
                           params={
                               'response_type': 'code',
                               'client_id': Professional Social Network_CLIENT_ID,
                               'redirect_uri': Professional Social Network_REDIRECT_URI,
                               'state': secrets.token_hex(8).upper(),
                               'scope': '%20'.join(['r_liteprofile', 'r_emailaddress', 'w_member_social']),
                           }).prepare().url
    return url
</code></pre>
<p><strong>Step 2</strong>: You get an authorization code when a user permits you to access their profile. With this code, you will exchange it for an access_token to access the user's profile.</p><pre><code class="language-python">def get_access_token(authorization_code):
    """
    Given a authorization `code`, this function will return you `access_token` which can then be used to access a user's Professional Social Network profile.
    """
    LI_ACCESS_TOKEN_EXCHANGE_URL = 'https://www.professionalsocialnetwork.com/oauth/v2/accessToken'
    access_token = requests.post(LI_ACCESS_TOKEN_EXCHANGE_URL, params={
        'grant_type': 'authorization_code',
        'code': authorization_code,
        'redirect_uri': Professional Social Network_REDIRECT_URI,
        'client_id': Professional Social Network_CLIENT_ID,
        'client_secret': Professional Social Network_CLIENT_SECRET,
    }).json()['access_token']
    return access_token
</code></pre>
<p><strong>Step 3</strong>: Fetch the user's profile.</p><pre><code class="language-python">def get_profile(access_token):
    """
    Fetches the profile of a Professional Social Network user who has given you their permission to view their profile
    """
    LI_PROFILE_API_ENDPOINT = 'https://api.professionalsocialnetwork.com/v2/me'
    r = requests.get(LI_PROFILE_API_ENDPOINT, headers={
                     'Authorization': 'Bearer ' + access_token})
    return r.json()
</code></pre>
<p>The working Python code for this method can be found <a href="https://github.com/nubelaco/Professional%20Social%20Network-api-python3-examples/blob/master/Professional%20Social%20Network_api_method_1.py?ref=nubela.co">on in our Professional Social Network-api-python3-examples GitHub repository</a>.</p><h3 id="querying-a-profile-from-any-profile-id">Querying a profile from any profile ID</h3><p>The second method does not require you to seek permission from the user. But your application must be approved to use the People's Profile API endpoint with a 2-legged OAuth.</p><p><strong>Step 0</strong>: In your pre-approved Professional Social Network App, get the CLIENT_ID and CLIENT_SECRET fields.</p><p><strong>Step 1</strong>: Using your application's CLIENT_ID and CLIENT_SECRET, exchange for access_token.</p><pre><code class="language-python">def get_access_token():
    """
    If you are

    1. an approved Professional Social Network developer
    2. on a paid subscription to their Consumer Product

    You can use this function to fetch an `access_token` to access the API.
    """
    LI_ACCESS_TOKEN_EXCHANGE_URL = 'https://www.professionalsocialnetwork.com/oauth/v2/accessToken'
    access_token = requests.post(LI_ACCESS_TOKEN_EXCHANGE_URL, params={
        'grant_type': 'client_credentials',
        'client_id': Professional Social Network_CLIENT_ID,
        'client_secret': Professional Social Network_CLIENT_SECRET,
    }).json()['access_token']
    return access_token</code></pre><p><strong>Step 2</strong>: Fetch any profile with profile_id</p><pre><code class="language-python">def get_profile(access_token, profile_id):
    """
    Given an `access_token`, fetch structured data of any profile.
    """
    LI_PROFILE_API_ENDPOINT = f'https://api.professionalsocialnetwork.com/v2/people/{profile_id}'
    r = requests.get(LI_PROFILE_API_ENDPOINT, headers={
                     'Authorization': 'Bearer ' + access_token,
                     'X-RestLi-Protocol-Version': '2.0.0'})
    return r.json()</code></pre><p>The working Python code for this method can be found <a href="https://github.com/nubelaco/Professional%20Social%20Network-api-python3-examples/blob/master/Professional%20Social%20Network_api_method_2.py?ref=nubela.co">in our Professional Social Network-api-python3-examples GitHub repository</a>.</p><h2 id="fetch-profile-data-via-proxycurls-professional-social-network-profile-api-endpoint">Fetch profile data via <em>Proxycurl's Professional Social Network Profile API Endpoint</em></h2><p>It is bothersome jumping through the hoops for Professional Social Network's API. For the rest of us, there is Proxycurl, which provides their Professional Social Network API so that you can get everything that Professional Social Network's official Profile API offers, and a <strong>whole lot more</strong>. Check out <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#people-api-person-profile-endpoint">Proxycurl's Person Profile API documentation</a> to see what data fields are supported.</p><p>There's just one method to get profile data from any profile ID.</p><p><strong>Step 0</strong>: <a href="https://nubela.co/proxycurl/auth/login?ref=nubela.co">Get a Proxycurl API key</a> by signing into Proxycurl with your work email address. </p><p><strong>Step 1</strong>: Query the Profile API endpoint with profile_id</p><pre><code class="language-python">import requests

PROXYCURL_API_KEY = ''  # todo - fill this field up


def get_profile(profile_id):
    api_endpoint = 'https://nubela.co/proxycurl/api/v2/Professional Social Network'
    header_dic = {'Authorization': 'Bearer ' + PROXYCURL_API_KEY}
    params = {
        'url': f'https://www.professionalsocialnetwork.com/in/{profile_id}',
    }
    response = requests.get(api_endpoint,
                            params=params,
                            headers=header_dic)
    return response.json()</code></pre><p>The working Python code for this method can be found <a href="https://github.com/nubelaco/Professional%20Social%20Network-api-python3-examples/blob/master/proxycurl_people_profile_api_endpoint.py?ref=nubela.co">in our Professional Social Network-api-python3-examples Github repository</a>.</p><h2 id="summarizing-the-state-of-the-professional-social-network-profile-api">Summarizing the state of the Professional Social Network Profile API</h2><p>Professional Social Network has made it <strong>extremely difficult</strong> for developers to integrate Professional Social Network Profile export into their system. The Profile API that is free and requires little approval is throttled with rate limits and explicit and cumbersome per-user permission granting. The Profile API with 2-legged OAuth that lets you query any profile ID requires explicit approvals and a hefty amount of money to be paid via a Professional Social Network subscription.</p><p>Proxycurl offers an unbridled equivalent to Professional Social Network's Profile API. The key difference lies in latency. Proxycurl's People Profile API Endpoint performs a live scrape of a profile on each API call, so each call might take a few seconds to complete. To overcome throughput, a developer can launch requests to Proxycurl's API in parallel.</p><p>Did you know that when a user signs in with Professional Social Network, the application developer does not get the user's Professional Social Network profile? In the next update, we will discuss the <em>Sign In with Professional Social Network</em> feature and how you might use Proxycurl's equivalent solution to sign in with Professional Social Network and get the user's Professional Social Network profile back.</p><p>I want to tell you when I post my next follow-up article to Professional Social Network API. <a href="https://sendy.nubela.co/subscription?f=YI47f4TeTuhdFoSrZ763iI5gnFtkM1892fYkWD4WQBr28jBkqkCoOcaUummVfjrHTdJMswah3Df7630TYW46gSDXzPUw&ref=nubela.co">Subscribe to our mailing list</a> so I can ping you when it is ready!</p> ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ Top 5 Professional Social Network Scrapers in 2023 - Detailed Reviews with Ratings ]]></title>
        <description><![CDATA[ 💡Old post - republished with new content

You are probably reading this article because you are seeking a solution to fetch fresh Professional Social Network profile data at scale. In this article, I&#39;ll introduce and provide a cursory review of the top 5 Professional Social Network scraping API ]]></description>
        <link>https://nubela.co/blog/top-5-linkedin-scrapers-in-2023-detailed-reviews-with-ratings/</link>
        <guid isPermaLink="false">6549e010eb400500015ac4d0</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Steven Goh | CEO ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2019/05/square.jpg"/>
        <pubDate>Sat, 28 Jun 2025 17:31:14 +0800</pubDate>
        <media:content url="" medium="image"/>
        <content:encoded><![CDATA[ <div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">💡</div><div class="kg-callout-text">Old post - republished with new content</div></div><p>You are probably reading this article because you are seeking a solution to fetch fresh Professional Social Network profile data at scale. In this article, I'll introduce and provide a cursory review of the top 5 Professional Social Network scraping API services to help your comparison. For each Professional Social Network Scraper Tool, I will also link you to a detailed review of the service.</p>
<h2 id="challenges-of-scraping-professional-social-network-at-scale">Challenges of scraping Professional Social Network at scale</h2>
<p>Scraping Professional Social Network at scale is hard. And for most people, you do not want to do it yourself.</p>
<p>For one, you might want to outsource the risks of scraping Professional Social Network profiles. What risks? Well, we do know that with the [hiQ Labs VS Professional Social Network case](<a href="https://nubela.co/blog/is-Professional">https://nubela.co/blog/is-Professional</a> Social Network-scraping-legal/), scraping publicly accessible Professional Social Network profiles is considered legal. But from the [Mantheos Pte Ltd VS Professional Social Network Corp](<a href="https://nubela.co/blog/what-you-should-know-now-that-mantheos-a-Professional">https://nubela.co/blog/what-you-should-know-now-that-mantheos-a-Professional</a> Social Network-scraping-service-is-sued-by-Professional Social Network/) case, we learned that scraping <strong>private</strong> Professional Social Network profiles would put you in an unsafe situation.</p>
<p>Another reason you might be seeking a Professional Social Network scraping service is that scraping Professional Social Network is <strong>hard</strong>, and you want the data <strong>soon</strong>. In fact, for most people, you do not want to be building a Professional Social Network scraper unless your time is cheap. There are two primary ways you could go the DIY route. First, there is an illegal way of scraping Professional Social Network profiles with a Professional Social Network account. Ignoring that it is not legal, you must bypass Recaptchas, implement a daily rate limit, parse raw API data, etc. Then there are publicly accessible Professional Social Network profiles which are shown to search engines for indexing. First, you must figure out a method to fetch a publicly accessible Professional Social Network profile consistently without being stopped by a Professional Social Network authwall. Then you perform tests to verify that the method scales beyond ten profiles within a reasonable time. After that, you have to parse the data yourself.</p>
<p>So it's not easy. And here's the best part: Professional Social Network is a moving target. That means whatever scraper you have built today might not work tomorrow. Do you want to maintain a Professional Social Network scraper in perpetuity? Probably not.</p>
<p>Here are the top 5 Professional Social Network Scraper API services that I will be reviewing today. Hopefully, one of them might be useful to you:</p>
<ul>
<li>BrightData</li>
<li>Proxycurl</li>
<li>CoreSignal</li>
<li>People Data Labs</li>
<li>PhantomBuster</li>
</ul>
<h2 id="reviews-of-the-top-5-professional-social-network-scraper-api-tools">Reviews Of The Top 5 Professional Social Network Scraper API Tools</h2>
<p>I will be judging these Professional Social Network Scrapers by the following attributes:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2023/11/Reviewing_the_Top_5_Professional Social Network_Scraping_API_Services_copy.png" class="kg-image" alt="7 key attributes of a great Professional Social Network Scraper Tool" loading="lazy" width="2048" height="1040"><figcaption><span style="white-space: pre-wrap;">7 key attributes of a great Professional Social Network Scraper Tool</span></figcaption></figure><ul>
<li><strong>Freshness of data</strong> is self-explanatory.</li>
<li><strong>Richness of data</strong> refers to the vastness of data points that will be returned to you.</li>
<li><strong>Scalability</strong> refers to how many profiles you can scrape, and how fast your queries run.</li>
<li><strong>Pricing</strong> refers to the cost per profile.</li>
<li><strong>Developer friendliness</strong> refers to the ease with which a software engineer can use the service.</li>
<li><strong>Stability</strong> refers to how stable the service has been over the years.</li>
<li><strong>Compliance</strong> refers to the legal work done to ensure that the data you fetch from the service is legally compliant.</li>
</ul>
<p>These are the findings:</p>
<table>
<thead>
<tr>
<th></th>
<th>BrightData</th>
<th>Proxycurl</th>
<th>CoreSignal</th>
<th>People Data Labs</th>
<th>PhantomBuster</th>
</tr>
</thead>
<tbody>
<tr>
<td>Freshness of data</td>
<td>⭐⭐⭐⭐⭐</td>
<td>⭐⭐⭐⭐</td>
<td>⭐⭐</td>
<td>⭐⭐</td>
<td>⭐⭐⭐⭐⭐</td>
</tr>
<tr>
<td>Richness of data</td>
<td>⭐⭐</td>
<td>⭐⭐⭐⭐</td>
<td>⭐⭐⭐⭐</td>
<td>⭐⭐⭐⭐⭐</td>
<td>⭐⭐⭐⭐</td>
</tr>
<tr>
<td>Scalability</td>
<td>⭐⭐⭐⭐</td>
<td>⭐⭐⭐⭐</td>
<td>⭐⭐⭐⭐⭐</td>
<td>⭐⭐⭐⭐⭐</td>
<td>⭐</td>
</tr>
<tr>
<td>Pricing</td>
<td>⭐⭐⭐</td>
<td>⭐⭐⭐⭐⭐</td>
<td>⭐⭐</td>
<td>⭐</td>
<td>⭐⭐⭐</td>
</tr>
<tr>
<td>Developer Friendliness</td>
<td>⭐⭐⭐⭐</td>
<td>⭐⭐⭐⭐</td>
<td>⭐</td>
<td>⭐⭐⭐</td>
<td>⭐⭐</td>
</tr>
<tr>
<td>Stability</td>
<td>⭐</td>
<td>⭐⭐⭐⭐</td>
<td>⭐⭐⭐</td>
<td>⭐⭐⭐</td>
<td>⭐</td>
</tr>
<tr>
<td>Compliance</td>
<td>⭐⭐⭐⭐⭐</td>
<td>⭐⭐⭐⭐</td>
<td>⭐⭐</td>
<td>⭐⭐</td>
<td>⭐</td>
</tr>
<tr>
<td>Average rating</td>
<td><code>3.42/5</code></td>
<td><code>4.14/5</code></td>
<td><code>2.71/5</code></td>
<td><code>3/5</code></td>
<td><code>2.42/5</code></td>
</tr>
</tbody>
</table>
<p>Now, let's go into the individual reviews.</p>
<h3 id="1-brightdata-3425-%E2%AD%90%E2%AD%90%E2%AD%90">1. BrightData (3.42/5) ⭐⭐⭐</h3>
<p>Bright Data's core business is in renting residential IP addresses. Bright Data figured they could charge more if they built a web crawler service on top of their network of residential IP addresses. And that is precisely what they did with their Data Collector product which features a Professional Social Network Scraper. Bright Data's Professional Social Network Scraper is priced at $0.05 / Professional Social Network profile. Bright Data requires a subscription plan.</p>
<p><strong>Pros</strong></p>
<ul>
<li>Bright Data has a community-maintained scraper. That means you do not have to worry about parsing HTML data. And you can get structured data from Professional Social Network profiles directly.</li>
<li>The prices are reasonable.</li>
<li>The company has been around for years and is legally compliant.</li>
</ul>
<p><strong>Cons</strong></p>
<ul>
<li>Bright Data has a community-maintained scraper. Because the parsing code relies on the goodwill of community contributions, if Professional Social Network changes anything on their site, customers will need to await the community to keep the scraper up to date.</li>
<li>Has an 80% success rate per API call.</li>
</ul>
<p>For a deeper dive into BrightData, see [our in-depth review on Bright Data's Professional Social Network Profile Scraper](<a href="https://nubela.co/blog/proxycurl-api-vs-brightdatas-Professional">https://nubela.co/blog/proxycurl-api-vs-brightdatas-Professional</a> Social Network-profile-scraper/).</p>
<h3 id="2-proxycurl-4145-%E2%AD%90%E2%AD%90%E2%AD%90%E2%AD%90">2. Proxycurl (4.14/5) ⭐⭐⭐⭐</h3>
<p>Proxycurl provides an enrichment API for people and companies. Their API is well-maintained and has comprehensive API documentation.</p>
<p><strong>Pros</strong></p>
<ul>
<li>Manages multiple methods to scrape Professional Social Network profiles.</li>
<li>Has been around since 2014.</li>
<li>Enriches Professional Social Network profiles with data from external sources.</li>
<li>Fair cost of $0.009 / profile (depending on which subscription plan you are on).</li>
</ul>
<p><strong>Cons</strong></p>
<ul>
<li>Rate limit of 300 requests/minute.</li>
<li><a href="https://nubela.co/blog/how-fresh-are-profiles-returned-by-proxycurl-api/">Caches profiles for up to 29 days.</a></li>
</ul>
<p>Proxycurl focuses on powering products centred around fresh data on people and businesses. Given that it works with large Enterprise customers, It understands the need to stay compliant and stable. Most of the work under the hood is in keeping the service stable as it seeks to be a plumbing infrastructure for companies to fetch fresh data without building a dedicated scraping team.</p>
<p>Proxycurl's API is fast and reliable, and it's well-documented. You will come to Proxycurl for its Professional Social Network scraping service but end up staying for every other API endpoint, such as its <a href="https://nubela.co/proxycurl/email-lookup?ref=nubela.co">Work Email Lookup Endpoint</a> which will fetch verified work email profiles from any Professional Social Network profiles.</p>
<h3 id="3-coresignal-35-%E2%AD%90%E2%AD%90%E2%AD%90">3. CoreSignal (3/5) ⭐⭐⭐</h3>
<p>CoreSignal's core product is its bulk datasets.</p>
<p>CoreSignal's real-time API does not scrape Professional Social Network profiles in real-time. What it offers is an API service that reads their database and returns cached profiles.</p>
<p><strong>Pros</strong></p>
<ul>
<li>Has a dataset that is bigger and richer (For example, CoreSignal has 91M Company Profiles VS Professional Social Network's 17M Company Profiles)</li>
</ul>
<p><strong>Cons</strong></p>
<ul>
<li>Does not scrape Professional Social Network profiles live. Real-time API reads their database.</li>
<li>Stale data (3-4 months old)</li>
</ul>
<p>For a deeper dive, see [our in-depth review on CoreSignal Professional Social Network data scraper](<a href="https://nubela.co/blog/proxycurl-api-vs-brightdatas-Professional">https://nubela.co/blog/proxycurl-api-vs-brightdatas-Professional</a> Social Network-profile-scraper/).</p>
<h3 id="4-people-data-labs-255-%E2%AD%90%E2%AD%90">4. People Data Labs (2.5/5) ⭐⭐</h3>
<p>Let's get it out of the way. People Data Labs (PDL) does not scrape Professional Social Network profiles. They also do not offer a service that scrapes Professional Social Network profiles. People Data Labs is not a Professional Social Network scraping service. Their core business lies in buying and combining a myriad of datasets from data vendors, packaging them up in an API and upselling the data.</p>
<p><strong>Pros</strong></p>
<ul>
<li>Enrich profiles with extra data points such as personal emails and phone numbers</li>
<li>Has search functionality via API</li>
</ul>
<p><strong>Cons</strong></p>
<ul>
<li>Serves stale profile data</li>
</ul>
<p>For a deeper dive, see <a href="https://nubela.co/blog/proxycurl-vs-peopledatalabs-pdl/">our in-depth review on People Data Labs</a>.</p>
<h3 id="5-phantombuster-2425-%E2%AD%90%E2%AD%90">5. PhantomBuster (2.42/5) ⭐⭐</h3>
<p>PhantomBuster is a scraper tool that sits on top of your Professional Social Network account to scrape Professional Social Network profiles. In other words, to use PhantomBuster, you will need to provide Professional Social Network credentials (in the form of a cookie), so they can automate scraping on your account.</p>
<p>PhantomBuster works for small-scale Professional Social Network scraping for personal use cases. It works if you are an account executive, and you are looking to automate your Professional Social Network workflow by scraping your connections for a cold email campaign. Still, your account might get blocked because there is a maximum limit to the number of profiles that can be viewed daily.</p>
<p><strong>Pros</strong></p>
<ul>
<li>Scrapes private Professional Social Network profile (if you don't care about the legal liabilities)</li>
<li>Has UI to read-from/write-to spreadsheets</li>
<li>100% API success rate</li>
</ul>
<p><strong>Cons</strong></p>
<ul>
<li>Bring your own Professional Social Network account</li>
<li>At serious legal risk. See Mantheos's lawsuit</li>
<li>7 hours for 1000 profiles</li>
</ul>
<p>For a deeper dive, see <a href="https://nubela.co/blog/proxycurl-api-vs-coresignal/">our in-depth review on PhantomBuster Professional Social Network profile scraper</a>.</p>
<h2 id="best-professional-social-network-scraping-tools-your-pick">Best Professional Social Network scraping tools? Your pick</h2>
<p>You can probably figure out my opinion based on these ratings. What's your own verdict after reading through the reviews? These Professional Social Network data scrapers might seem like the same on the surface, but digging deeper, you'll see the vast differences in how they work. This is where you need to decide what works best for your unique company's use cases, and take a pick from this list.</p>
 ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ How can I retrieve a list of all employees within a company through the Professional Social Network API? ]]></title>
        <description><![CDATA[ In this post, we&#39;re going to answer a StackOverflow question. You can still [view the original question on StackOverflow](https://stackoverflow.com/questions/55246288/how-can-i-retrieve-a-list-of-all-employees-within-a-company-through-the-Professional Social Network), but we&#39;ll provide the text of the question below also. Or you can skip below to our answer.





Years ]]></description>
        <link>https://nubela.co/blog/old-how-can-i-retrieve-a-list-of-all-employees-within-a-company-through-the-linkedin-api/</link>
        <guid isPermaLink="false">65bc6ca386ccd600018f3c47</guid>
        <category><![CDATA[ proxycurl ]]></category>
        <dc:creator><![CDATA[ Steven Goh | CEO ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2019/05/square.jpg"/>
        <pubDate>Sat, 28 Jun 2025 17:31:13 +0800</pubDate>
        <media:content url="" medium="image"/>
        <content:encoded><![CDATA[ <p>In this post, we're going to answer a StackOverflow question. You can still [view the original question on StackOverflow](<a href="https://stackoverflow.com/questions/55246288/how-can-i-retrieve-a-list-of-all-employees-within-a-company-through-the-Professional?ref=nubela.co">https://stackoverflow.com/questions/55246288/how-can-i-retrieve-a-list-of-all-employees-within-a-company-through-the-Professional</a> Social Network), but we'll provide the text of the question below also. Or you can skip below to <a href="#ouranswer">our answer</a>.</p>
<blockquote>
<p><em>Years ago, someone asked...if it were possible to retrieve a list of all employees who work at a company. I can do this through the Professional Social Network UI, but I cannot seem to find any mechanism for this using the v2 API. The SO response mentions this used to be possible on the v1 API, but you had to request access through Professional Social Network's "Vetted API Access Program." Unfortunately, the link on this response is now obsolete and does not send users to any such program.</em><br>
<em>How could I apply for this program nowadays? This is a specific situation to me and my company, so I would very much like to discuss this with someone at Professional Social Network if some form of this Vetted API Access Program still exists. I do not wish to disclose the details of this request to the open internet.</em></p>
</blockquote>
<h2 id="our-answer">Our answer</h2>
<p>You can get a list of employees of a company in two ways:</p>
<ul>
<li>If you scrape Professional Social Network profiles exhaustively</li>
<li>If you already have an exhaustive dataset of Professional Social Network profiles.</li>
</ul>
<p>Each Professional Social Network profile contains a list of "experiences," each of which links to a company profile URL. So once you have a data set, the process to create your list consists of two steps:</p>
<ol>
<li>Parse the profiles into JSON so you can easily filter them</li>
<li>Filter the parsed profiles based on who currently works at a particular company. Now you have your list of current employees!
<ul>
<li>You can instead filter based on "past" experiences (i.e. those with an end date) to find past, or even all, employees)</li>
</ul>
</li>
</ol>
<p>And that is exactly what we did. We scraped all public Professional Social Network profiles based in several countries, including the United States, Singapore, and Canada; and we made an alternative API known as the <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#company-api-employee-listing-endpoint">Proxycurl Employee Listing API</a>, which provides employee listing functionality.</p>
<h3 id="code-sample">Code sample</h3>
<p>There are three prerequisites to run this code (assuming you have Python installed and set up already):</p>
<ol>
<li>Create a <a href="https://nubela.co/proxycurl/?ref=nubela.co">Proxycurl account</a>.</li>
<li>Go to your <a href="https://nubela.co/proxycurl/dashboard?ref=nubela.co">Proxycurl dashboard</a> and find your API key.</li>
<li>Create an environment variable called <code>PROXYCURL_API_KEY</code> set to your API key.</li>
</ol>
<p>That's it! Here's the code in which we'll list 3 current employees of Apple. You can run this with your trial credits:</p>
<pre><code class="language-python">import json, os, requests
api_key = os.environ['PROXYCURL_API_KEY']
headers = {'Authorization': 'Bearer ' + api_key}

api_endpoint = 'https://nubela.co/proxycurl/api/Professional Social Network/company/employees/'
params = {
    'url': 'https://www.professionalsocialnetwork.com/company/apple/',
    'page_size': '3',  # set your page_size as desired
}
response = requests.get(api_endpoint, params=params, headers=headers)
result = response.json()
print(json.dumps(result, indent=2))
</code></pre>
<p>Our API will never be as exhaustive as Professional Social Network's dataset because not all profiles are made public, but most are - enough to meet your needs, and certainly better than the "nothing at all" that Professional Social Network themselves offer. <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#company-api-employee-listing-endpoint">Check it out</a> and see for yourself!</p>
<h3 id="bonus-code-sample">Bonus code sample</h3>
<p>Excited about what Proxycurl's <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#company-api-employee-listing-endpoint">Employee Listing Endpoint</a> can do? <a href="https://nubela.co/proxycurl/dashboard/billing/buy-credits?ref=nubela.co">Make a top-up with some credits now</a>, and we can retrieve a list of employees <strong>in order of when they joined</strong>.</p>
<p>For up-to-date pricing of the <code>sort_by</code> parameter, please see <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#company-api-employee-listing-endpoint">our documentation</a>, as it is significantly more expensive than the unsorted version. Set the limit accordingly, and optionally include the parameter <code>role_search</code> as well.</p>
<pre><code class="language-python">import json, os, requests
api_key = os.environ['PROXYCURL_API_KEY']
headers = {'Authorization': 'Bearer ' + api_key}

api_endpoint = 'https://nubela.co/proxycurl/api/Professional Social Network/company/employees/'
params = {
    'url': 'https://www.professionalsocialnetwork.com/company/apple/',
    'sort_by': 'recently-joined',
    'page_size': '3',  # set your page_size as desired
}
response = requests.get(api_endpoint, params=params, headers=headers)
result = response.json()
print(json.dumps(result, indent=2))
</code></pre>
 ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ The 10 Best Professional Social Network Automation Tools for Lead Generation ]]></title>
        <description><![CDATA[ From saving valuable time to enhancing outreach and engagement, Professional Social Network automation tools are not just about automating processes; they&#39;re about transforming your Professional Social Network strategy into a more productive and effective mechanism for generating quality leads. ]]></description>
        <link>https://nubela.co/blog/the-10-best-linkedin-automation-tools-for-lead-generation/</link>
        <guid isPermaLink="false">659da65de44b0e0001f4ce0c</guid>
        <category><![CDATA[ lead generation ]]></category>
        <dc:creator><![CDATA[ Colton Randolph | Technical Writer ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2023/08/cr.jpg"/>
        <pubDate>Sat, 28 Jun 2025 17:31:13 +0800</pubDate>
        <media:content url="" medium="image"/>
        <content:encoded><![CDATA[ <p>Professional Social Network, with its vast network of over 1 billion professionals, stands as a goldmine for lead generation and business networking.</p>
<p>However, tapping into this potential manually can be time-consuming and less effective. This is where Professional Social Network automation tools come into play. In 2024, these tools have become indispensable for anyone looking to maximize their outreach and lead-generation efforts on Professional Social Network.</p>
<h1 id="the-role-of-professional-social-network-automation-tools">The role of Professional Social Network automation tools</h1>
<p>Professional Social Network Automation Tools are designed to streamline your networking and lead-generation process.</p>
<p>They help automate routine tasks such as sending connection requests, crafting follow-up messages, and managing outreach campaigns.</p>
<p>By leveraging these tools, businesses and professionals can save time, enhance personalization, and increase the efficiency of their Professional Social Network marketing and sales strategies.</p>
<h1 id="how-do-professional-social-network-automation-tools-work">How do Professional Social Network automation tools work?</h1>
<p>Professional Social Network automation tools function by replicating the actions you would normally perform manually on Professional Social Network.</p>
<p>From sending personalized connection requests to scheduling content. managing interactions, and beyond, Professional Social Network automation tools cover a broad spectrum of activities.</p>
<h1 id="in-the-case-of-professional-social-network-lead-generation-tools-though">In the case of Professional Social Network lead generation tools, though...</h1>
<p>Professional Social Network Lead Generation Tools are specifically designed to automate and optimize the process of identifying and acquiring potential clients or customers on Professional Social Network.</p>
<p>These tools go beyond general automation, focusing on strategies that directly contribute to lead generation, such as targeted outreach, lead scoring, and engagement tracking.</p>
<h1 id="how-professional-social-network-lead-generation-tools-can-help-your-outreach">How Professional Social Network lead generation tools can help your outreach</h1>
<h2 id="1-targeted-outreach">1) Targeted outreach</h2>
<p>Professional Social Network lead generation automation tools tools allow for the creation of personalized outreach campaigns.</p>
<p>They help in identifying potential leads based on industry, company size, job role, and other relevant factors, ensuring that your message reaches the right audience.</p>
<h2 id="2-automated-follow-ups">2) Automated follow-ups</h2>
<p>Keeping up with potential leads can be a daunting task.</p>
<p>Professional Social Network lead generation tools can automate follow-up messages, keeping the conversation going and increasing the chances of conversion.</p>
<h2 id="3-lead-scoring-and-prioritization">3) Lead scoring and prioritization</h2>
<p>By analyzing user interactions and engagement, Professional Social Network automation  tools can score leads, helping businesses prioritize their efforts on the most promising prospects.</p>
<h2 id="4-integration-with-crm">4) Integration with CRM</h2>
<p>Many Professional Social Network lead generation tools offer seamless integration with CRM systems, enabling businesses to manage their leads more effectively and align their Professional Social Network marketing strategies with broader sales goals.</p>
<h1 id="the-10-best-professional-social-network-lead-generation-tools">The 10 best Professional Social Network lead generation tools</h1>
<h2 id="1-proxycurl">1) Proxycurl</h2>
<h2 id="2-uplead">2) UpLead</h2>
<h2 id="3-replyio">3) Reply.io</h2>
<h2 id="4-dux-soup">4) Dux-Soup</h2>
<h2 id="5-evaboot">5) Evaboot</h2>
<h2 id="6-lusha">6) Lusha</h2>
<h2 id="7-phantombuster">7) PhantomBuster</h2>
<h2 id="8-waalaxy">8) Waalaxy</h2>
<h2 id="9-professional-social-network-scraper">9) Professional Social Network Scraper</h2>
<h2 id="10-meet-alfred">10) Meet Alfred</h2>
<h1 id="recapping-all-10-professional-social-network-automation-tools">Recapping all 10 Professional Social Network automation tools</h1>
<h1 id="the-best-lead-generation-tool-for-scalability">The best lead generation tool for scalability</h1>
<h1 id="the-simplest-lead-generation-tool">The simplest lead generation tool</h1>
<h1 id="conclusion">Conclusion</h1>
<h2 id=""></h2><h1 id="-1"></h1> ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ Does Proxycurl&#x27;s Professional Social Network API pull contact information from Professional Social Network Profiles? ]]></title>
        <description><![CDATA[ No, Proxycurl&#39;s Professional Social Network API only scrapes public Professional Social Network profiles. Contact information of profiles are not present on these public profile pages, so we are not able to provide that information as well.

However, we have announced an Email Extraction API endpoint that will allow ]]></description>
        <link>https://nubela.co/blog/does-proxycurls-linkedin-api-pull-contact-information-from-linkedin-profiles-2/</link>
        <guid isPermaLink="false">65faa8768cc97e0001c8a48b</guid>
        <category><![CDATA[ proxycurl ]]></category>
        <dc:creator><![CDATA[ Steven Goh | CEO ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2019/05/square.jpg"/>
        <pubDate>Sat, 28 Jun 2025 17:31:12 +0800</pubDate>
        <media:content url="" medium="image"/>
        <content:encoded><![CDATA[ <p>No, Proxycurl's Professional Social Network API only scrapes public Professional Social Network profiles. Contact information of profiles are not present on these public profile pages, so we are not able to provide that information as well.</p><p>However, we have announced an Email Extraction API endpoint that will allow you to retrieve work email addresses of Professional Social Network profiles. Check out our <a href="https://nubela.co/blog/Professional%20Social%20Network-profile-email-extraction-api-endpoint-is-coming-soon/">announcement blog post on the upcoming Email Extraction API endpoint for more information</a>.</p> ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ Introducing Accountgram (by the Proxycurl team) ]]></title>
        <description><![CDATA[ I&#39;m happy to share that the team behind Proxycurl is launching Accountgram today! Accountgram is a digital B2B debt collection service with a 32.5% success rate from 64 collections, and an average of 12 days to collection. Accountgram is the key that reduced our customer churn rate ]]></description>
        <link>https://nubela.co/blog/introducing-accountgram-by-the-proxycurl-team/</link>
        <guid isPermaLink="false">67c05533564af000015e9edb</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Steven Goh | CEO ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2019/05/square.jpg"/>
        <pubDate>Thu, 27 Feb 2025 20:08:46 +0800</pubDate>
        <media:content url="" medium="image"/>
        <content:encoded><![CDATA[ <p>I'm happy to share that the team behind Proxycurl is launching <a href="https://accountgram.com/?ref=nubela.co" rel="noreferrer">Accountgram</a> today! Accountgram is a digital B2B debt collection service with a 32.5%  success rate from 64 collections, and an average of 12 days to  collection. Accountgram is the key that reduced our customer churn rate  from 15% to 3%. We are able to accomplish this feat in Proxycurl by:</p><ol><li>Employing annual contracts (coupled with PAYG plans for casual/one-time use)</li><li>Enforcing contracts with Accountgram</li></ol><p>With dramatically lower churn, growth on Proxycurl compounded exponentially to the tune of 250% per year!</p><hr><p>Accountgram enforces B2B collections with teeth in two additional ways beyond dunning (aka nagging):</p><ol><li>Public debt database, which leads to reputational consequences</li><li>Data-driven escalation to employees and possible vendors</li></ol><hr><p>Here's the thing. As a business owner, we have to deal with bad  actors who breach long-term contracts on a whim. There is this  decade-old 10M ARR company that sought huge discounts from us, claiming  they hire a lot of Ukrainians affected by the war, and that they’re in  it for the long term. I relented and gave them big discounts because  they are big and surely would respect a contract, right?</p><p>Nope. They took our discounts, our data, built a prototype, decided  it wasn't going to work, and then proceeded to ghost me. This is just  one of many instances we have to deal with.</p><p>And it really grinds my gears because, for sums between $1 and  $10,000, there just aren't any scalable ways to enforce these breached  contracts. And these bad actors know! Our average sum to collect is $539 from customers who sign up for the 12-month plan with a monthly payment of $49, then block the card the next month after milking the discounted credits in the first month.</p><p>Small claims filing costs $850 in the Californian courts with the cheapest law firm. And nagging just does not work.</p><p>This is why we built Accountgram. There must be teeth in the  collection process. We read through the regulatory scriptures of B2B  debt collection in the US, and we employed every trick we can legally  deploy that is both scalable and ethical.</p><hr><p>If you have any bad debts at all, why not give <a href="https://accountgram.com/?ref=nubela.co" rel="noreferrer">Accountgram</a> a go? There are no upfront fees. We collect fees if and only if we successfully collect on your behalf.</p><p>If you have any bad debts, you can also email the invoices to collect@accountgram.com and we'll immediately begin the collection process on your behalf. If you have any questions about Accountgram, you can send me an email to <a href="mailto:collect@accountgram.com" rel="noreferrer">collect@accountgram.com</a> and I'll be sure to respond to you personally!</p> ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ Ultimate Guide to B2B Collections ]]></title>
        <description><![CDATA[ As the CEO of Accountgram, a B2B debt collection specialist with 92 collections under my belt since June 2024, I want to provide you with a no-nonsense breakdown of everything I know about B2B collections. I’ll also show you exclusive receipts from a collection made by Atradius, a €2. ]]></description>
        <link>https://nubela.co/blog/ultimate-guide-to-b2b-collections/</link>
        <guid isPermaLink="false">67bd91a3564af000015e9ece</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Steven Goh | CEO ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2019/05/square.jpg"/>
        <pubDate>Tue, 25 Feb 2025 17:48:22 +0800</pubDate>
        <media:content url="" medium="image"/>
        <content:encoded><![CDATA[ <p>As the CEO of <a href="https://accountgram.com/?ref=nubela.co" rel="noreferrer">Accountgram</a>, a B2B debt collection specialist with 92 collections under my belt since June 2024, I want to provide you with a no-nonsense breakdown of everything I know about B2B collections. I’ll also show you exclusive receipts from a collection made by Atradius, a €2.5B revenue debt collection company.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2025/02/Screenshot-2025-02-25-at-5.15.24-PM.png" class="kg-image" alt="" loading="lazy" width="1764" height="2544"><figcaption><span style="white-space: pre-wrap;">First demand letter from Atradius</span></figcaption></figure><p>Before I begin, let me clarify that this entire guide primarily applies to the US (though most of it can be applied to other countries) except in the EU due to GDPR regulations. Also, I'm going to assume that you are a new CFO in a growing company. If not, you’d already know this stuff, and you shouldn’t be taking advice from the CEO of a budding debt collection startup.</p><p>In my opinion, the B2B collection process is akin to a sales process where your job is:</p><ol><li>to understand why your debtor is not making payments</li><li>to make him/her understand how he/she will stand to lose if payment isn’t made</li></ol><p>Most B2B collections are stuck in step 1. Short of legal action, they never progress to step 2, which is why most debt collection companies fail to provide meaningful collection results. But let’s not jump ahead of ourselves. Let’s go back to basics:</p><h2 id="how-are-b2b-collections-done">How Are B2B Collections Done?</h2><p>At a high level, the B2B collection process (whether by 1st party or 3rd party) is usually conducted as follows:</p><ol><li><strong>Dunning</strong><ul><li>Send demand letter</li><li>Multiple avenues of contact, including phone calls, emails, or in-person visits</li></ul></li><li><strong>Negotiation</strong></li><li><strong>Escalation</strong></li></ol><p>Let’s dive deeper.</p><h3 id="dunning">Dunning</h3><p>This is how the first dunning email from a multi-billion-dollar revenue <em>Atradius</em> looks:</p><blockquote>Your reference : &lt;CENSORED&gt;<br>Case Number : &lt;CENSORED&gt;<br>Outstanding Amount : &lt;CENSORED&gt; USD<br>Re : &lt;CENSORED&gt;<br>Dear Sirs,<br>We have been advised by &lt;CREDITOR&gt; that the amount shown above is overdue for payment and have been instructed to collect this debt, which may also include interest and additional collection costs.<br>You will find enclosed a detailed statement of account. Please return the document to<br>us duly signed and sealed with the notice “debt acknowledged”.<br>We hereby demand payment of the full outstanding debt within 15 days following receipt<br>of this letter into ATRADIUS COLLECTIONS bank account 00050-042390-001-45-USD SWIFT<br>Code BNPASGSG BNP PARIBAS 20 COLLYER QUAY #01-01 049319 SINGAPORE, stating reference<br>number &lt;CENSORED&gt;.<br>If you prefer to pay by check, we instruct you to make the bank check(s) payable to<br>ATRADIUS COLLECTIONS.<br>To make payment we have created a personal account for you. Use this link and follow<br>the instructions to login and make payment.<br><a href="https://www.atradius.com/debtor/login.do?token=&ref=nubela.co">https://www.atradius.com/debtor/login.do?token=</a>&lt;CENSORED&gt;<br>We urge you to comply with our request in order to avoid any further costs or actions.<br><br>If payment has already been made, please inform us immediately.<br>Sincerely,<br><br>&lt;CENSORED&gt;   Atradius Collections Pte Ltd   Tel. : &lt;CENSORED&gt;   &lt;CENSORED&gt;@atradius.com</blockquote><p>This is how we do it:</p><blockquote>Hi &lt;DEBTOR&gt;,<br><br>I hope this email finds you well!<br><br>We have noticed that your payment <strong>failed</strong> for the <strong>Prorated cancellation fee for the 12-month contract (Nov 2024 – Jul 2025)</strong>, which amounts to <strong>$392</strong>. Would you like to fix this by making a payment?<br><br>If you need help with payment or have any questions at all, you can hit reply or email <a href="mailto:collection@accountgram.com">collection@accountgram.com</a>, and we will get back to you as soon as possible!</blockquote><hr><p>Dunning is a process used during B2B collection that involves systematically communicating with debtors through reminders to encourage them to settle outstanding debts. Personally, dunning is just a nicer way of saying <em>nagging</em>. The goal of dunning is to <em>get them to respond</em> and to understand why they are not paying.</p><p>Figure out where the customer is coming from—it could be a product/service problem, or they might be experiencing cashflow issues. In that case, you can either fix their issues or put them on a custom payment plan. These are the lowest-hanging fruits and the best possible outcomes because:</p><ul><li>You retain a happy (and potentially long-term) customer.</li><li>You get paid.</li></ul><h3 id="negotiation">Negotiation</h3><p>This is how negotiation looks:</p><p><strong>Creditor</strong>:</p><blockquote>There are still eight months remaining on the $49/month subscription, totaling $392. As an alternative, you may pay this amount upfront, and we can convert it into PAYG credits at PAYG rates. These credits will not expire unless the account remains inactive for 18 months. Please let us know if you would like to proceed with this option.</blockquote><p><strong>Debtor</strong>:</p><blockquote>Hey &lt;CENSORED&gt;! Thank you so much for this message and for walking us through this.<br><br>You have a deal. We will pay the remaining $392 to close out of our $49/month agreement.<br><br>Before we do that, can you please cancel our current monthly subscription of $299/month? It renews for the next month on Feb 20th.<br><br>I don't want to be hit with paying $299 and then another $392 to end our agreement. If you can do that, that would be great. Thanks!</blockquote><hr><p>If you are lucky, the debtor will respond during the dunning process and explain why they’re not making payments. It’s often due to cashflow issues or dissatisfaction with the product/service. That’s where negotiation begins.</p><p>The debtor might propose a payment plan if they can’t pay in full right away. You’ll negotiate with the debtor on late fees, interest, total balance, or other terms if you authorize any concessions.</p><p>But what if the debtor is unreasonable or simply doesn’t respond?</p><h3 id="escalation">Escalation</h3><p>Bad actors know that dunning is, at worst, annoying. They figure you’re not going to sue them over something like $392. And they’re often right because between $1 and $10,000, there aren’t many options beyond a legal claim. Which is why we created Accountgram—to provide escalation options beyond just “nagging better.”</p><p>For most other agencies, “escalation” essentially means:</p><ol><li>Sending final notices or warnings of possible legal action.</li><li>Spending money to take legal action.</li></ol><p>And yes, I have taken legal action against bad actors who decided to interpret legal documents however they wanted. Here is the COO of a company doing $10M in ARR:</p><blockquote>Hi Steven,<br>I followed your recommendation and had a lawyer review the sales agreement. He informed me that the agreement can be terminated after written notice, as stated in Article 5.1 of Section 5. Since this notice has already been sent, the agreement is now considered terminated.<br>That's what the lawyer told me.</blockquote><p>This is Article 5.1/5.2 of Section 5:</p><blockquote>Termination for Breach: Either party can terminate the agreement on 30 days' notice if the other party materially breaches the agreement (or immediately if there is non-payment).<br>Payment Obligation: Even if terminated early, the customer is still responsible for paying for the services provided up to the date of termination.</blockquote><p>I followed up more than 10 times with this COO, and he ghosted me. Until I spent the money and filed a small claim against his company. Shortly after serving notice of the legal claim, the CEO reached out:</p><blockquote>Hi Steven,<br><br>I hope you're doing well. It was just a few days ago that it came to my attention you filed a claim to collect payment for the Q4 invoice of 2024.<br><br>I was not aware of the situation regarding the cancellation, as this had been managed by my operations team. Only today did I see your correspondence with Nick and his ignoring of your follow-up email.<br><br>Would you be open to jumping on a quick call to discuss this matter? I hope we can resolve it together.<br><br>I could suggest tomorrow at 3 pm CET. Additionally, 12 am and any time from 3 pm to 5 pm CET work for me. I can also do Monday any time after 5 pm and Tuesday any time from 1 pm to 5 pm CET.</blockquote><hr><p>Yes, we collected the money (~$8000) including late fees. I was lucky the CEO was cooperative. If not, litigating and enforcing the collection might have cost more than $8000.</p><p>That’s the beauty of Accountgram. For sums between $1–$10,000, there really isn’t a great way to escalate and collect. Accountgram provides an alternative path to escalation before legal action. Essentially, we post debts publicly in our well search-optimized public debt database, causing reputational harm for debtors. If that doesn’t work, we escalate to the debtor’s employees and relevant customers. We’re able to do this thanks to our proprietary Global Customer Database, which maps out a large portion of B2B relationships in the US.</p><h2 id="collect-yourself">Collect Yourself</h2><p>You don’t have to hire a 3rd-party collection agency. For small sums below $10,000, most agencies will be reluctant to take the case anyway. You can do it yourself.</p><p>To collect a fresh bad debt, refer to the collection process I just detailed. I’ll summarize it here:</p><ol><li>Have your Accounts team send a demand letter (by email or post) to the debtor.</li><li>Follow up multiple times; each incremental dunning message should be firmer than the last.</li><li>Negotiate and (hopefully) finalize collection.</li><li>If ghosted or no concessions are offered, escalate by:<ul><li>Posting the debt publicly on your company’s website (ensure you’re not breaching any regulatory frameworks; you can’t do this for EU-based companies or individuals).</li><li>Reaching out to the debtor’s employees and vendors.</li></ul></li><li>If the customer remains firm in not paying and the amount justifies it, engage legal counsel and file a civil lawsuit.</li></ol><p>That said, if you prefer to focus on growing your business, know that Accountgram isn’t like most debt collection agencies. We don’t discriminate based on the balance, nor do we require any upfront fees. You pay a 25% fee only on debts we successfully collect.</p><h2 id="pursuing-legal-action">Pursuing Legal Action</h2><p>Legal action is expensive. You should only consider it if the sum to be collected is far above the cost of legal fees and if it’s clearly not a disputed debt, with an obvious breach of contract. Apart from the “Accountgram method,” legal action is the only other approach with real teeth.</p><p>In this section, I’ll talk about Small Claims, focusing on the California jurisdiction. Here are the ideal requirements to file a small claim in California:</p><ol><li>Claim amount &lt;= $12,500</li><li>You can show up in court</li></ol><p>Don’t be like me—I couldn’t physically show up in a California court, which jacked up my legal costs. But if you meet the requirements above, the legal fees to file a small claim can be manageable. In my case, it was $850, around 10% of the owed sum.</p><p>I personally wouldn’t recommend going this route for most debts because it’s expensive, slow, and not guaranteed to result in actual collection. I sued one company because I was so incensed that they:</p><ol><li>Were making good money,</li><li>Had already received so many discounts and concessions from us,</li><li>And had a total disregard for the contract.</li></ol><p>I just had to do it.</p><p>I can’t give more advice on civil legal action beyond small claims because I don’t have experience there.</p><h2 id="third-party-debt-collection-agencies">Third-Party Debt Collection Agencies</h2><p><em>Bad debts are an irrefutable fact of any business.</em> So it makes sense to have a third-party debt collection component in your accounts receivables workflow. Here are a few options:</p>
<!--kg-card-begin: html-->
<table class="md-table" style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; border-collapse: collapse; border-spacing: 0px; width: 1060px; overflow: auto; break-inside: auto; text-align: left; cursor: text; margin: 0px; white-space: pre-wrap;"><thead style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; break-inside: avoid; break-after: auto; display: table-header-group;"><tr class="md-end-block" cid="n1057" mdtype="table_row" style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; break-inside: avoid; break-after: auto; background-color: var(--table-thead-color);"><th style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; padding: 6px 13px; border-bottom-width: 0px; border-bottom-style: none; border-bottom-color: currentcolor; font-weight: bold; border-left-width: 0px; border-left-style: ; border-left-color: ; border-right: 1px solid var(--table-border-color); text-align: left; margin: 0px;"><span class="td-span" cid="n1058" mdtype="table_cell" style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; display: inline-block; min-width: 1ch; width: 106.734375px; min-height: 10px;"><span md-inline="strong" class="md-pair-s " style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ;"><strong style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ;"><span md-inline="plain" class="md-plain" style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ;">Category</span></strong></span></span></th><th style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; padding: 6px 13px; border-bottom-width: 0px; border-bottom-style: none; border-bottom-color: currentcolor; font-weight: bold; border-left: 1px solid var(--table-border-color); border-right: 1px solid var(--table-border-color); text-align: left; margin: 0px;"><span class="td-span" cid="n1059" mdtype="table_cell" style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; display: inline-block; min-width: 1ch; width: 231.4375px; min-height: 10px;"><span md-inline="strong" class="md-pair-s " style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ;"><strong style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ;"><span md-inline="plain" class="md-plain" style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ;">Pros</span></strong></span></span></th><th style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; padding: 6px 13px; border-bottom-width: 0px; border-bottom-style: none; border-bottom-color: currentcolor; font-weight: bold; border-left: 1px solid var(--table-border-color); border-right: 1px solid var(--table-border-color); text-align: left; margin: 0px;"><span class="td-span" cid="n1060" mdtype="table_cell" style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; display: inline-block; min-width: 1ch; width: 174.953125px; min-height: 10px;"><span md-inline="strong" class="md-pair-s " style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ;"><strong style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ;"><span md-inline="plain" class="md-plain" style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ;">Cons</span></strong></span></span></th><th style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; padding: 6px 13px; border-bottom-width: 0px; border-bottom-style: none; border-bottom-color: currentcolor; font-weight: bold; border-left: 1px solid var(--table-border-color); border-right: 1px solid var(--table-border-color); text-align: left; margin: 0px;"><span class="td-span" cid="n1061" mdtype="table_cell" style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; display: inline-block; min-width: 1ch; width: 149.578125px; min-height: 10px;"><span md-inline="strong" class="md-pair-s " style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ;"><strong style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ;"><span md-inline="plain" class="md-plain" style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ;">Most Suitable For</span></strong></span></span></th><th style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; padding: 6px 13px; border-bottom-width: 0px; border-bottom-style: none; border-bottom-color: currentcolor; font-weight: bold; border-left: 1px solid var(--table-border-color); border-right: 1px solid var(--table-border-color); text-align: left; margin: 0px;"><span class="td-span" cid="n1062" mdtype="table_cell" style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; display: inline-block; min-width: 1ch; width: 137.1875px; min-height: 10px;"><span md-inline="strong" class="md-pair-s " style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ;"><strong style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ;"><span md-inline="plain" class="md-plain" style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ;">Pricing Model</span></strong></span></span></th><th style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; padding: 6px 13px; border-bottom-width: 0px; border-bottom-style: none; border-bottom-color: currentcolor; font-weight: bold; border-left: 1px solid var(--table-border-color); border-right-width: 0px; border-right-style: ; border-right-color: ; text-align: left; margin: 0px;"><span class="td-span" cid="n1063" mdtype="table_cell" style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; display: inline-block; min-width: 1ch; width: 99.140625px; min-height: 10px;"><span md-inline="strong" class="md-pair-s " style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ;"><strong style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ;"><span md-inline="plain" class="md-plain" style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ;">Company Examples</span></strong></span></span></th></tr></thead><tbody style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ;"><tr class="md-end-block" cid="n1064" mdtype="table_row" style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; break-inside: avoid; break-after: auto; border-top: 1px solid var(--table-border-color); margin: 0px; padding: 0px; background-color: var(--table-bg-color);"><td style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; padding: 6px 13px; border-left-width: 0px; border-left-style: ; border-left-color: ; border-right: 1px solid var(--table-border-color); text-align: left; margin: 0px; min-width: 32px;"><span class="td-span" cid="n1065" mdtype="table_cell" style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; display: inline-block; min-width: 1ch; width: 106.734375px; min-height: 10px;"><span md-inline="strong" class="md-pair-s " style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ;"><strong style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ;"><span md-inline="plain" class="md-plain" style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ;">Debt Collection Software Platforms (SaaS)</span></strong></span></span></td><td style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; padding: 6px 13px; border-left: 1px solid var(--table-border-color); border-right: 1px solid var(--table-border-color); text-align: left; margin: 0px; min-width: 32px;"><span class="td-span" cid="n1066" mdtype="table_cell" style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; display: inline-block; min-width: 1ch; width: 231.4375px; min-height: 10px;"><span md-inline="plain" class="md-plain" style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ;">- Automates dunning (reminders via email, text, calls)  - Structured, compliant A/R tracking  - Great for high volume of small overdue accounts  - Often integrates with existing A/R workflows</span></span></td><td style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; padding: 6px 13px; border-left: 1px solid var(--table-border-color); border-right: 1px solid var(--table-border-color); text-align: left; margin: 0px; min-width: 32px;"><span class="td-span" cid="n1067" mdtype="table_cell" style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; display: inline-block; min-width: 1ch; width: 174.953125px; min-height: 10px;"><span md-inline="plain" class="md-plain" style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ;">- Fixed cost (pay regardless of recovery)  - Less effective for very large/complex debts  - “Nagging” may not solve deeply overdue cases</span></span></td><td style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; padding: 6px 13px; border-left: 1px solid var(--table-border-color); border-right: 1px solid var(--table-border-color); text-align: left; margin: 0px; min-width: 32px;"><span class="td-span" cid="n1068" mdtype="table_cell" style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; display: inline-block; min-width: 1ch; width: 149.578125px; min-height: 10px;"><span md-inline="plain" class="md-plain" style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ;">Businesses with many small, overdue invoices needing repeated follow-ups</span></span></td><td style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; padding: 6px 13px; border-left: 1px solid var(--table-border-color); border-right: 1px solid var(--table-border-color); text-align: left; margin: 0px; min-width: 32px;"><span class="td-span" cid="n1069" mdtype="table_cell" style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; display: inline-block; min-width: 1ch; width: 137.1875px; min-height: 10px;"><span md-inline="plain" class="md-plain" style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ;">- Typically subscription-based (monthly/annual)  - Sometimes usage-based</span></span></td><td style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; padding: 6px 13px; border-left: 1px solid var(--table-border-color); border-right-width: 0px; border-right-style: ; border-right-color: ; text-align: left; margin: 0px; min-width: 32px;"><span class="td-span" cid="n1070" mdtype="table_cell" style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; display: inline-block; min-width: 1ch; width: 99.140625px; min-height: 10px;"><span md-inline="plain" class="md-plain" style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ;">Tesorio, Gaviti, Upflow, etc.</span></span></td></tr><tr class="md-end-block" cid="n1071" mdtype="table_row" style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; break-inside: avoid; break-after: auto; border-top: 1px solid var(--table-border-color); margin: 0px; padding: 0px; background-color: var(--table-bg-darker-color);"><td style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; padding: 6px 13px; border-left-width: 0px; border-left-style: ; border-left-color: ; border-right: 1px solid var(--table-border-color); text-align: left; margin: 0px; min-width: 32px;"><span class="td-span" cid="n1072" mdtype="table_cell" style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; display: inline-block; min-width: 1ch; width: 106.734375px; min-height: 10px;"><span md-inline="strong" class="md-pair-s " style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ;"><strong style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ;"><span md-inline="plain" class="md-plain" style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ;">Debt Collection Big Corps (Trade Credit Insurance)</span></strong></span></span></td><td style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; padding: 6px 13px; border-left: 1px solid var(--table-border-color); border-right: 1px solid var(--table-border-color); text-align: left; margin: 0px; min-width: 32px;"><span class="td-span" cid="n1073" mdtype="table_cell" style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; display: inline-block; min-width: 1ch; width: 231.4375px; min-height: 10px;"><span md-inline="plain" class="md-plain" style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ;">- Guarantees invoice payouts (credit insurance)  - Highly experienced in international and large-scale debt collection  - Strong global networks</span></span></td><td style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; padding: 6px 13px; border-left: 1px solid var(--table-border-color); border-right: 1px solid var(--table-border-color); text-align: left; margin: 0px; min-width: 32px;"><span class="td-span" cid="n1074" mdtype="table_cell" style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; display: inline-block; min-width: 1ch; width: 174.953125px; min-height: 10px;"><span md-inline="plain" class="md-plain" style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ;">- Often more expensive, with premiums  - Generally suited to larger enterprises  - May require strict underwriting processes</span></span></td><td style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; padding: 6px 13px; border-left: 1px solid var(--table-border-color); border-right: 1px solid var(--table-border-color); text-align: left; margin: 0px; min-width: 32px;"><span class="td-span" cid="n1075" mdtype="table_cell" style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; display: inline-block; min-width: 1ch; width: 149.578125px; min-height: 10px;"><span md-inline="plain" class="md-plain" style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ;">Enterprises with broad customer bases, including international markets, wanting to insure large receivables exposure</span></span></td><td style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; padding: 6px 13px; border-left: 1px solid var(--table-border-color); border-right: 1px solid var(--table-border-color); text-align: left; margin: 0px; min-width: 32px;"><span class="td-span" cid="n1076" mdtype="table_cell" style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; display: inline-block; min-width: 1ch; width: 137.1875px; min-height: 10px;"><span md-inline="plain" class="md-plain" style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ;">- Credit insurance premiums (based on volume/amount)</span></span></td><td style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; padding: 6px 13px; border-left: 1px solid var(--table-border-color); border-right-width: 0px; border-right-style: ; border-right-color: ; text-align: left; margin: 0px; min-width: 32px;"><span class="td-span" cid="n1077" mdtype="table_cell" style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; display: inline-block; min-width: 1ch; width: 99.140625px; min-height: 10px;"><span md-inline="plain" class="md-plain" style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ;">Atradius, Euler Hermes, Coface</span></span></td></tr><tr class="md-end-block" cid="n1078" mdtype="table_row" style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; break-inside: avoid; break-after: auto; border-top: 1px solid var(--table-border-color); margin: 0px; padding: 0px; background-color: var(--table-bg-color);"><td style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; padding: 6px 13px; border-left-width: 0px; border-left-style: ; border-left-color: ; border-right: 1px solid var(--table-border-color); text-align: left; margin: 0px; min-width: 32px;"><span class="td-span" cid="n1079" mdtype="table_cell" style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; display: inline-block; min-width: 1ch; width: 106.734375px; min-height: 10px;"><span md-inline="strong" class="md-pair-s " style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ;"><strong style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ;"><span md-inline="plain" class="md-plain" style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ;">Traditional Debt Collection Agencies</span></strong></span></span></td><td style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; padding: 6px 13px; border-left: 1px solid var(--table-border-color); border-right: 1px solid var(--table-border-color); text-align: left; margin: 0px; min-width: 32px;"><span class="td-span" cid="n1080" mdtype="table_cell" style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; display: inline-block; min-width: 1ch; width: 231.4375px; min-height: 10px;"><span md-inline="plain" class="md-plain" style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ;">- Expert at pursuing delinquent accounts  - Often contingency-based (pay only if they recover)  - Recognized as the “standard” option for debt collection</span></span></td><td style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; padding: 6px 13px; border-left: 1px solid var(--table-border-color); border-right: 1px solid var(--table-border-color); text-align: left; margin: 0px; min-width: 32px;"><span class="td-span" cid="n1081" mdtype="table_cell" style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; display: inline-block; min-width: 1ch; width: 174.953125px; min-height: 10px;"><span md-inline="plain" class="md-plain" style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ;">- Typically prefer high-value invoices  - Might not scale for large volumes of smaller debts  - Potentially higher fees (percentage of recovered debt)</span></span></td><td style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; padding: 6px 13px; border-left: 1px solid var(--table-border-color); border-right: 1px solid var(--table-border-color); text-align: left; margin: 0px; min-width: 32px;"><span class="td-span" cid="n1082" mdtype="table_cell" style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; display: inline-block; min-width: 1ch; width: 149.578125px; min-height: 10px;"><span md-inline="plain" class="md-plain" style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ;">SMBs with one or several large overdue accounts, or any business wanting hands-off collection on major outstanding debt</span></span></td><td style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; padding: 6px 13px; border-left: 1px solid var(--table-border-color); border-right: 1px solid var(--table-border-color); text-align: left; margin: 0px; min-width: 32px;"><span class="td-span" cid="n1083" mdtype="table_cell" style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; display: inline-block; min-width: 1ch; width: 137.1875px; min-height: 10px;"><span md-inline="plain" class="md-plain" style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ;">- Primarily contingency-based (percentage of recovered amounts)  - Some may also offer fixed-fee or mixed models</span></span></td><td style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; padding: 6px 13px; border-left: 1px solid var(--table-border-color); border-right-width: 0px; border-right-style: ; border-right-color: ; text-align: left; margin: 0px; min-width: 32px;"><span class="td-span" cid="n1084" mdtype="table_cell" style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; display: inline-block; min-width: 1ch; width: 99.140625px; min-height: 10px;"><span md-inline="plain" class="md-plain" style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ;">IC System, ABC-Amega, Transworld Systems Inc, Midland Credit Management</span></span></td></tr><tr class="md-end-block" cid="n1085" mdtype="table_row" style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; break-inside: avoid; break-after: auto; border-top: 1px solid var(--table-border-color); margin: 0px; padding: 0px; background-color: var(--table-bg-darker-color);"><td style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; padding: 6px 13px; border-left-width: 0px; border-left-style: ; border-left-color: ; border-right: 1px solid var(--table-border-color); text-align: left; margin: 0px; min-width: 32px;"><span class="td-span" cid="n1086" mdtype="table_cell" style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; display: inline-block; min-width: 1ch; width: 106.734375px; min-height: 10px;"><span md-inline="strong" class="md-pair-s " style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ;"><strong style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ;"><span md-inline="plain" class="md-plain" style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ;">Accountgram</span></strong></span></span></td><td style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; padding: 6px 13px; border-left: 1px solid var(--table-border-color); border-right: 1px solid var(--table-border-color); text-align: left; margin: 0px; min-width: 32px;"><span class="td-span" cid="n1087" mdtype="table_cell" style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; display: inline-block; min-width: 1ch; width: 231.4375px; min-height: 10px;"><span md-inline="plain" class="md-plain" style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ;">- Combines traditional agency tactics with SaaS automation  - Data-driven escalation, including public debt disclosure  - 31.25% success rate  - No discrimination on invoice amounts</span></span></td><td style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; padding: 6px 13px; border-left: 1px solid var(--table-border-color); border-right: 1px solid var(--table-border-color); text-align: left; margin: 0px; min-width: 32px;"><span class="td-span" cid="n1088" mdtype="table_cell" style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; display: inline-block; min-width: 1ch; width: 174.953125px; min-height: 10px;"><span md-inline="plain" class="md-plain" style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ;">- Public debt disclosure may affect customer relationships  - Smaller brand recognition compared to global credit insurers</span></span></td><td style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; padding: 6px 13px; border-left: 1px solid var(--table-border-color); border-right: 1px solid var(--table-border-color); text-align: left; margin: 0px; min-width: 32px;"><span class="td-span" cid="n1089" mdtype="table_cell" style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; display: inline-block; min-width: 1ch; width: 149.578125px; min-height: 10px;"><span md-inline="plain" class="md-plain" style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ;">Tech-native SMBs and mid-market companies with a fair volume of bad debts, seeking both automation and strong escalation</span></span></td><td style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; padding: 6px 13px; border-left: 1px solid var(--table-border-color); border-right: 1px solid var(--table-border-color); text-align: left; margin: 0px; min-width: 32px;"><span class="td-span" cid="n1090" mdtype="table_cell" style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; display: inline-block; min-width: 1ch; width: 137.1875px; min-height: 10px;"><span md-inline="plain" class="md-plain" style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ;">- May offer a mix of subscription and performance-based fees</span></span></td><td style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; padding: 6px 13px; border-left: 1px solid var(--table-border-color); border-right-width: 0px; border-right-style: ; border-right-color: ; text-align: left; margin: 0px; min-width: 32px;"><span class="td-span" cid="n1091" mdtype="table_cell" style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; display: inline-block; min-width: 1ch; width: 99.140625px; min-height: 10px;"><span md-inline="plain" class="md-plain" style="box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ;">Accountgram (proprietary solution)</span></span></td></tr></tbody></table>
<!--kg-card-end: html-->
<h3 id="debt-collection-software-platforms-saas">Debt Collection Software Platforms (SaaS)</h3><p>These platforms are typically software that automates the dunning process—reminder emails, texts, calls—and tracks accounts receivable in a structured, compliant manner. Examples include Tesorio, Gaviti, Upflow, and others. In general, these platforms help you “nag better.” And nagging does work to some extent.</p><p>These platforms suit situations with a high volume of small overdue accounts. The drawback is you have to pay to use them regardless of whether they successfully collect the debt.</p><p>Some examples of Debt Collection Software Platforms: Tesorio, Gaviti, Upflow, and others.</p><h3 id="debt-collection-big-corps">Debt Collection Big Corps</h3><p>The big boys of debt collection are essentially large corporations offering <em>Trade Credit Insurance</em>, which guarantees payouts from invoices you issue. For these companies, debt collection is core because they need to claw back funds on bad invoices that they’ve already insured.</p><p>Enterprises usually have their revenue insured because <em>bad debts are an irrefutable fact of any business</em>. They pay a small premium on each invoice to credit insurance companies like Atradius, who will pay out on bad invoices—but also try to claw them back afterward.</p><p>Credit insurance companies include names like Atradius, Euler Hermes, and Coface. They’re suitable for larger businesses with broad customer bases, including international markets with significant receivables exposure.</p><h3 id="traditional-debt-collection-agencies">Traditional Debt Collection Agencies</h3><p>These agencies specialize in pursuing delinquent accounts on your behalf, often on a contingency basis (they take a percentage of what’s recovered). For most people, this is what comes to mind when they think of debt collection.</p><p>They’re generally experts in collection tactics, but they tend to prefer high-value invoices. These agencies are suitable for SMBs that have a single large overdue account. However, they don’t typically scale well within an overall accounts receivable workflow.</p><p>Some examples of traditional debt collection agencies: IC System, ABC-Amega, Transworld Systems Inc, Midland Credit Management</p><h3 id="accountgram">Accountgram</h3><p>Accountgram combines the efficacy and escalatory tactics of traditional debt collection with the scalability and efficiency of Debt Collection Software. We leverage software automation for efficiency and data-driven escalation tactics to spur higher success rates. Strategies like public debt disclosure and direct notifications to customers/employees give Accountgram’s debt collection a success rate of 31.25%.</p><p>We also don’t discriminate based on invoice amounts.</p><p>Accountgram is suitable for tech-native SMBs and mid-market companies with a fair amount of bad debts.</p><h2 id="try-accountgram-today">Try Accountgram Today!</h2><p>The Accountgram method is how I, the CEO of Proxycurl (a 60-employee startup), reduced our SaaS churn from <strong>14% to 3%</strong> and grew our bootstrapped company to <strong>$8M ARR</strong>—simply by enforcing contracts and collecting on bad debts.</p><p>With Accountgram, we’ll collect <strong>any amount</strong> for you with no upfront fee. We only take 25% of any sum collected.</p><p>We focus on the US and Singapore markets. If you’re an SaaS SMB with bad debts to collect, sign up for Accountgram right now, upload your invoice, and we’ll handle the rest!</p><p><strong>Questions?</strong> Send us an email at <a href="mailto:hello@accountgram.com">hello@accountgram.com</a>!</p> ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ Why Is There a Double Opt-In for a 12-Month Subscription Commitment? ]]></title>
        <description><![CDATA[ Our double opt-in process guarantees complete transparency before you commit to the 12-month subscription. With this step, we&#39;re assured that you understand and agree with the terms, before finalizing your purchase.

To proceed, review the terms before accepting them by checking the box. Only after you tick the ]]></description>
        <link>https://nubela.co/blog/why-is-there-a-double-opt-in-for-a-12-month-subscription-commitment/</link>
        <guid isPermaLink="false">67935e31f465ad000185475d</guid>
        <category><![CDATA[ subscription ]]></category>
        <dc:creator><![CDATA[ Steven Goh | CEO ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2019/05/square.jpg"/>
        <pubDate>Fri, 24 Jan 2025 17:48:05 +0800</pubDate>
        <media:content url="" medium="image"/>
        <content:encoded><![CDATA[ <p>Our double opt-in process guarantees complete transparency before you commit to the 12-month subscription. With this step, we're assured that you understand and agree with the terms, before finalizing your purchase. </p><p>To proceed, review the terms before accepting them by checking the box. Only after you tick the box,  will the 'Buy' button become active.</p><figure class="kg-card kg-image-card"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2025/01/image-2.png" class="kg-image" alt="" loading="lazy" width="1130" height="350"></figure><p>Once you click 'Buy', we'll again need you to confirm that your understand your commitment to a 12-month contract.</p><figure class="kg-card kg-image-card"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2025/01/image-3.png" class="kg-image" alt="" loading="lazy" width="1408" height="324"></figure><p>We've put these steps in place to ensure complete clarity, so there’s no confusion between <strong>what you’re signing up for</strong> and <strong>what you expect</strong>. With the double opt-in feature, you have an added opportunity to fully understand your commitments before completing your purchase. </p><p>At Proxycurl, we abide by our transparent terms and pricing policies, because we value building long-term relationships.</p><p>For more details, check out our full <a href="https://nubela.co/proxycurl/12-month-sales-agreement?ref=nubela.co" rel="noopener">12-Month Sales Agreement</a>.</p> ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ 17 Top B2B Data Providers in 2025: A Guide on B2B Data ]]></title>
        <description><![CDATA[ Find the 17 best free and paid B2B data providers in 2025, with a complete free guide on B2B data. ]]></description>
        <link>https://nubela.co/blog/top-b2b-data-providers/</link>
        <guid isPermaLink="false">67904e5b7193930001af857b</guid>
        <category><![CDATA[ b2b data ]]></category>
        <dc:creator><![CDATA[ Sese | Technical Writer ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/10/IMG_4677.jpeg"/>
        <pubDate>Wed, 22 Jan 2025 12:00:26 +0800</pubDate>
        <media:content url="" medium="image"/>
        <content:encoded><![CDATA[ <p>Ever heard the saying "building on quicksand"? That's exactly what it feels like when you rely on out-dated, unreliable data. With the right B2B data, you can reach desired customers, increase sales, find new opportunities, and gain valuable insights.</p>
<p>You can choose to manually search and verify thousands of company and individual data, but it's pretty self explanatory why it wouldn't be ideal. The smartest decision is to go with a reliable B2B data provider. But it begs the question; how do you find one that best fits your needs?</p>
<p>Let me make things easier. Today, I'll walk you through the 17 best B2B data providers in 2025. We'll go through their offering, key features, database size, price, pros, cons and so much more. By the end, you will have a solid idea of the top players in the market and how to find one perfect for your use case.</p>
<p>I won't even skip the basics! We will be going through EVERYTHING on B2B data and B2B data providers:</p>
<ul>
<li>
<p><a href="#what-is-a-b2b-database">What is a B2B database?</a></p>
</li>
<li>
<p><a href="#types-of-b2b-data">Types of B2B data</a></p>
</li>
<li>
<p><a href="#sources-of-b2b-data">Sources of B2B data</a></p>
</li>
<li>
<p><a href="#constraints-of-b2b-databases">Constraints of B2B Databases</a></p>
</li>
<li>
<p><a href="#key-metrics-to-consider">Key metrics to consider before going for a B2B Data Provider</a></p>
</li>
<li>
<p><a href="#17-best-b2b-data-providers">The 17 best B2B data providers in 2025</a></p>
</li>
</ul>
<p>Intrigued? Let's start with the list of all our contenders.</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2025/01/TLC-17-B2B-Providers-Infographics.png" class="kg-image" alt="17 Best B2B Data Providers in 2025 (with database size, free version/trial availability, and pricing)" loading="lazy" width="1040" height="1569"><figcaption><span style="white-space: pre-wrap;">17 Best B2B Data Providers in 2025</span></figcaption></figure><p>Before we go into the deets, let's go back to basics.</p>
<h2 id="what-is-a-b2b-database-a-namewhat-is-a-b2b-databasea">What is a B2B Database? <a name="what-is-a-b2b-database"></a></h2>
<p>B2B data is a compilation of details about businesses, including ones that fall in a particular target market, and their employees. B2B database or datasets, on the other hand, is a collection of information about businesses in a comprehensible manner using B2B data.</p>
<p>The data can include information like company names, size, industry, financials, employee names, email addresses, phone numbers, technographic, and firmographics. It can be especially useful when trying to determine whether someone is a good<a href="https://nubela.co/proxycurl/solutions/clearbit-alternative?ref=nubela.co">  sales lead</a> and accompanies information you can use to get in touch with them.</p>
<h3 id="how-is-b2b-databases-different-from-b2c-databases">How is B2B Databases different from B2C databases?</h3>
<p>B2B databases are different from B2C databases in the type of customer they are targeting. B2B databases focus on businesses, while B2C databases focus on individual consumers.</p>
<p>B2B databases provide more detailed information about businesses and are used to target specific companies, while B2C databases contain more personal information about individual consumers and are used to create personalized campaigns.</p>
<p>These differences are particularly important when it comes to <a href="https://glockapps.com/blog/b2b-and-b2c-email-marketing-strategies-understanding-the-differences/?ref=nubela.co" rel="nofollow">B2B vs. B2C email marketing</a>. B2B email marketing relies heavily on detailed company data to craft messages that resonate with business decision-makers, while B2C email marketing focuses on personalizing content to engage individual consumers.</p>
<h3 id="why-are-b2b-databases-important">Why are B2B databases important?</h3>
<p>B2B Databases are used for lead generation, outbound sales, and data enrichment. This is a<a href="https://nubela.co/proxycurl/solutions/clearbit-alternative?ref=nubela.co">  data-driven prospecting</a> approach.</p>
<p>They employ account-based sales approaches to pinpoint the appropriate potential customers at the right businesses and set up their Ideal Customer Profiles (ICPs). Additionally, they facilitate the uncovering of new contacts and make sending individualized messages, based on the data that has been collected, a straightforward task. This eliminates the tiresome effort of calling the wrong numbers and manually entering the data into the CRMs.</p>
<h2 id="types-of-b2b-data-a-nametypes-of-b2b-dataa">Types of B2B Data <a name="types-of-b2b-data"></a></h2>
<p>Customer/client data is soaked up through various methods/platforms like social media, surveys, mobile apps, and websites, which the business utilizes to create a new product or market strategies, with an aim to increase overall customer satisfaction.</p>
<p>Now the data can include various attributes like:</p>
<ul>
<li>
<p>Personal Information: Name, Email Address, Phone Numbers</p>
</li>
<li>
<p>Company details: Name of company, Size, Industry, Location,<a href="https://nubela.co/proxycurl/solutions/sales-marketing-automation-api?ref=nubela.co">  Decision-makers</a></p>
</li>
</ul>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXd6hSt4agxAuBpa9lYge16DDN1CGP8hNKXX-nbBKo8GEUC1UUVxiXDj34keTYdYtr-uewvSToLiYMzU3VmCJatN1Jf4qd8VTyMb9I_az6fOfIrl-CSjh2SNxlzixRsi2uHQwxLB?key=3iAh3hcLhMs5avK2qPXFapFg" alt="Business Data Types" loading="lazy"></p>
<p>Based on the key attributes the datasets are categorized as:</p>
<ul>
<li>
<h4 id="demographic-datahttpsnubelacoproxycurlprofessional-social-network">[Demographic Data](<a href="https://nubela.co/proxycurl/Professional?ref=nubela.co">https://nubela.co/proxycurl/Professional</a> Social Network)</h4>
</li>
</ul>
<p>B2B Demographic Data is a compilation of static information that helps organizations identify whether a contact or lead would be suitable to their complete addressable market. It is composed of personal details of a person and Professional Social Network profiles.</p>
<p>This type of data focuses on the characteristics of a company's customer base and employees and includes data such as age, gender, location, and income level. This set of data is usually used to construct marketing plans, campaigns, lead scoring, and nurturing.</p>
<ul>
<li><strong><a href="https://nubela.co/blog/what-is-firmographics-definition-benefits-database/">Firmographic Data</a></strong></li>
</ul>
<p>It includes segmentation of company info, and[  company profile](<a href="https://nubela.co/proxycurl/Professional?ref=nubela.co">https://nubela.co/proxycurl/Professional</a> Social Network/company) such as name, location, industry, size,[  number of employees](<a href="https://nubela.co/proxycurl/Professional?ref=nubela.co">https://nubela.co/proxycurl/Professional</a> Social Network/list-employee), performance, revenue, and sales information. This is also used for segmentation and targeting, however, the focus is broader, and lies on the companies.</p>
<ul>
<li><strong><a href="https://www.cognism.com/blog/what-are-technographics?ref=nubela.co" rel="nofollow"> Technographic Data</a></strong></li>
</ul>
<p>This type of B2B data includes information about a company's technology stack and digital footprint. This is used to gain insight into the tech needs and preferences of a company. This is especially useful for companies in the dev-tools space.</p>
<ul>
<li><strong>Chronographic Data</strong></li>
</ul>
<p>This track's events and changes occur as time progresses. It includes company location changes, employee hiring history,[  past and present employee](<a href="https://nubela.co/proxycurl/Professional?ref=nubela.co">https://nubela.co/proxycurl/Professional</a> Social Network/list-employee) funding, acquisition, company IPO, and event appearances. It is used to understand the timing of a company's activities, such as when they make purchases, when they renew contracts, and when they upgrade their technology.</p>
<ul>
<li><strong>Intent Data</strong></li>
</ul>
<p>This tracks users' online behavior and predicts their intent to purchase based on the content they engage with. It's based on customers' research habits and what they're looking for when they visit your website or use your products and helps identify relevant trends. This is used for evaluating the buying intent of a user or a company.</p>
<ul>
<li><strong>Fit Data</strong></li>
</ul>
<p>B2B Fit Data is data that is used to assess the fit between a company and a product or service by confirming the prospecting to a specific set of parameters which can include parameters like company size, industry, revenue, and location. The data is similar to other types mentioned, however, it's used to assess the fit rather than to gain insights for strategies.</p>
<ul>
<li><strong>Opportunity Data</strong></li>
</ul>
<p>This type of data gives insights into how well a company is doing. It includes information about customer retention, revenue, profitability, employee promotions, product launches, funding, and mergers. Opportunity data is used to gain insights into a company's potential for growth, such as its current market position, its competitive landscape, and its potential for expansion.</p>
<ul>
<li><strong>Behavioral Data</strong></li>
</ul>
<p>Behavioral B2B datasets provide insights into how customers interact with your product or service on an individual level. It can include things like page views, click-through rates, time spent on a page, conversion rates, subscription details, and previous purchases. This can be analyzed using website analytics tools. It is used to personalize the <a href="https://virtocommerce.com/blog/b2b-ecommerce-customer-experience?ref=nubela.co" rel="nofollow"> B2B eCommerce experience</a>, understand customers' preferences, and build better relationships.</p>
<ul>
<li><strong>Interaction Data</strong></li>
</ul>
<p>This type of data looks at the interactions between customers and companies such as emails sent, calls made, website visits, and messages exchanged. It is used to identify trends in customer behavior and develop strategies for improving sales performance.</p>
<ul>
<li><strong>Attitudinal Data</strong></li>
</ul>
<p>This type of data focuses on customer sentiment toward a company's products or services. It can include surveys that measure customer satisfaction or reviews that provide insight into how people feel about a product or service.</p>
<p>Attitudinal data also expands on preferences, and purchase criteria, and helps quantify product desirability. This is used to determine which products or services a company is most likely to be interested in, or which messaging is most likely to resonate with them.</p>
<ul>
<li><strong>B2B Contact Database - A form Of Database</strong></li>
</ul>
<p>As the name suggests, the contact information of individuals and companies falls under this category of the database. So, excluding the other data variables, a contact database consists of attributes of firmographics and demographics. It also contains datasets of phone numbers and<a href="https://nubela.co/proxycurl/email-lookup?ref=nubela.co">  work email</a>  addresses that let you get in touch with leads.</p>
<p>You can get access to contact information to approach other businesses/customers/prospects. This makes B2B databases the primary source of lead generation.</p>
<p>With getting accurate <a href="https://www.cience.com/data-lists?ref=nubela.co" rel="nofollow"> contact data</a>, a list of qualified leads can be created which sales and marketing teams can use to craft personalized email campaigns, engage website visitors with <a href="https://www.cience.com/blog/what-is-remarketing?ref=nubela.co" rel="nofollow"> remarketing</a> efforts and target the right prospects at the right time.</p>
<h2 id="sources-of-b2b-data-a-namesources-of-b2b-dataa">Sources of B2B Data <a name="sources-of-b2b-data"></a></h2>
<p>There are different sources of B2B data. Let's take a look at some primary sources.</p>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXeb_se7aVK4-lFBvYn7jTdAAuk4PaSwhnHIf72Qo58AaBTyWNQKFCq7EiRFTEmt2ebe_eEuqBVb31uAXDfjKIAlgDFUcE1IcpVTKU-OLq4ieqfyyy7xOTQfjcYBWrADaz1TjirtbQ?key=3iAh3hcLhMs5avK2qPXFapFg" alt="Sources of B2B Data" loading="lazy"></p>
<ul>
<li>
<p><strong>Lead Generation Approach:</strong> This is the process of identifying potential customers and prospects, then engaging with them to generate sales leads. Lead generation typically involves collecting contact information such as names, email addresses, and phone numbers. This can be done through cold calling, email marketing campaigns, social media outreach, and more.</p>
</li>
<li>
<p><strong>Digital Marketing Tools:</strong> Digital marketing tools are a great way to generate customer interaction and traffic. These tools include search engine optimization (SEO), search engine marketing (SEM), content marketing, influencer marketing, display advertising, email campaigns, and more. All of these activities can be used to generate leads and collect customer data.</p>
</li>
<li>
<p><strong>Content Marketing:</strong> Content marketing is a form of digital marketing that focuses on creating valuable content for your target audience in order to build relationships with them and drive engagement. Content can be anything from blog posts to videos or podcasts - it just needs to be relevant to your target audience.<a href="https://voissee.com/voice-over-agencies/?ref=nubela.co" rel="nofollow"> Videos</a> have become a powerful tool in content marketing, capturing your audience's attention and effectively conveying messages. Using a <a href="https://invideo.io/make/video-maker/?ref=nubela.co" rel="nofollow"> video maker</a> tool will streamline the process of your content strategy and further enhance the impact of your messaging, offering engaging visuals to complement your written content. By leveraging content marketing you can collect data about your customer's interests and behaviors which can be used to inform future marketing strategies.</p>
</li>
<li>
<p><strong>Data Providers:</strong> Data providers are digital platforms that gather large amounts of contact databases that usually include full names, locations, positions, phone numbers, email addresses, social networks, and other contact points.</p>
</li>
<li>
<p><strong>Web Scrapping (Natural Language Processing):</strong> Web Scrapping is a technique used to extract data from websites by analyzing HTML documents to find patterns that can be used for data extraction. Using NLP on this scraped data can further help identify the relevancy of content and extract higher-quality B2B data.</p>
</li>
<li>
<p><strong>Conducting Surveys or Collecting Forms:</strong> Conducting surveys or collecting forms is another way of gathering customer information such as name and contact information to build a database of potential leads.</p>
</li>
<li>
<p><strong>Company Documents/Registers/Records:</strong> Company documents/registers/records can be a great source of B2B data as they usually contain detailed information about companies such as their size and location.</p>
</li>
<li>
<p><strong>Customer Interviews:</strong> Customer interviews are an effective way of getting basic info about customers as well as behavioral data which can help inform business decisions about products or services offered by the company.</p>
</li>
<li>
<p><strong>Review Website Analytics:</strong> Review website analytics is another way of getting intent/behavioral data from customers who visit the company's website or use its services to understand what type of changes need to be made to improve customer experience on the website or with the services offered by the company.</p>
</li>
<li>
<p><strong>Through Events &amp; Conferences:</strong> Attending events &amp; conferences is also a great way of generating B2B leads as it allows companies to meet potential partners face-to-face to discuss potential collaborations or partnerships which could result in increased business opportunities for both parties involved.</p>
</li>
</ul>
<h2 id="constraints-of-b2b-databases-a-nameconstraints-of-b2b-databasesa">Constraints of B2B Databases <a name="constraints-of-b2b-databases"></a></h2>
<p>B2B Databases are great but are not a silver bullet for success and have their own set of constraints. Here are a few:</p>
<ul>
<li>
<p><strong>Limited Data Availability:</strong> According to a study by Forbes, only about 50% of all available B2B data is accurate, and many times the data is outdated or incomplete. This can limit the effectiveness of any insights derived from the data and make it difficult for companies to make informed decisions.</p>
</li>
<li>
<p><strong>Costly:</strong> Many B2B databases are expensive and may require a large upfront cost to access them. This can be prohibitive for smaller companies that may not have the resources to invest in these databases.</p>
</li>
<li>
<p><strong>Time-Consuming:</strong> Gathering and organizing B2B data can be a time-consuming process as it requires manually searching through various sources such as websites, directories, and social media platforms. This can be time-consuming and difficult to keep up with if there is a large amount of data being collected regularly.</p>
</li>
<li>
<p><strong>Quality of Data:</strong> The quality of the data can be questionable as it may be outdated or incomplete. This can lead to inaccurate insights, which can have major implications for companies that rely on the data for decision-making. Gartner's research found that poor data quality is responsible for an average of <a href="https://www.gartner.com/smarterwithgartner/how-to-create-a-business-case-for-data-quality-improvement?ref=nubela.co" rel="nofollow"> $15 million</a> per year in losses. Professional Social Network also reported that at least <a href="https://www.professionalsocialnetwork.com/pulse/data-decay-silent-killer-sameer-yadav/?ref=nubela.co" rel="nofollow"> 30%</a> of the overall data decays yearly.</p>
</li>
<li>
<p><strong>Security and Privacy:</strong> B2B databases are often shared among multiple parties and this means that there is a risk of data breaches or unauthorized access to sensitive information. Companies need to ensure that they have adequate security measures in place to protect their data from being misused or stolen.</p>
</li>
</ul>
<p>With these constraints in mind, I will be constructing key metrics to consider while choosing a B2B data provider.</p>
<h2 id="key-metrics-to-consider-before-choosing-a-b2b-provider-a-namekey-metrics-to-considera">Key Metrics to Consider Before Choosing a B2B Provider <a name="key-metrics-to-consider"></a></h2>
<p>Here are some key metrics you should judge a B2B data provider against:</p>
<ul>
<li><strong>Data Freshness</strong></li>
</ul>
<p>Yes, we want fresh data but the right provider allows you to control the freshness of data, offering cheaper historical data when freshness is not a concern.</p>
<p>For example, if you are looking for job posting data, you need fresh data. However, cached data would suffice if you only wanted to match a company URL with its name because a company's name and URL will only change occasionally.</p>
<p>When exploring the different providers, understand their data freshness guarantee. Review their documentation and determine whether they provide the option to control data retrieval from cache or to scrape live.</p>
<ul>
<li><strong>Data points</strong></li>
</ul>
<p>Even if you've identified a B2B data provider that caters your needs for now, you might need additional data points in the future. Consider committing to a provider with an exhaustive set of data points so you don't accrue technical debt from day one.</p>
<p>We've heard countless stories of people having to switch providers after realizing the limited data points available or having to engage different providers for different sets of data, making their workflow a mess.</p>
<ul>
<li><strong>Integration Options</strong></li>
</ul>
<p>Can the data provider's tools or APIs integrate easily with your tech stack? Do they provide seamless data exports in various formats (CSV, JSON, etc.)? Figure it out before pulling out your credit card.</p>
<ul>
<li><strong>Legal compliance</strong></li>
</ul>
<p>Generally, you won't get into legal trouble even if your data provider fails to legally comply. If anything, the providers are the ones who'll get into trouble ([if they employ illegal tactics like Mantheos](<a href="https://nubela.co/blog/what-you-should-know-now-that-mantheos-a-Professional">https://nubela.co/blog/what-you-should-know-now-that-mantheos-a-Professional</a> Social Network-scraping-service-is-sued-by-Professional Social Network/)). What you don't want is having to migrate your already-integrated applications and workflow when something does happen.</p>
<p>And so, it's best to find a provider that is legally scraping data. After all, [web scraping is indeed legal](<a href="https://nubela.co/blog/is-Professional">https://nubela.co/blog/is-Professional</a> Social Network-scraping-legal/) per the US court ruling. [GDPR](<a href="https://nubela.co/blog/is-Professional">https://nubela.co/blog/is-Professional</a> Social Network-scraping-gdpr-compliant/) and <a href="https://oag.ca.gov/privacy/ccpa/regs?ref=nubela.co">CCPA</a> are the basic compliance standards for the data industry.</p>
<ul>
<li><strong>Pricing</strong></li>
</ul>
<p>Even if you are in a small or a large company, pricing matters. As a small company, you need pricing flexibility based on what you use and not get tied down to a fixed plan. As a larger company, you will benefit from good enterprise packages to ensure that your large-scale data operations do not incur uncontrollable costs.</p>
<p>For this article, I will be comparing the cheapest monthly plan of each B2B data provider:</p>
<ol>
<li>
<p>Get the number of profiles available via that monthly plan.</p>
</li>
<li>
<p>Calculate the cost per profile.</p>
</li>
</ol>
<h2 id="17-best-b2b-data-providers-in-2025-a-name17-best-b2b-data-providers-a">17 Best B2B Data Providers in 2025 <a name="17-best-b2b-data-providers"> </a></h2>
<h3 id="1-proxycurl-overall-best">1. <a href="http://nubela.co/proxycurl?ref=nubela.co">Proxycurl</a> (Overall Best)</h3>
<p>A developer-focused B2B data provider, with <a href="https://nubela.co/blog/ultimate-guide-to-all-21-proxycurl-apis-enrich-people-company-profiles/">a huge portfolio of API endpoints</a>, Proxycurl enriches the data of people and companies with a variety of up-to-date data points.</p>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXf2XHUXJQRAwSjZvJa95fSo3KqipRg_5WtgpwVjC6G6dOxHTxInGDluE9NE204Jqxcfv2vzUZhYTYvwuU_hI_q34_raHptczl8IeP40hEChJ7mospPi9Ykw4QqdpE-sYVR8VH9RLA?key=3iAh3hcLhMs5avK2qPXFapFg" alt="Proxycurl Landing Page" loading="lazy"></p>
<p>Depending on your use cases, Proxycurl's APIs flexibly can be integrated into any existing applications and workflows. With a database of over<a href="https://nubela.co/proxycurl/linkdb?ref=nubela.co">  500M people &amp; company profiles</a>, no B2B data is out of reach.</p>
<ul>
<li>
<p><strong>Data Freshness:</strong> Proxycurl provides immense flexibility in choosing your <a href="https://nubela.co/blog/how-fresh-are-profiles-returned-by-proxycurl-api/">data freshness</a>. You can choose between freshly-scraped data, data 29 days old or younger or even historical data that is older than 29 days.</p>
</li>
<li>
<p><strong>Data Points:</strong> Proxycurl offers various datapoints of[  individuals](<a href="https://nubela.co/proxycurl/Professional?ref=nubela.co">https://nubela.co/proxycurl/Professional</a> Social Network) or[  companies](<a href="https://nubela.co/proxycurl/Professional?ref=nubela.co">https://nubela.co/proxycurl/Professional</a> Social Network/company), including phone numbers,<a href="https://nubela.co/proxycurl/reverse-email-lookup?ref=nubela.co">  personal &amp; work emails</a>, funding data, industry data, social media profiles, and past/current employment details, up to 44 datapoints</p>
</li>
<li>
<p><strong>Integrations:</strong> As I mentioned before, Proxycurl is built for integrations. You can build and run Proxycurl's API across 2,400+ apps. Or just write a custom code to integrate any app or API. Also, Proxycurl returns your data in .JSON format.</p>
</li>
<li>
<p><strong>Legal Compliance:</strong> Strictly follows GDPR and CCPA regulations.</p>
</li>
</ul>
<p><a href="https://nubela.co/proxycurl/pricing?ref=nubela.co">Proxycurl Pricing:</a></p>
<table>
<thead>
<tr>
<th style="text-align:center">Plans</th>
<th style="text-align:center">Details</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:center">Free</td>
<td style="text-align:center">10 credits on sign-up ✅<br> 20 credits for work email ⭐️</td>
</tr>
<tr>
<td style="text-align:center">Basic Paid</td>
<td style="text-align:center">$49/mo</td>
</tr>
<tr>
<td style="text-align:center">High-end Paid</td>
<td style="text-align:center">Starts from $2000/mo</td>
</tr>
</tbody>
</table>
<p><strong>Pros and Cons of Proxycurl</strong></p>
<p><strong>Pros:</strong></p>
<ul>
<li>
<p>API crawls are dispatched on-demand and are made in real-time for the freshest B2B data.</p>
</li>
<li>
<p>Flexibility in data freshness.</p>
</li>
<li>
<p>High scale crawl, scraping about a million pages per day.</p>
</li>
<li>
<p>Affordable price plans.</p>
</li>
</ul>
<p><strong>Cons:</strong></p>
<ul>
<li>Businesses requiring extensive hands-on customization might need additional support.</li>
</ul>
<p><strong>TLDR Verdict</strong></p>
<p>Go for it if you value fresh and accurate profiles data to enrich your databases</p>
<h3 id="2-a-hrefhttpswwwlushacom-relnofollowlushaa-second-best">2. <a href="https://www.lusha.com/?ref=nubela.co" rel="nofollow">Lusha</a> (Second Best)</h3>
<p>Lusha sells access to its huge B2B database where businesses can find verified contact details. You can locate potential business partners and establish communication with them. It is also compatible with a number of customer relationship management and advertising systems.</p>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcO0riDp8IelhiMnQyCdzwIP9svDrxk2cEs5rvvvr0H_Sdp5hA_GwU6r444a4MFUr67jdv69K2SxigW5l2uShZ3x6bT2K8036TqSv63tJsWumcYvUN5YL7FjMt6DP6S17Be5K3R?key=3iAh3hcLhMs5avK2qPXFapFg" alt="Lusha Landing Page" loading="lazy"></p>
<p>Through the contact and business lookup functions, you can access up to one thousand contacts and businesses with a single inquiry. It works as both a Chrome extension and through an API, so you can extract professional data directly from Professional Social Network or integrate it into your CRM systems like Salesforce and HubSpot.</p>
<ul>
<li>
<p><strong>Data Freshness:</strong> Lusha updates their databases in real-time. They collect data from multiple sources and combine numerous data-points.</p>
</li>
<li>
<p><strong>Data Points:</strong> Lusha provides contact info and business data points like annual revenue, business type, employee count, location.</p>
</li>
<li>
<p><strong>Integrations:</strong> Lusha integrates with 1200+ apps. They also allow prospect lists to be exported to CRM or CSV.</p>
</li>
<li>
<p><strong>Legal Compliance:</strong> Lusha is CCPA and GDPR compliant.</p>
</li>
</ul>
<p><strong><a href="https://www.lusha.com/pricing/?ref=nubela.co" rel="nofollow"> Lusha Pricing</a></strong></p>
<table>
<thead>
<tr>
<th style="text-align:center">Plans</th>
<th style="text-align:center">Details</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:center">Free</td>
<td style="text-align:center">Free Plan Available ✅ (50 emails/5 phone numbers)</td>
</tr>
<tr>
<td style="text-align:center">Basic Paid</td>
<td style="text-align:center">$49/person/mo</td>
</tr>
<tr>
<td style="text-align:center">High-end paid</td>
<td style="text-align:center">Customizable usage and price</td>
</tr>
</tbody>
</table>
<p><em><strong>Note:</strong> You cannot sign up with a personal email. Signups are only validated using work emails.</em></p>
<p><strong>Lusha Pros and Cons</strong></p>
<p><strong>Pros:</strong></p>
<ul>
<li>
<p>Reasonable pricing for the quality of data it provides.</p>
</li>
<li>
<p>Interactive dashboard and supports integrations with popular CRM platforms.</p>
</li>
<li>
<p>Has a chrome extension where you can extract contact data directly from Professional Social Network profiles while browsing.</p>
</li>
</ul>
<p><strong>Cons:</strong></p>
<ul>
<li>
<p>Instances of wrong information being served; posing trust issues.</p>
</li>
<li>
<p>Professional Social Network's data access limitations, especially with frequent scraping.</p>
</li>
</ul>
<p><strong>TLDR Verdict</strong></p>
<p>Lusha is the next best choice after Proxycurl in terms of overall value.</p>
<h3 id="3-a-hrefhttpsbusinessprofessionalsocialnetworkcomsales-solutionssales-navigator-relnofollowprofessional-social-network-sales-navigatora">3. <a href="https://business.professionalsocialnetwork.com/sales-solutions/sales-navigator?ref=nubela.co" rel="nofollow">Professional Social Network Sales Navigator</a></h3>
<p>Professional Social Network Sales Navigator is the company's own sales intelligence platform. Tapping into that data means you get valuable insights for sales intelligence, lead generation, and market research.</p>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcItvHoWH3CYTxiKzXWk3la6ARBaFnGU6MIqldxjjEGHSD7Qhh-zC7zNiaF6qbjXzRRvO0MtPbQiyS6MTELv0bc7u-0v59kbrCglbtcC6N2xT3P9DBVFKTy0b2cXmmSLZnzoWiDzg?key=3iAh3hcLhMs5avK2qPXFapFg" alt="Professional Social Network Sales Navigator Landing Page" loading="lazy"></p>
<p>With Professional Social Network Sales Navigator API, you can create a custom dashboard to keep an eye on prospects. The dashboard will automatically update whenever a company updates their profile, so you're always in the loop.</p>
<p>[Accessing Professional Social Network Sales Navigator](<a href="https://nubela.co/blog/access-Professional">https://nubela.co/blog/access-Professional</a> Social Network-sales-navigator-api-guide/) is not simple. You have to file an application for access with details on how you're going to use the data. The approval process can take several weeks, and there is no guarantee you will be approved.</p>
<ul>
<li>
<p><strong>Data Freshness:</strong> Since you're pulling it straight from the source, you get real-time Professional Social Network data.</p>
</li>
<li>
<p><strong>Data Points:</strong> You can export a large amount of data points including name, job title, company, work email, personal email, mobile phone number, direct dial, company industry, company size, company location, skills, education, and more.</p>
</li>
<li>
<p><strong>Integrations:</strong> Sales Navigator only integrates with Microsoft Dynamics, Salesforce and Hubspot of now.</p>
</li>
<li>
<p><strong>Legal Compliance:</strong> Professional Social Network Sales Navigator operates under Professional Social Network's private policy.</p>
</li>
</ul>
<p><strong><a href="https://business.professionalsocialnetwork.com/sales-solutions/compare-plans?ref=nubela.co" rel="nofollow"> Professional Social Network Sales Navigator Pricing</a></strong></p>
<table>
<thead>
<tr>
<th style="text-align:center">Plans</th>
<th style="text-align:center">Professional Social Network Sales Navigator</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:center">Free</td>
<td style="text-align:center">Free Version not available ❌</td>
</tr>
<tr>
<td style="text-align:center">Basic Paid</td>
<td style="text-align:center">Core (for individuals)<br>$99/mo</td>
</tr>
<tr>
<td style="text-align:center">High-end Paid</td>
<td style="text-align:center">Advanced plus (for teams)<br>$1,600 per person/year</td>
</tr>
</tbody>
</table>
<p><strong>Professional Social Network Sales Navigator Pros and Cons</strong></p>
<p><strong>Pros:</strong></p>
<ul>
<li>
<p>Allows fetching real-time data and enrich your platform.</p>
</li>
<li>
<p>Supports data syncing of newly fetched data with your existing customer information.</p>
</li>
<li>
<p>Advanced search options with numerous field filters.</p>
</li>
</ul>
<p><strong>Cons:</strong></p>
<ul>
<li>
<p>Lengthy approval process, hard to get access.</p>
</li>
<li>
<p>Harsh rate limits of 1,000 profile exports per day.</p>
</li>
<li>
<p>Expensive venture, need an active subscription to access.</p>
</li>
</ul>
<p><strong>TLDR Verdict</strong></p>
<p>If you don't mind paying a little extra compared to alternatives, this is a great integrated choice.</p>
<h3 id="4-a-hrefhttpswwwdatanyzecom-relnofollow-datanyzea">4. <a href="https://www.datanyze.com/?ref=nubela.co" rel="nofollow"> Datanyze</a></h3>
<p>A B2B provider that's built for salespeople, Datanyze enriches prospects profiles in real-time, while you're browsing Professional Social Network.</p>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdb2EfMhI9n5uKVXOciKKQv9DVZiCkbieZRjXgX4Z-eGnXbcFxT4XA_7gMja8mLc_dFnZNElSZ7gHhFlXYAlt6DVJaRbKRYM6zENUzk5nyi4eU-ogYxucchAMo6_7oO77sFob3KmQ?key=3iAh3hcLhMs5avK2qPXFapFg" alt="Datanyze Landing Page" loading="lazy"></p>
<p>It uses web crawlers to identify a company's technology stack and usage, which helps you identify potential customers. How? It scans the code, tags, and metadata on company websites to detect specific software or technologies in use, helping you pinpoint businesses using tools relevant to your offering.</p>
<ul>
<li>
<p><strong>Data Freshness:</strong> Datanyze refreshes its data 'frequently'. ensuring up-to-date information for its users.</p>
</li>
<li>
<p><strong>Data Points:</strong> Datanyze provides specific data points on company information, contact information, and technographic data.</p>
</li>
<li>
<p><strong>Integrations:</strong> The B2B data provider integrates with multiple marketing automation, sales enablement, and CRM systems like Salesforce and HubSpot.</p>
</li>
<li>
<p><strong>Legal Compliance:</strong> Datanyze complies with GDPR and CCPA regulations.</p>
</li>
</ul>
<p><strong><a href="http://datanyze.com/pricing?ref=nubela.co" rel="nofollow"> Datanyze Pricing</a></strong></p>
<table>
<thead>
<tr>
<th style="text-align:center">Plans</th>
<th style="text-align:center">Details</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:center">Free</td>
<td style="text-align:center">90 Day Free Trial ✅<br> 10 credits per month</td>
</tr>
<tr>
<td style="text-align:center">Basic paid</td>
<td style="text-align:center">$29/mo</td>
</tr>
<tr>
<td style="text-align:center">High-end paid</td>
<td style="text-align:center">$55/mo</td>
</tr>
</tbody>
</table>
<p><strong>Datanyze Pros and Cons</strong></p>
<p><strong>Pros:</strong></p>
<ul>
<li>
<p>Unparalleled depth in technology usage data.</p>
</li>
<li>
<p>Highly effective for targeting IT and SaaS companies.</p>
</li>
</ul>
<p><strong>Cons:</strong></p>
<ul>
<li>
<p>Limited enrichment for non-technographic company data.</p>
</li>
<li>
<p>No integrations to update CRMs and other systems.</p>
</li>
<li>
<p>Users have criticized the tool previously for their <a href="https://www.g2.com/products/datanyze/reviews/datanyze-review-598868?ref=nubela.co" rel="nofollow">data inaccuracy</a>.</p>
</li>
</ul>
<p><strong>TLDR Verdict</strong></p>
<p>Great if you're looking for a low volume usage tool, that's simple to use.</p>
<h3 id="5-a-href-httpswwwpeopledatalabscom-relnofollow-people-data-labsa">5. <a href="https://www.peopledatalabs.com/?ref=nubela.co" rel="nofollow"> People Data Labs</a></h3>
<p>A well-known B2B data provider, People Data Labs (PDL) scrapes public data and works with third-party partners to get private data. Then it packages this data into datasets that customers can call using APIs.</p>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcrvnCK0iP7oReOi_pl4OA5YdTKgEYUDF2AgxqUwIm1kLYogXw-PYStdFaI_aDkwVcvo_SQNj6VnYnRCWo5p9rQWIUXZxvDqijsNhDWhzbJhMvMvqYOi82FiKi1Xgt-i3sKJgZ-?key=3iAh3hcLhMs5avK2qPXFapFg" alt="People Data Labs Landing Page" loading="lazy"></p>
<p>One thing to note, People Data Labs isn't developer-focused, but with quite a comprehensive range of data points available, it's arguably the most complete in the list. Though they are guilty of breaking down one data point into many granular forms, which inflate the absolute quantity.</p>
<p>I've done an <a href="https://nubela.co/blog/people-data-labs-reviews/">indepth review of People Data Labs</a>, so if you're interested to learn more, do check that out.</p>
<ul>
<li>
<p><strong>Data Freshness:</strong> APIs are called using PDL's Datasets, which are updated monthly by default.</p>
</li>
<li>
<p><strong>Data Points:</strong> People Data Labs provides a plethora of data points. It is arguably the most complete data points provider on the list. The company offers &gt;200 data points per profile, but they achieve this number by splitting the data down to their most granular forms. For example, a single location address is split into 12 different fields! Some examples: <code>location_street_address</code>, <code>location_address_line_2</code>, <code>location_continent</code>, <code>location_country</code>, <code>location_region</code>, etc.</p>
</li>
<li>
<p><strong>Integrations:</strong> People Data Labs <a href="https://www.peopledatalabs.com/integrations?ref=nubela.co" rel="nofollow">integrates</a> with many automation tools and CRMs like Salesforce and Hubspot.</p>
</li>
<li>
<p><strong>Legal Compliance:</strong> People Data Labs has an edge with additional compliance besides GDPR and CCPA. PDL complies with GDPR, CCPA, SOC 2 and ISO 27001 regulations.</p>
</li>
</ul>
<p><strong><a href="https://www.peopledatalabs.com/pricing/person?ref=nubela.co" rel="nofollow"> People Data Labs Pricing</a></strong></p>
<table>
<thead>
<tr>
<th style="text-align:center">Plans</th>
<th style="text-align:center">Details</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:center">Free</td>
<td style="text-align:center">Up to 100 records</td>
</tr>
<tr>
<td style="text-align:center">Basic Paid</td>
<td style="text-align:center">$98/mo</td>
</tr>
<tr>
<td style="text-align:center">High-end Paid</td>
<td style="text-align:center">Custom Pricing</td>
</tr>
</tbody>
</table>
<p><em><strong>Note:</strong> You cannot sign up with a personal email. Signups are only validated using work emails, making it tough to get a free trial.</em></p>
<p><strong>People Data Labs Pros and Cons</strong></p>
<p><strong>Pros:</strong></p>
<ul>
<li>
<p>Large datasets on multiple data points.</p>
</li>
<li>
<p>Tier based scalable solutions for different levels of enterprises.</p>
</li>
<li>
<p>Plug-and-play model allows for immediate consumption.</p>
</li>
</ul>
<p><strong>Cons:</strong></p>
<ul>
<li>
<p>Even if there are different tiers, it's hardly affordable for small businesses and startups.</p>
</li>
<li>
<p>Data freshness is a big issue, as they offer pre-collected data updated monthly by default.</p>
</li>
</ul>
<p><strong>TLDR Verdict</strong></p>
<p>If you're looking for granular data points, People Data Labs provides the highest number of data points in the list.</p>
<h3 id="5-a-hrefhttpswwwlead411com-relnofollow-lead411a">5. <a href="https://www.lead411.com/?ref=nubela.co" rel="nofollow"> Lead411</a></h3>
<p>Another B2B data provider, Lead411 is a web-based lead generation tool that assists people in discovering contact details for vital decision-makers from major corporations around the world. I'm not sure of their claim as the "Only Unlimited B2B data provider" but it is an excellent choice if you're looking for a tool that focuses on identifying companies showing signs of readiness to buy.</p>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfoMFc-by0jTq2AsMjHigj2p5YxT7o7Uvnv27SzX562E3AVkAwMSOwZ_Pyxbc3lrTWOaU7yrLX2p7FNO8fjq688IcatjytQLPesk0xlhBjJPr0FV4kBWFBwqFnsf7bVIvDl_s8dAg?key=3iAh3hcLhMs5avK2qPXFapFg" alt="Lead411 Landing Page" loading="lazy"></p>
<p>What sets Lead411 apart is its verified email accuracy. You don't just get enriched company data, but also reliable communication channels to reach decision-makers. Features like trigger events notify you of key changes in a company, such as funding rounds or hiring sprees.</p>
<ul>
<li>
<p><strong>Data Freshness:</strong> Lead411 claims their databases are updated 'frequently' but there are no specific periods mentioned. I have to agree, considering their positive customer reviews and acclaimed data accuracy.</p>
</li>
<li>
<p><strong>Data points:</strong> Lead411 has a database of 450 million global contacts. Each contact profile has data points like name, title, email, phone number, and company information.</p>
</li>
<li>
<p><strong>Integrations:</strong> Supports integrations with 20+ CRMs like Salesforce, HubSpot and Pipedrive.</p>
</li>
<li>
<p><strong>Legal Compliance:</strong> Lead411 is both GDPR and CCPA compliant.</p>
</li>
</ul>
<p>**<a href="http://lead411.com/pricing?ref=nubela.co" rel="nofollow"> Lead411 Pricing</a></p>
<table>
<thead>
<tr>
<th style="text-align:center">Plans</th>
<th style="text-align:center">Details</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:center">Free</td>
<td style="text-align:center">7 days free trial ✅<br> 50 Exports</td>
</tr>
<tr>
<td style="text-align:center">Basic paid</td>
<td style="text-align:center">$99/mo</td>
</tr>
<tr>
<td style="text-align:center">High-end paid</td>
<td style="text-align:center">Custom usage and pricing</td>
</tr>
</tbody>
</table>
<p><strong>Lead411 Pros and Cons</strong></p>
<p><strong>Pros:</strong></p>
<ul>
<li>
<p>Email verification ensures high email accuracy rates and reduced bounce rates for outreach campaigns.</p>
</li>
<li>
<p>Powerful search engine &amp; advanced filters enable users to quickly find the right person or organization.</p>
</li>
</ul>
<p><strong>Cons:</strong></p>
<ul>
<li>
<p>US-centric dataset; insufficient data from other regions like Europe, Asia and Latin America.</p>
</li>
<li>
<p>Limited customer support options available (no phone support).</p>
</li>
</ul>
<p><strong>TLDR Verdict</strong></p>
<p>If you are looking for a sales-engagement tool that helps with outreach and has a free trial, this is yet another top choice.</p>
<h3 id="7-a-hrefhttpsrocketreachco-relnofollow-rocketreacha">7. <a href="https://rocketreach.co/?ref=nubela.co" rel="nofollow"> RocketReach</a></h3>
<p>RocketReach is a lead intelligence platform for researching names, job positions, and email addresses.</p>
<p>It has features like Chrome extension, advanced search &amp; bulk lookup, everything to make your search for contact information quick and easy.</p>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXeJLSSprLD1LYNywg5pt9vjZNdGIq48prb9sTuh3YcOXcK_NL4dVOZR7nsmCo3pbfZBJNkD9dUedqqrq0sjxzMKd_ejVxXRc4kImD5hG7Zcac6ueqPX3nsso3vJ9j-ZqhmEo-M-dQ?key=3iAh3hcLhMs5avK2qPXFapFg" alt="RocketReach Landing Page" loading="lazy"></p>
<p>An impressive and versatile tool for sales, RocketReach is widely used for cold email outreach, targeted campaigns, lead nurturing, and recruiting efforts. However, keep an eye out for the steep cost and the platform complexity.</p>
<ul>
<li>
<p><strong>Data Freshness:</strong> RocketReach updates their database daily; as soon as they discover new and changed information.</p>
</li>
<li>
<p><strong>Data Points:</strong> RocketReach provides over <a href="https://knowledgebase.rocketreach.co/hc/en-us/articles/22782545115035-What-Data-is-Available-on-Company-Profiles?ref=nubela.co" rel="nofollow"> 20 different exportable data points</a> on company and individual profiles.</p>
</li>
<li>
<p><strong>Integrations:</strong> <a href="https://rocketreach.co/resources/products/integrations/?ref=nubela.co" rel="nofollow"> Supports integrations</a> with various CRMs and automation tools like Zapier, Bullhorn and Salesforce.</p>
</li>
<li>
<p><strong>Legal Compliance:</strong> RocketReach is CCPA compliant and does not confirm GDPR compliance in its privacy policy.</p>
</li>
</ul>
<p><strong><a href="https://rocketreach.co/pricing?ref=nubela.co" rel="nofollow"> RocketReach Pricing</a></strong></p>
<table>
<thead>
<tr>
<th style="text-align:center">Plans</th>
<th style="text-align:center">Details</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:center">Free</td>
<td style="text-align:center">Free Trial Available <br> 5 free lookups/ mo</td>
</tr>
<tr>
<td style="text-align:center">Basic Paid</td>
<td style="text-align:center">$70/ mo</td>
</tr>
<tr>
<td style="text-align:center">High-end Paid</td>
<td style="text-align:center">$300/ mo</td>
</tr>
</tbody>
</table>
<p><strong>RocketReach Pros and Cons</strong></p>
<p><strong>Pros:</strong></p>
<ul>
<li>
<p>Ability to look up contacts via Professional Social Network or Facebook profile.</p>
</li>
<li>
<p>Real-time email verification for accuracy</p>
</li>
<li>
<p>Chrome browser extension for quick access</p>
</li>
</ul>
<p><strong>Cons:</strong></p>
<ul>
<li>
<p>Not as much emphasis on phone numbers as on emails.</p>
</li>
<li>
<p>Potentially expensive compared to alternatives; free trial not as enticing.</p>
</li>
<li>
<p>Advanced features are only accessible in premium plans</p>
</li>
</ul>
<p><strong>TLDR Verdict</strong></p>
<p>This service does not place as much emphasis on numbers as it does on emails. Keep that in mind when deciding on this service.</p>
<h3 id="8-a-hrefhttpsleadiqcom-relnofollow-leadiqa">8. <a href="https://leadiq.com/?ref=nubela.co" rel="nofollow"> LeadIQ</a></h3>
<p>LeadIQ is a platform that increases the efficiency of sales teams by capturing and sequencing contact information with a single click.</p>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcO-wjidXoEAp2SCnnjsqIkkkxRFro5UDkKrM25t0Jw2aZmm77iGJ9jPYpJ1A20s0wbaZxGeCBdT7fc8N7wFlsu0nSR7MowDZwQgyUXOK_Kfi_1XOoauIbyDYql3ToCDWVywgSFsw?key=3iAh3hcLhMs5avK2qPXFapFg" alt="LeadIQ Landing Page" loading="lazy"></p>
<p>The platform combines prospect data, sales triggers tracking, and personalized cold outreach. You can find and verify email addresses, build prospect lists, and sync contact data to your CRM.</p>
<p>Using LeadIQ's Chrome extension, you can capture your prospects to a dedicated list in your account while surfing on any website like LikedIn. It's just that easy. You can also sync the list as leads or contacts to Salesforce, Google Sheets, or export as a CSV.</p>
<ul>
<li>
<p><strong>Data Freshness:</strong> Since you're using a chrome extension and pulling data straight off the website, you get real-time data.</p>
</li>
<li>
<p><strong>Data Points:</strong> 20+  data points individual and company profiles.</p>
</li>
<li>
<p><strong>Integrations:</strong> <a href="https://leadiq.com/integrations/overview?ref=nubela.co" rel="nofollow">Supports integrations</a> with popular tools like Hubspot and Salesforce.</p>
</li>
<li>
<p><strong>Legal Compliance:</strong> LeadIQ is GDPR and CCPA compliant.</p>
</li>
</ul>
<p><strong><a href="https://leadiq.com/pricing?ref=nubela.co" rel="nofollow"> LeadIQ Pricing</a></strong></p>
<table>
<thead>
<tr>
<th style="text-align:center">Plans</th>
<th style="text-align:center">Details</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:center">Free</td>
<td style="text-align:center">Free Version Available ✅<br> (50 verified emails, 5 contacts)</td>
</tr>
<tr>
<td style="text-align:center">Basic Paid</td>
<td style="text-align:center">$45/ mo</td>
</tr>
<tr>
<td style="text-align:center">High-end Paid</td>
<td style="text-align:center">Custom Usage and Pricing</td>
</tr>
</tbody>
</table>
<p><strong>LeadIQ Pros and Cons</strong></p>
<p><strong>Pros:</strong></p>
<ul>
<li>
<p>AI powered email generation and verification.</p>
</li>
<li>
<p>Large database of 600 million contacts.</p>
</li>
<li>
<p>Impressive data coverage in North American markets.</p>
</li>
</ul>
<p><strong>Cons:</strong></p>
<ul>
<li>
<p>LeadIQ relies on third-party data sources for its databases.</p>
</li>
<li>
<p>Pricing plans can be steep, especially for smaller teams or startups.</p>
</li>
<li>
<p>Over emphasis on the North American region, and limited coverage on other regions.</p>
</li>
<li>
<p>Possibly inaccurate data at times due to GDPR compliance.</p>
</li>
</ul>
<p><strong>TLDR Verdict</strong></p>
<p>Easy to use, recommended if you are prospecting teams and value integrations with CRM enough to deal with its quirks like duplicate data or certain malfunctions in the integrations.</p>
<h3 id="9-a-hrefhttpsclearbitcom-relnofollow-clearbita">9. <a href="https://clearbit.com/?ref=nubela.co" rel="nofollow"> Clearbit</a></h3>
<p>Clearbit, now acquired by Hubspot, is an efficient B2B data provider that enables users to identify potential customers and develop customer profiles.</p>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXeyxdhQjtHWl6u_dZlKjHEj5_U_xr-izI9UUj0zEvIywK_d0qZqGFMPlKsfJ8ByG0_FTuYa9t36uYixr5QyzG1sAV80sNBrv5retyzGGoSYzKRqc2JstMw2Bt6ZDxrO1HyWeGvH?key=3iAh3hcLhMs5avK2qPXFapFg" alt="Clearbit Landing Page" loading="lazy"></p>
<p>Clearbit combines first-party data and third-party sources to enrich company profiles with 100+ Firmographics and technographic data that automatically updates every 30 days. The tool's ability to pair company data with decision-maker insights, creating a two-way approach to enrichment, deserves a shout.</p>
<ul>
<li>
<p><strong>Data Freshness:</strong> Records are automatically updated every 30 days.</p>
</li>
<li>
<p><strong>Data Points:</strong> With over 250 public and private data sources you can get 100+ data points on individual and company profiles.</p>
</li>
<li>
<p><strong>Integrations:</strong> Recent Hubspot acquisition has made the platform exclusive to Hubspot.</p>
</li>
<li>
<p><strong>Legal Compliance:</strong> Clearbit is CCPA-compliant and GDPR aligned.</p>
</li>
</ul>
<p><strong>Clearbit Pricing</strong></p>
<p>Clearbit's previous pricing is no longer relevant. You will have to contact Hubspot to get a quote.</p>
<p><strong>Clearbit Pros and Cons:</strong></p>
<p><strong>Pros:</strong></p>
<ul>
<li>
<p>Offers both real-time API and batch enrichment options.</p>
</li>
<li>
<p>Integrated with Hubspot, an all-in-one CRM platform.</p>
</li>
</ul>
<p><strong>Cons:</strong></p>
<ul>
<li>
<p>Users report instances of getting false data and sometimes non-existent emails.</p>
</li>
<li>
<p>Pricing is not transparent and predictable; also no free trial.</p>
</li>
<li>
<p>Clearbit lacks data in some industries, which should be improved.</p>
</li>
</ul>
<p><strong>TLDR Verdict</strong></p>
<p>An easy-to-use choice when not dealing with companies less than 10 in size as it does not provide data on companies of smaller size. Also, if you already use Hubspot as your CRM.</p>
<h3 id="10-a-hrefhttpssalesintelio-relnofollow-salesintela">10. <a href="https://salesintel.io/?ref=nubela.co" rel="nofollow"> SalesIntel</a></h3>
<p>SalesIntel is a comprehensive platform for sales and marketing, offering features for locating contact data. It is an ideal tool for business-to-business promotion, enabling marketers to access their desired audience.</p>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcL0xTz5TJspAc32aqeJFg3BsZNxj6LLQyg4v_PFZ31me5EfXk9clieV1oslTQLFHvQ69cqA4Nw2tr1cefrJKL-9r4AOrOIK_V0S7K79vXWQlHijnKm_h-m4FDtcH9miKgXAgjP5Q?key=3iAh3hcLhMs5avK2qPXFapFg" alt="SalesIntel Landing Page" loading="lazy"></p>
<p>The platform claims 95% accuracy in delivering their contact data. You get the option to access direct-dial or accurate mobile numbers with ease. Besides just basic contact information, you also get technographic and firmographic data.</p>
<ul>
<li>
<p><strong>Data Freshness:</strong> SalesIntel makes sure its data is up-to-date with re-verifications every three months, giving you data that is more precise.</p>
</li>
<li>
<p><strong>Data Points:</strong> Provides firmographic and technographic data in addition to basic data points from its database of over 90+ million contacts.</p>
</li>
<li>
<p><strong>Integrations:</strong> Supports integrations with tech solutions, like SalesLoft, Chrome, Hubspot, Salesforce and more.</p>
</li>
<li>
<p><strong>Legal Compliance:</strong> SalesIntel complies with GDPR and CCPA regulations.</p>
</li>
</ul>
<p><strong><a href="https://salesintel.io/pricing/?ref=nubela.co" rel="nofollow"> SalesIntel Pricing</a></strong></p>
<table>
<thead>
<tr>
<th style="text-align:center">Plans</th>
<th style="text-align:center">Details</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:center">Free</td>
<td style="text-align:center">14 days free trial</td>
</tr>
<tr>
<td style="text-align:center">Basic Paid</td>
<td style="text-align:center">$69/ mo</td>
</tr>
<tr>
<td style="text-align:center">High-end Paid</td>
<td style="text-align:center">Custom Usage and Pricing</td>
</tr>
</tbody>
</table>
<p><strong>SalesIntel Pros and Cons</strong></p>
<p><strong>Pros:</strong></p>
<ul>
<li>
<p>Reverifies contact data periodically.</p>
</li>
<li>
<p>Real-time Prospecting and data enrichment.</p>
</li>
<li>
<p>Research on Demand</p>
</li>
<li>
<p>Integrations</p>
</li>
</ul>
<p><strong>Cons:</strong></p>
<ul>
<li>
<p>Exports are limited to 500 contacts a day. It could be limiting for teams working with large volume data.</p>
</li>
<li>
<p>Contacts are not pre-verified. Users might have to wait as they verify the details.</p>
</li>
</ul>
<p><strong>TLDR Verdict</strong></p>
<p>Consider this if you don't need segmented demographic information and need an easy-to-use option.</p>
<h3 id="11-a-hrefhttpswwwupleadcom-relnofollow-upleada">11. <a href="https://www.uplead.com/?ref=nubela.co" rel="nofollow"> UpLead</a></h3>
<p>UpLead is a highly rated B2B lead generation platform designed to help streamline and maximize your lead-generation operations by providing reliable contact data.</p>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXeR4xLsDBlzNO3S93A0UAX7BpTVEx4ByAZDOvgPOF-7LCz_VwEyYCPozlZdZWzVB51qM4L0hP00t4146KwO4xRUTwdGd1xm1fQngmU2oq4Ubu4-3ZGQgnZx1WdEEAbuvL7Ne5-Lig?key=3iAh3hcLhMs5avK2qPXFapFg" alt="UpLead Landing Page" loading="lazy"></p>
<p>Instead of providing raw web scraped datasets, they provide a clean prospecting list, which you can then plug into your CRM. Uplead prides itself with its dedication to providing accurate data, backed up by real-time verified emails, mobile numbers and intent data.</p>
<ul>
<li>
<p><strong>Data Freshness:</strong> UpLead updates their datasets on a monthly basis. Limited information is available regarding the specifics.</p>
</li>
<li>
<p><strong>Data Points:</strong> People and company profile, along with verified email addresses and intent data.</p>
</li>
<li>
<p><strong>Integrations:</strong> UpLead supports integration with CRMs like Salesforce, HubSpot, Insightly, Pipedrive, and more.</p>
</li>
<li>
<p><strong>Legal Compliance:</strong> UpLead complies with GDPR and CCPA regulations.</p>
</li>
</ul>
<p><strong><a href="https://www.uplead.com/pricing/?ref=nubela.co" rel="nofollow"> UpLead Pricing</a></strong></p>
<table>
<thead>
<tr>
<th style="text-align:center">Plans</th>
<th style="text-align:center">Details</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:center">Free</td>
<td style="text-align:center">7 day free trial available ✅ <br> 5 credits</td>
</tr>
<tr>
<td style="text-align:center">Basic Paid</td>
<td style="text-align:center">$99/mo</td>
</tr>
<tr>
<td style="text-align:center">High-end Paid</td>
<td style="text-align:center">Customizable usage and pricing</td>
</tr>
</tbody>
</table>
<p><em><strong>Note:</strong> Free trials require credit card information to activate.</em></p>
<p><strong>Uplead Pros and Cons</strong></p>
<p><strong>Pros:</strong></p>
<ul>
<li>
<p>Commendable user-interface; allows very precise searches.</p>
</li>
<li>
<p>Provides detailed contact information (email and phone number); 95% accuracy guaranteed.</p>
</li>
<li>
<p>Excellent tracking of lookups.</p>
</li>
</ul>
<p><strong>Cons:</strong></p>
<ul>
<li>
<p>Limited database coverage; only has leads from North America.</p>
</li>
<li>
<p>The number of "valid" leads cuts down the amount of total leads. Even if a large amount of leads are generated, only a small % of them are pursuable "valid" leads.</p>
</li>
</ul>
<p><strong>TLDR Verdict</strong></p>
<p>If you need accurate data and are willing to make the tradeoff with a lesser number of data points, consider this as one of the top options.</p>
<h3 id="12-a-hrefhttpscorpowlercom-relnofollow-owlera">12. <a href="https://corp.owler.com/?ref=nubela.co" rel="nofollow"> Owler</a></h3>
<p>Owler is one of the largest crowdsourced B2B data providers, where it pulls insights from its active user community of over 5 million professionals. Thanks to the community's contributions, the platform houses fresh, up-to-date insights even on smaller or emerging companies that might be underrepresented in other databases. The data is later verified by Owler's data science team, so you can be assured they're accurate.</p>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXd3SbdRRnzZOMfB4At2r21ABYJ9fBsDDvUqedWyQuyMb_B5Ks_CZ-l6DDPF8FU0IHPHlCWLdci51lcB9TYRUXFoaMYF6HERNxUC9mRyfXmF2J3GSbqBkjlLhixZlq6_2G9KUdFjvw?key=3iAh3hcLhMs5avK2qPXFapFg" alt="Owler Landing Page" loading="lazy">\</p>
<p>The platform is different from the norm, and is an ideal choice for market research, offering comprehensive business intelligence for B2B applications. Marketers can take advantage of this tool as part of their prospect-tracking efforts.</p>
<p>Owler is a great choice if you need to understand not just a company but its position in the market, including competitors, estimated revenue, and leadership details. This data is aggregated from its own analytics, user contributions, and public sources, so you get an idea of how a company fits into its industry landscape.</p>
<ul>
<li>
<p><strong>Data Freshness:</strong> Owler's databases are updated in real time by the community. They receive over 500,000 updates to their company profile databases every month.</p>
</li>
<li>
<p><strong>Data Points:</strong> Owler provides extensive data points, great for those looking for regular updates on specific companies or industries like funding, merger &amp; acquisition updates, press release updates, competitor updates, and more.</p>
</li>
<li>
<p><strong>Integrations:</strong> Owler integrates with popular CRM platforms like Hubspot, Salesforce and Marketo.</p>
</li>
<li>
<p><strong>Legal Compliance:</strong> Owler is GDPR and CCPA compliant.</p>
</li>
</ul>
<p><strong><a href="https://www.owler.com/checkout/owlerpro?utm_campaign=Pricing_Page&utm_medium=topnav&utm_source=cms" rel="nofollow"> Owler Pricing</a></strong></p>
<table>
<thead>
<tr>
<th style="text-align:center">Plans</th>
<th style="text-align:center">Details</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:center">Free</td>
<td style="text-align:center">Free Plan Available ✅<br> Follow up to 5 companies <br> Access 1 company profile per month</td>
</tr>
<tr>
<td style="text-align:center">Basic Paid</td>
<td style="text-align:center">$39/mo</td>
</tr>
<tr>
<td style="text-align:center">High-end Paid</td>
<td style="text-align:center">Custom usage and pricing</td>
</tr>
</tbody>
</table>
<p><strong>Owler Pros and Cons</strong></p>
<p><strong>Pros:</strong></p>
<ul>
<li>
<p>First-hand data, crowdsourced by professionals, gives real-time updates.</p>
</li>
<li>
<p>Excellent for tracking competitors and market trends.</p>
</li>
</ul>
<p><strong>Cons:</strong></p>
<ul>
<li>
<p>Smaller database size of only 15 million profiles in comparison to other tools.</p>
</li>
<li>
<p>Crowdsourced data can be less reliable even with verification by the data science team.</p>
</li>
</ul>
<p><strong>TLDR Verdict</strong></p>
<p>If enriched company details aren't your top priority, Owler stacks up to be a worthy B2B Database choice.</p>
<h3 id="13-a-hrefhttpapolloio-relnofollow-apolloioa">13. <a href="http://apollo.io/?ref=nubela.co" rel="nofollow"> Apollo.io</a></h3>
<p>With a database of 270M contacts, Apollo.io has one sole purpose; boost sales engagement to the max.</p>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXd3gpZQkUwYpHvSt3nYwcEPKgeN4FJUc9Sx7rtLPMzJSy28mIZQW2e7vJvRs4ejdE1lCg8tlEUj0FECKtdUTH7oqWmj2ou3a_zR1sCBEIO7IHhWf8T0hng4_3pomDPEFfK89612?key=3iAh3hcLhMs5avK2qPXFapFg" alt="Apollo.io Landing Page" loading="lazy"></p>
<p>Apollo is a company B2B data provider that refreshes your systems with their contact databases. Their Enrich feature and the Data Health Center can identify incomplete data, flag inaccurate data (or out-dated data) and track contacts without email addresses in your CRM.</p>
<ul>
<li>
<p><strong>Data Freshness:</strong> Apollo frequently updates their databases in real-time. As soon as Apollo's system captures a data signal, they update their data points.</p>
</li>
<li>
<p><strong>Data Points:</strong> With a database of over 270+ million individual and company profiles, and an advanced filter, you can pull contact information, buying intent, and more.</p>
</li>
<li>
<p><strong>Integrations:</strong> Apollo integrates with CRMs like Hubspot, Pipedrive and Salesforce.</p>
</li>
<li>
<p><strong>Legal Compliance:</strong> Apollo is CCPA compliant.</p>
</li>
</ul>
<p><a href="https://www.apollo.io/pricing?ref=nubela.co" rel="nofollow"> Apollo.io Pricing</a></p>
<table>
<thead>
<tr>
<th style="text-align:center">Plans</th>
<th style="text-align:center">Details</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:center">Free</td>
<td style="text-align:center">Free Plan Available ✅<br> 1,200 Credits / year</td>
</tr>
<tr>
<td style="text-align:center">Basic Paid</td>
<td style="text-align:center">$59/user/mo</td>
</tr>
<tr>
<td style="text-align:center">High-end Paid</td>
<td style="text-align:center">$149/user/mo</td>
</tr>
</tbody>
</table>
<p><strong>Apollo.io Pros and Cons</strong></p>
<p><strong>Pros:</strong></p>
<ul>
<li>
<p>65+ advanced search filters.</p>
</li>
<li>
<p>Serious automation features; Almost every repetitive sales and marketing tasks can be automated.</p>
</li>
<li>
<p>Seamless integration with CRMs like Salesforce for workflow efficiency.</p>
</li>
</ul>
<p><strong>Cons:</strong></p>
<ul>
<li>
<p>Limited data outside of the US.</p>
</li>
<li>
<p>Full-on automation poses a risk of losing personal touch.</p>
</li>
<li>
<p>High tier pricing, hard to access for small businesses and startups.</p>
</li>
<li>
<p>Not GDPR compliant.</p>
</li>
<li>
<p>Instances of outdated or incorrect data despite regular updates.</p>
</li>
</ul>
<p><strong>TLDR Verdict</strong></p>
<p>If your priority is sales engagement, Apollo houses a number of tools to support you throughout the sales funnel.</p>
<h3 id="14-a-hrefhttpscoresignalcomrelnofollow-coresignala">14. &lt;a href="<a href="https://coresignal.com/%22rel=%22nofollow?ref=nubela.co">https://coresignal.com/"rel="nofollow</a>"&gt; Coresignal</h3>
<p>Another B2B data provider, Coresignal houses large datasets of public and private data, which they either scraped themselves or acquired through third-party means. They also have live scraping APIs, but these are more limited in scope.</p>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXddu1TM_bRMhpWiOmO5ikfei-3b45B4FJS2MUjWV3ZdIWFR2BFgu4LUl6iX2vcY27BaTf0NSB7UJNYLVdyfVKgbvJlTYr_cUaRw37wktY5M2RhWnb_-wdtHPIemb3xDj_I-UPgACw?key=3iAh3hcLhMs5avK2qPXFapFg" alt="Coresignal Landing Page" loading="lazy"></p>
<p>Coresignal aggregates data from 20 different sources and hence boasts 731+ million employee data records, 102+ million company data records.</p>
<ul>
<li>
<p><strong>Data Freshness:</strong> Coresignal's datasets are updated monthly; a separate option is available for live scraping via APIs.</p>
</li>
<li>
<p><strong>Data Points:</strong> Coresignal is missing important data points such as contact info (phone numbers &amp; emails) from their datasets.</p>
</li>
<li>
<p><strong>Integrations:</strong> Coresignal's six user-friendly APIs help integrate the tool with numerous other sales and marketing tools.</p>
</li>
<li>
<p><strong>Legal Compliance:</strong> The company is GDPR and CCPA compliant.</p>
</li>
</ul>
<p><a href="https://coresignal.com/pricing/?ref=nubela.co" rel="nofollow"> Coresignal Pricing</a></p>
<table>
<thead>
<tr>
<th style="text-align:center">Plans</th>
<th style="text-align:left">Details</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:center">Free</td>
<td style="text-align:left">Free Version Available (200 collect credits; 400 search credits)</td>
</tr>
<tr>
<td style="text-align:center">Basic Paid</td>
<td style="text-align:left">$49/ mo</td>
</tr>
<tr>
<td style="text-align:center">High-end Paid</td>
<td style="text-align:left">$1,500/ mo</td>
</tr>
</tbody>
</table>
<p><strong>Pros and Cons of Coresignal</strong></p>
<p><strong>Pros:</strong></p>
<ul>
<li>
<p>Large dataset, aggregates data from a significant number of sources (20).</p>
</li>
<li>
<p>Provides a lot of data formats: JSON, Parquet, CSV, Other (upon request).</p>
</li>
</ul>
<p><strong>Cons:</strong></p>
<ul>
<li>
<p>Reports of customers receiving out-dated data. See <a href="https://nubela.co/blog/proxycurl-api-vs-coresignal/#proxycurl-api-vs-coresignal">Proxycurl vs. Coresignal</a>.</p>
</li>
<li>
<p>"Real-time" API does not return data immediately.</p>
</li>
</ul>
<p><strong>TLDR Verdict</strong></p>
<p>With Coresignal, you get data from various sources, and a large dataset. Missing contact information can be a turn off though.</p>
<h3 id="15-a-hrefhttpswwwzoominfocom-relnofollow-zoominfoa">15. <a href="https://www.zoominfo.com/?ref=nubela.co" rel="nofollow"> ZoomInfo</a></h3>
<p>Similar to Coresignal, Zoominfo also sells access to its database on a subscription basis. It deals with B2B data; extensive company and contact information, and is equipped with advanced search capabilities and integration options.</p>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXeKdtljjCe_yXuRS3ACbBvslHDzY2HfC_ns9nz59L_gUS7es5vS5Rg9Q0N3L5XyoV71sxWf5-ns2Vcmti0yUJOEvXE8LEh18INIgvGka0A7Cf-Wzhr5fbq0Tg0e__X-P7iqjTmUAQ?key=3iAh3hcLhMs5avK2qPXFapFg" alt="ZoomInfo Landing Page" loading="lazy"></p>
<p>ZoomInfo boasts datasets of over 321 million individual contacts and 104 million company profiles and remains one of the most well-renowned B2B lead enrichment platforms. Aside from enrichment, Zoominfo also supplies marketing and recruitment solutions.</p>
<p>One thing to note is their data is pretty US-centric, so if you're looking for wider geographical coverage, Zoominfo might come up short. It doesn't take away the fact that they provide a variety of solutions, and different packages for data enrichment.</p>
<ul>
<li>
<p><strong>Data Freshness:</strong> Zoominfo manually updates their database based on change detection.</p>
</li>
<li>
<p><strong>Data points:</strong> Zoominfo provides company profile, business contacts and companies contact database, intent data. They also generate and analyze customer interactions across communication channels, like sales calls, emails, and business websites.</p>
</li>
<li>
<p><strong>Integrations:</strong> ZoomInfo currently integrates popular CRMs like Salesforce, HubSpot and Pipedrive. Other marketing and sales management tools include Outreach, Salesloft, Eloqua, Marketo, and Zoom.</p>
</li>
<li>
<p><strong>Legal Compliance:</strong> Similar to most in this list, Zoominfo is GDPR and CCPA compliant. Additionally, they are also ISO 27001 compliant.</p>
</li>
</ul>
<p><strong><a href="https://www.zoominfo.com/pricing?ref=nubela.co" rel="nofollow"> ZoomInfo Landing Page</a></strong></p>
<p>Their pricing information is not publicly available, although some sources claim their plan starts from $14,995/ year.</p>
<p><strong>Pros and Cons of Zoominfo:</strong></p>
<p><strong>Pros:</strong></p>
<ul>
<li>
<p>Accurate contact information, along with a large database.</p>
</li>
<li>
<p>Supports workflow automation.</p>
</li>
<li>
<p>Provides a granular view with advanced search options, along with intent data.</p>
</li>
</ul>
<p><strong>Cons:</strong></p>
<ul>
<li>
<p>Expensive plans. Too many data package options bring add-on costs.</p>
</li>
<li>
<p>Users must expect a steep learning curve.</p>
</li>
<li>
<p>Previously criticized for prioritizing new features at the expense of its core product.</p>
</li>
</ul>
<p><strong>TLDR Verdict</strong></p>
<p>A noteworthy B2B provider, if you primarily work with North American data.</p>
<h3 id="16-a-hrefhttpswwwdata-axlecom-relnofollow-data-axlea">16. <a href="https://www.data-axle.com/?ref=nubela.co" rel="nofollow"> Data Axle</a></h3>
<p>Data Axle, formerly InfoGroup, continues to deliver enriched company data, complemented by robust firmographics and advanced segmentation tools. The depth of Data Axle's data collection is amazing. They use verified public records, business registrations, and direct phone verification to verify their data.</p>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcqqhyfTtsPECTkdCfiWUgBTzInNF19rYPAhTXeZZZZjinHs1690QSfFDgvRsHuCqQk29k9M2KR_jdSu_FZs97ViGRph02PxDZLwhnH1tu9uuPAE2seN2d-TFeSWNN3NXFYDjHafA?key=3iAh3hcLhMs5avK2qPXFapFg" alt="Data Axle Landing Page" loading="lazy"></p>
<p>The data provider's hyper-specific segmentation is a feature that deserves a shout. It allows you to target companies based on criteria like location, revenue, or even niche industries.</p>
<ul>
<li>
<p><strong>Data Freshness:</strong> Data Axle updates their databases monthly.</p>
</li>
<li>
<p><strong>Data Points:</strong> Data Axle currently provides over 400 attributes to their customers from over 100 different sources.</p>
</li>
<li>
<p><strong>Integrations:</strong> Data Axle <a href="https://www.data-axle.com/our-data/integrations/?ref=nubela.co" rel="nofollow">supports integrations</a> with numerous platforms like Salesforce and Microsoft Dynamics.</p>
</li>
<li>
<p><strong>Legal Compliance:</strong> The B2B data provider is GDPR and CCPA compliant.</p>
</li>
</ul>
<p><strong>a href="<a href="https://www.data-axle.com/what-we-do/credit-solutions/plans/?ref=nubela.co">https://www.data-axle.com/what-we-do/credit-solutions/plans/</a>" rel="nofollow"&gt; Data Axle Pricing</strong></p>
<table>
<thead>
<tr>
<th style="text-align:center">Plans</th>
<th style="text-align:center">Details</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:center">Free</td>
<td style="text-align:center">30 day free trail ✅</td>
</tr>
<tr>
<td style="text-align:center">Pay-as-you-go</td>
<td style="text-align:center">$17.95 per credit report</td>
</tr>
<tr>
<td style="text-align:center">Basic Paid (Monthly)</td>
<td style="text-align:center">$195/mo</td>
</tr>
<tr>
<td style="text-align:center">Basic Paid (Annual)</td>
<td style="text-align:center">$179/mo</td>
</tr>
</tbody>
</table>
<p><strong>Data Axle Pros and Cons</strong></p>
<p><strong>Pros:</strong></p>
<ul>
<li>
<p>Extremely accurate data due to rigorous verification processes.</p>
</li>
<li>
<p>Ideal for industries requiring compliance and precision, like finance.</p>
</li>
<li>
<p>Supports deep segmentation for precise targeting.</p>
</li>
</ul>
<p><strong>Cons:</strong></p>
<ul>
<li>
<p>Over-reliance on historical data; data updates may not suit fast-paced industries.</p>
</li>
<li>
<p>High-end pricing.</p>
</li>
</ul>
<p><strong>TLDR Verdict</strong></p>
<p>Great for working with multiple segmented audiences.</p>
<h3 id="17-a-hrefhttphunterio-relnofollow-hunterioa">17. <a href="http://hunter.io/?ref=nubela.co" rel="nofollow"> Hunter.io</a></h3>
<p>My last B2B data provider on the list is Hunter.io, a perfect tool to find and verify emails, to support email campaigns. It is an essential resource for marketers, recruiters, and sales teams looking to connect with key decision-makers and prospects.</p>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfDWXnVCgnlnVGJ2QVReKrwLgCyhc0bXkX1TSLflFZ8qupmrI-g8yiWh-_SkqU3uI0dQ_1yno8LtzKVVzLFScY1ChktXQpx93etkdBqS3ahFVCNH6bt_rprkfN58Et2H-dtCnJ30A?key=3iAh3hcLhMs5avK2qPXFapFg" alt="Hunter.io Landing Page" loading="lazy"></p>
<p>Using Hunter, you can extract email addresses associated with a certain domain, build a targeted contact list, automate your outreach message and scale your campaign.</p>
<ul>
<li>
<p><strong>Data Freshness:</strong> Hunter.io claims they frequently update their databases, but fail to provide a specific period.</p>
</li>
<li>
<p><strong>Data Points:</strong> The B2B provider focuses more on email-related data points like sender reputation and bounce rates.</p>
</li>
<li>
<p><strong>Integrations:</strong> <a href="https://hunter.io/integrations?ref=nubela.co" rel="nofollow"> Hunter.io integrates</a> with many popular tools like Huspot, Salesforce and Pipedrive.</p>
</li>
<li>
<p><strong>Legal Compliance:</strong> Hunter.io is GDPR compliant.</p>
</li>
</ul>
<p><strong><a href="https://hunter.io/pricing?ref=nubela.co" rel="nofollow">Hunter.io Pricing</a></strong></p>
<table>
<thead>
<tr>
<th style="text-align:center">Plans</th>
<th style="text-align:center">Details</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:center">Free</td>
<td style="text-align:center">Free Plan Available ✅</td>
</tr>
<tr>
<td style="text-align:center">Basic Paid</td>
<td style="text-align:center">$34/mo</td>
</tr>
<tr>
<td style="text-align:center">High-end Paid</td>
<td style="text-align:center">$349/mo</td>
</tr>
</tbody>
</table>
<p><strong>Hunter.io Pros and Cons</strong></p>
<p><strong>Pros:</strong></p>
<ul>
<li>
<p>Easy-to-follow tutorial and simple enough UI.</p>
</li>
<li>
<p>Email verification is excellent in dodging bounce rates.</p>
</li>
</ul>
<p><strong>Cons:</strong></p>
<ul>
<li>
<p>Massive priority on email discovery and outreach, better tools available for dedicated scraping.</p>
</li>
<li>
<p>Can match false positives on email verifications.</p>
</li>
</ul>
<p><strong>TLDR Verdict</strong></p>
<p>Great tool if you're looking for B2B data with additional support for your email campaigns.</p>
<h2 id="streamline-your-choice-expand-your-reach">Streamline Your Choice, Expand Your Reach</h2>
<p>B2B data is in high demand, and hence the market is flooded with providers. To help you navigate this crowded space, I've carefully evaluated and ranked the top 17 based on key criteria. Now, it's up to you to assess your specific needs and pick the one that aligns best with your goals.</p>
<p>Here's an exclusive tip. Choose Proxycurl. With over 500 million individual and company profiles and 21 APIs, you can access all the data you need and seamlessly integrate it into your tech stack. Proxycurl shines with its unmatched flexibility and affordability, costing just $0.020 per profile, an unmatched price point.</p>
<p>Ready to tap into unlimited B2B data? <a href="https://nubela.co/proxycurl/auth/register?ref=nubela.co">Sign up</a> with Proxycurl today and get free credits.</p>
<div class="kg-card kg-toggle-card" data-kg-toggle-state="close">
            <div class="kg-toggle-heading">
                <h4 class="kg-toggle-heading-text"><span style="white-space: pre-wrap;">What is B2B Prospecting?</span></h4>
                <button class="kg-toggle-card-icon" aria-label="Expand toggle to read content">
                    <svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"></path>
                    </svg>
                </button>
            </div>
            <div class="kg-toggle-content"><p dir="ltr"><a href="https://nubela.co/proxycurl/solutions/accelerate-growth?ref=nubela.co"><u><span class="underline" style="white-space: pre-wrap;">B2B prospecting</span></u></a><span style="white-space: pre-wrap;"> is the process of identifying potential customers who are likely to be interested in a company’s products or services. Having a list of prospects is essential for any type of B2B marketing campaign.</span></p><p dir="ltr"><span style="white-space: pre-wrap;">It is possible to create lists of potential customers in the B2B world via a variety of techniques.It involves researching, analyzing, and targeting potential customers through a variety of methods such as utilizing Professional Social Network Data, creating an ideal customer profile, obtaining assistance from B2B data suppliers, forming relationships, and investigating before employing email campaigns, cold calling, and other forms of digital marketing.</span></p><br></div>
        </div><div class="kg-card kg-toggle-card" data-kg-toggle-state="close">
            <div class="kg-toggle-heading">
                <h4 class="kg-toggle-heading-text"><span style="white-space: pre-wrap;">What is a B2B data provider?</span></h4>
                <button class="kg-toggle-card-icon" aria-label="Expand toggle to read content">
                    <svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"></path>
                    </svg>
                </button>
            </div>
            <div class="kg-toggle-content"><p dir="ltr"><span style="white-space: pre-wrap;">To be a B2B data provider, a company must empower their clients with information about other companies. This information can include company names, contact information, industry classifications, and other details that are useful for B2B marketing and sales efforts.</span></p></div>
        </div><div class="kg-card kg-toggle-card" data-kg-toggle-state="close">
            <div class="kg-toggle-heading">
                <h4 class="kg-toggle-heading-text"><span style="white-space: pre-wrap;">What is the outlook for the B2B market?</span></h4>
                <button class="kg-toggle-card-icon" aria-label="Expand toggle to read content">
                    <svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"></path>
                    </svg>
                </button>
            </div>
            <div class="kg-toggle-content"><p dir="ltr"><span style="white-space: pre-wrap;">CMI reports the global B2B Events Market is expected to reach USD 929.29 billion by 2032, while the US B2B market is expected to cross the $70 billion mark by 2026.</span></p></div>
        </div> ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ Firmographics: Everything You Need to Know in 2025 ]]></title>
        <description><![CDATA[ Firmographics is a set of B2B data points used to form market segments. These data points are indispensable for company success. Learn how and where you can get access to firmographic data. ]]></description>
        <link>https://nubela.co/blog/what-is-firmographics-definition-benefits-database/</link>
        <guid isPermaLink="false">638db76405ceb40001916400</guid>
        <category><![CDATA[ proxycurl ]]></category>
        <dc:creator><![CDATA[ Sese | Technical Writer ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/10/IMG_4677.jpeg"/>
        <pubDate>Wed, 15 Jan 2025 18:06:00 +0800</pubDate>
        <media:content url="" medium="image"/>
        <content:encoded><![CDATA[ <p>If you want to stay ahead in the B2B market, consumer satisfaction should be your top priority. Your customers judge what you offer based on their unique needs, and market segmentation helps you figure out exactly who your customers are and what their needs are.</p><p><strong>Firmographics</strong> is one type of data that focuses on B2B (business-to-business) customers. Companies use firmographics and demographics data to create customer profiles, that are eventually used to market their products and services.<br><br>While demographics are more focused on building profiles by grouping the population of a certain geographic region under different characteristics, firmographics concerns itself with identifying the right sector of the audience, it does this by dividing potential clients into different groups to work on customer satisfaction. </p><p>Let's dive into more details on firmographics.</p><h2 id="what-is-firmographic-data">What is Firmographic data?</h2>
<p>Firmographic data is information about a company's key characteristics that can be used to define market segments and gain insights into the needs and desires of these organizations. It can include information like company size, industry type, company reach, annual revenue and expenses, ownership type, growth trend and much more.</p>
<p>Like other primary forms of segmentation, Firmographic data is collected and then used to analyze B2B audiences based on their characteristics, making it much easier to target, customize, market, and identify high-value customers via the <strong>Firmographic Segmentation</strong> process.</p>
<h2 id="attributes-of-firmographic-segmentation">Attributes of Firmographic segmentation</h2>
<p>Firmographic segmentation examines and categorizes B2B audiences based on common characteristics. While B2B companies can use a plethora of variables for firmographic segmentation, we'll focus on the five most important aspects of firmographic segmentation:</p>
<h3 id="1-industry">1. Industry</h3>
<p>The Industry is divided into 4 broad categories.</p>
<ul>
<li>Primary Industry: Agriculture, Mining, Fishing.</li>
<li>Secondary Industry: Manufacturing, Processing, Construction.</li>
<li>Tertiary Industry: Hotels, Real-estates, Restaurants.</li>
<li>Quaternary Industry: Health Care, Education.</li>
</ul>
<p>This feature is essential for firmographic segmentation. It entails categorizing your target audience based on the type of product/service they offer. Targeting the right industry can help your segmentation efforts, and vice versa. It is beneficial to understand the specific industry in which your product/service is valuable.</p>
<figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2022/12/TLC_All_About_Firmographics_-_Definition-_Benefits-_Database_Main_5_Attributes_of_Firmographic_segmentation--2--1.png" class="kg-image" alt="Attributes of Firmographic Segmentation" loading="lazy" width="2048" height="1040"><figcaption><span style="white-space: pre-wrap;">Firmographic Segmentation includes: Industry, Location, Size, Status &amp; Structure, Performance, Executive title, Sales Cycle</span></figcaption></figure><h3 id="2-location">2. Location</h3>
<p>This is based on the geographical location of the target audience. It considers factors such as city, country, state, and environment. The location of a company influences how customers buy its products and determines a brand's ability to sell and distribute. This firmographic  attribute can be used by B2B marketers to identify areas where their product adds value to consumers.</p>
<h3 id="3-size">3. Size</h3>
<p>This firmographic attribute can be defined using an organization's annual revenue and [employee count](<a href="https://nubela.co/proxycurl/Professional?ref=nubela.co">https://nubela.co/proxycurl/Professional</a> Social Network/list-employee). It indicates the size of an organization, whether it is micro-scale, small-scale, medium-scale, or large-scale.</p>
<p>In order to target the right audience under the size attribute, you must first ask yourself whether your target market is a Fortune 500 company or a small start-up. You must ensure that your target market can afford what you're offering or risk losing money.</p>
<p>Similarly, an organization's employee size can indicate whether it is a small, local business, or multinational, as well as its purchasing power and likelihood of returning customers.</p>
<h3 id="4-status-and-structure">4. Status and Structure</h3>
<p>This usually refers to an organization's legal status. It could be a sole proprietorship, a partnership/limited partnership, a corporation, a limited liability company (LLC), a non-profit organization, or something else. the funding type and hierarchy differ, hence understanding which organizations would benefit the most from your product/service will inform your marketing strategies and ensure increased profits.</p>
<h3 id="5-performance">5. Performance</h3>
<p>This firmographic segmentation feature encircles an organization's accomplishment over time. It considers factors such as business execution, employment growth, financial performance, and revenue increase or decrease. Grouping your target audience based on their performance over time is an effective way to determine their current position and predict their future behavior, which is useful in developing sales and market strategies.</p>
<p>Furthermore, the <strong>Executive title</strong> and <strong>Sales cycle</strong> of a company are critical variables in firmographic segmentation. Knowing the executive titles of your target audience(s) allows you to identify the key decision-makers and influencers in your target organization. Are you aiming for the CEO, the Managing Director, or the CFO? Knowing which customers can be relied on helps you avoid wasting time and effort on the wrong decision-maker.</p>
<p>Understanding your target audience's sales cycle stage always determines the type of information you provide to them. The stages of the sales cycle are <strong>Awareness</strong>, <strong>consideration</strong>, and <strong>decision</strong>.</p>
<p>Let's take a closer look: In the awareness stage, a company is just learning about what you offer as a B2B company and is most likely looking into other options. Your brand may be considered a viable option during the consideration stage. The decision stage indicates that they have determined that your company meets all of their requirements and will select you over competing options. Knowing your target market's cycle stage allows you to know when to push them to the next cycle stage and aim for the bull's eye.</p>
<h2 id="why-is-firmographic-datahttpsnubelacobloglinkdb-an-exhaustive-dataset-of-professional-social-network-members-and-companies-important">Why is [Firmographic Data](<a href="https://nubela.co/blog/linkdb-an-exhaustive-dataset-of-Professional">https://nubela.co/blog/linkdb-an-exhaustive-dataset-of-Professional</a> Social Network-members-and-companies/) important?</h2>
<p>Firmographic data has aided many B2B organizations in identifying their target segment and ideal customers. A single approach for all types of matrices does not yield positive results. Using a different approach for each grouped segment with the help of firmographics yields the desired result.</p>
<p>Here are the advantages of firmographic data:</p>
<h3 id="1-helps-identify-b2bc2b-target-segment">1. Helps Identify B2B/C2B Target Segment</h3>
<p>Firmographic data is useful for B2B companies in identifying their target audience. B2B companies' target audience consists of decision-makers in the sector they are prospecting, such as CEOs, Managing Directors, CTOs, and CFOs.</p>
<p>Identification of these target segments is critical because they are the main influencers in your prospective organization, purchase authorization, and approval of the services you provide; this can be useful in customizing sales and marketing approaches. Additionally, understanding these segments helps create SEO-optimized content that resonates with them, and a <a href="https://www.ranktracker.com/serp-checker/?ref=nubela.co">SERP checker</a> can then evaluate how well this content ranks for relevant keywords.</p>
<figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2022/12/TLC_All_About_Firmographics_-_Definition-_Benefits-_Database_What_are_the_key_benefits_of_Firmographic--2-.png" class="kg-image" alt="Key benefits of Firmographic Data" loading="lazy" width="2048" height="1040"><figcaption><span style="white-space: pre-wrap;">Firmographic Data aids in Defining Target Segments, Enhances Marketing Campaigns, &amp; Ultimately Boosts Return on Investments (ROI)</span></figcaption></figure><h3 id="2-refines-advertising-campaignspromotional-tactics">2. Refines Advertising Campaigns - Promotional Tactics</h3>
<p>Advertising based on assumptions can be difficult today. If you make incorrect assumptions about a target audience, you may end up wasting resources if they are not interested in your product/service. Instead, by gathering as much information as possible about your target audience, you can then use that information to target ads more effectively.</p>
<p>For example, if you're running ads on L██████In (censored due to legal settlement - Referring to the professional social network), you can target audiences based on the firmographic data we discussed earlier.</p>
<h3 id="3-helps-increase-roi">3. Helps Increase ROI</h3>
<p>Understanding current and prospective customers through firmographics allows you to allocate and utilize resources in a calculated manner, resulting in the expected results and increased return on investment.</p>
<h2 id="how-do-you-get-firmographic-data">How do you get Firmographic Data?</h2>
<p>Data Acquisition, processing, and analytics are extensive processes and for them to be meaningful, up-to-date quality data is crucial. Let's look at some of the ways of data acquisition.</p>
<h3 id="1-3rd-party-websites">1. 3rd Party Websites</h3>
<p>Today, you can obtain ample information on any company with the click of a button, but the accuracy and relevance of such data can be a challenge.</p>
<p>Customer data platforms, marketing intelligence, and a company's public databases are examples of third-party websites that provide firmographic data. For B2B businesses to use for marketing and lead generation, information from these sources is accurate and reliable.</p>
<h3 id="2-conducting-surveys">2. Conducting Surveys</h3>
<p>Online surveys have grown in popularity as a cost-effective way for businesses to collect data on their customers. However, they can be time-consuming. B2B marketers, for example, can create surveys to gather information about a company's size, industry, location, and revenue.</p>
<p>Even if it appears to be a simple way to obtain direct data, there is a chance that your target audience will withhold or even refuse to provide certain information for reasons best known to them.</p>
<h3 id="3-l%E2%96%88%E2%96%88%E2%96%88%E2%96%88%E2%96%88%E2%96%88in-censored-due-to-legal-settlementreferring-to-the-professional-social-network-search">3. L██████In (censored due to legal settlement - Referring to the professional social network) Search</h3>
<p><a href="https://nubela.co/proxycurl/linkdb?ref=nubela.co">L██████In (censored due to legal settlement - Referring to the professional social network) search</a> is another popular source of firmographic data; most, if not all, businesses have a presence on Professional Social Network. It's also a low-cost method of gathering information about your target market.</p>
<h3 id="4-professional-data-provider">4. Professional Data Provider</h3>
<p>The data sources listed above are useful, but getting data from a reputable data provider is the best way to obtain massive, structured, and accurate data on your target market.</p>
<p>Proxycurl's [company profile API](<a href="https://nubela.co/proxycurl/Professional?ref=nubela.co">https://nubela.co/proxycurl/Professional</a> Social Network/company) provides firmographic data, allowing you to group or filter organizations based on category, how much a company has received in funding, past and current employee data, acquisitions and exits, and much more. Furthermore, it is a one-step process that requires less time.</p>
<p>Cross-checking with publicly available sources is also advised to ensure consistency of accuracy.</p>
<h2 id="the-bottomline">The Bottomline</h2>
<p>Firmographic attributes should be used by B2B companies to create ideal customer profiles. All of the various matrices provide opportunities and necessitate different approaches. Be as specific as possible.</p>
<blockquote>
<p>Know your customer and comprehend your consumer.</p>
</blockquote>
<p>Utilizing the right amount of resources is critical when targeting prospective organizations. Gathering firmographic data from web searches and surveys can be time-consuming, and you may end up with unnecessary information; instead, it is best to outsource firmographic data to professional providers such as Proxycurl, which offers an [amazing data set of companies](<a href="https://nubela.co/blog/linkdb-an-exhaustive-dataset-of-Professional">https://nubela.co/blog/linkdb-an-exhaustive-dataset-of-Professional</a> Social Network-members-and-companies/).</p>
<h2 id="faqs">FAQs</h2>
<div class="kg-card kg-toggle-card" data-kg-toggle-state="close">
            <div class="kg-toggle-heading">
                <h4 class="kg-toggle-heading-text"><b><strong style="white-space: pre-wrap;">Why is firmographic data often overlooked?</strong></b></h4>
                <button class="kg-toggle-card-icon" aria-label="Expand toggle to read content">
                    <svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"></path>
                    </svg>
                </button>
            </div>
            <div class="kg-toggle-content"><p><span style="white-space: pre-wrap;">If you are a startup or a small business, you might overlook firmographic data due to limited resources or just aren’t aware about its potential. But the data is invaluable to identify and target the right market segments from the early get go.&nbsp;</span></p><p><span style="white-space: pre-wrap;">For established businesses, it helps refine strategies, maintain competitive edges, and expand into new markets.&nbsp;</span></p></div>
        </div><div class="kg-card kg-toggle-card" data-kg-toggle-state="close">
            <div class="kg-toggle-heading">
                <h4 class="kg-toggle-heading-text"><b><strong style="white-space: pre-wrap;">How often should firmographic data be updated?</strong></b></h4>
                <button class="kg-toggle-card-icon" aria-label="Expand toggle to read content">
                    <svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"></path>
                    </svg>
                </button>
            </div>
            <div class="kg-toggle-content"><p><span style="white-space: pre-wrap;">Firmographic data should be updated at least monthly or whenever significant market or company changes occur.&nbsp;</span></p><p><span style="white-space: pre-wrap;">For instance, Proxycurl gives you </span><a href="https://nubela.co/blog/how-fresh-are-profiles-returned-by-proxycurl-api/"><u><span class="underline" style="white-space: pre-wrap;">guaranteed data freshness</span></u></a><span style="white-space: pre-wrap;">, with the flexibility to choose data freshness from real-time, data that’s 29 days or younger, or data that’s older than 29 days.&nbsp;</span></p></div>
        </div><div class="kg-card kg-toggle-card" data-kg-toggle-state="close">
            <div class="kg-toggle-heading">
                <h4 class="kg-toggle-heading-text"><b><strong style="white-space: pre-wrap;">Are there any ethical or legal concerns when collecting or using firmographic data?</strong></b></h4>
                <button class="kg-toggle-card-icon" aria-label="Expand toggle to read content">
                    <svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"></path>
                    </svg>
                </button>
            </div>
            <div class="kg-toggle-content"><p><span style="white-space: pre-wrap;">Yes, if you are scraping for data manually, there are certain ethical and legal concerns like transparency in data collection and respecting privacy laws like GDPR and CCPA.&nbsp;</span></p><p><span style="white-space: pre-wrap;">The easiest way to overcome these concerns is to lean towards a </span><a href="http://nubela.co/proxycurl?ref=nubela.co"><u><span class="underline" style="white-space: pre-wrap;">professional data provider</span></u></a><span style="white-space: pre-wrap;"> who knows what they’re doing. Outsource your risks to the professionals.&nbsp;</span></p></div>
        </div><div class="kg-card kg-toggle-card" data-kg-toggle-state="close">
            <div class="kg-toggle-heading">
                <h4 class="kg-toggle-heading-text"><b><strong style="white-space: pre-wrap;">How can you integrate firmographic data into your CRM system?</strong></b></h4>
                <button class="kg-toggle-card-icon" aria-label="Expand toggle to read content">
                    <svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"></path>
                    </svg>
                </button>
            </div>
            <div class="kg-toggle-content"><p><span style="white-space: pre-wrap;">You can integrate firmographic data into a CRM using APIs, data enrichment tools, or by importing data from trusted sources. This helps in segmenting leads, personalizing outreach, and tracking account details.</span></p></div>
        </div><div class="kg-card kg-toggle-card" data-kg-toggle-state="close">
            <div class="kg-toggle-heading">
                <h4 class="kg-toggle-heading-text"><b><strong style="white-space: pre-wrap;">What’s the best way to validate the accuracy of firmographic data?</strong></b></h4>
                <button class="kg-toggle-card-icon" aria-label="Expand toggle to read content">
                    <svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"></path>
                    </svg>
                </button>
            </div>
            <div class="kg-toggle-content"><p><span style="white-space: pre-wrap;">Validate data by cross-referencing multiple reputable sources, conducting spot checks, and using real-time verification tools.&nbsp;</span></p><p><span style="white-space: pre-wrap;">For instance, websites like Crunchbase and Professional Social Network are considered trusted sources on company and individual data. Proxycurl pulls data directly from these trusted sources so you get verified data, in real-time.&nbsp;</span></p></div>
        </div> ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ 50 High-Growth Companies for 2025: Post-Money Valuation &amp; Headcount Tracking for Better Investments ]]></title>
        <description><![CDATA[ Discover the top 50 companies with highest headcount growth and learn how post money valuation and headcount tracking will help make better investment decisions in 2025. ]]></description>
        <link>https://nubela.co/blog/post-funding-growth-data-report/</link>
        <guid isPermaLink="false">672d7a771cb59d0001b1786d</guid>
        <category><![CDATA[ high-growth comapnies ]]></category>
        <dc:creator><![CDATA[ Sese | Technical Writer ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/10/IMG_4677.jpeg"/>
        <pubDate>Tue, 14 Jan 2025 10:53:15 +0800</pubDate>
        <media:content url="" medium="image"/>
        <content:encoded><![CDATA[ <p>A smart investor understands the importance of actionable data before committing to a venture. And if the global investment scenario in 2025 is going to be anything like 2024, staying ahead demands more than just the basics, it demands an extra edge.</p>
<p>Today, I'm helping you gain that edge. I will highlight the top 50 high-growth companies of the past year, assessed through two decision metrics: headcount tracking and post-money valuation, key indicators that every venture capitalist should prioritize. I'll also demonstrate how we used our <a href="https://nubela.co/blog/built-app-that-pulls-company-employee-composition/">custom-built app</a>(which you can also build from scratch) to present and access decisive data at scale.</p>
<p>But first, let’s take a step back and peek at the investment landscape of 2024.</p>
<h2 id="global-investment-scenario-in-2024">Global Investment Scenario in 2024</h2>
<p>2024 saw a sharp decline in global investments compared to 2023. A sign of a cautious, less confident approach from investors. By the third quarter, the number of funding rounds decreased by 25% compared to the same period in 2023.</p>
<p><a href="https://www.vestd.com/blog/the-global-investment-report-2024?ref=nubela.co" rel="nofollow">The first quarter</a> was promising with 13,029 funding rounds, the highest of the year. Venture funding in particular reached $66.5 billion by the third quarter. That's no feat, because it's down by 15% compared to the numbers in 2023.</p>
<p><a href="https://news.crunchbase.com/venture/billion-dollar-funding-rounds-ai-recap-november-2024/?ref=nubela.co#:~:text=Global%20venture%20funding%20totaled%20%2428,billion%20raised%20in%20November%202023" rel="nofollow">Crunchbase</a> reports start-up funding went down by a whopping 63% from what it was in 2023, while early-stage funding fell over 20% year over year. However, late-stage funding doubled year over year.</p>
<p>AI startups operating across multiple sectors saw a huge push, as it reached a monthly peak of $14 billion in November of 2024.</p>
<p>The U.S. in particular also faced their fair share of challenges, with declining funding round rates experiencing a drop of 28% from what it was last year. More than 3,000 tech companies went out of business despite being backed by private ventures.</p>
<h2 id="the-2025-outlook">The 2025 Outlook</h2>
<p><a href="https://russellinvestments.com/ca/global-market-outlook?ref=nubela.co#ColorBoxesRoot_65071822-8f82-4dd6-9f72-4ecd6a2a7287" rel="nofollow"> Experts </a> predict a continuation of the downward trend outside of the US. The European Central Bank is likely to cut the deposit rate to 1.5% by the end of the year to lighten the tariff weight.</p>
<p>For the US, things look better. Capital markets are predicted to elevate as Trump's administration takes over. The US economy is expected to grow steadily at 2%, even if things outside the US look down.</p>
<p>As an investor, you might be distraught with what 2024 brought in, going into 2025. It just stresses the need for decisive, actionable data.</p>
<h2 id="how-post-money-valuation-and-headcount-tracking-helps-evaluate-investment-opportunities">How Post Money Valuation and Headcount tracking helps evaluate investment opportunities</h2>
<p><strong>Post money valuation</strong> gives you tangible insights into how a company utilizes its capital to scale its operations. Consistent growth trends post-funding indicate that the company is able to leverage its new found resources to generate returns and build sustainable momentum.</p>
<p>Pre-money valuations are considered to determine the amount of equity investors need to secure in exchange for any capital injection.</p>
<p>For instance, let's assume a company has a $10 million pre-money valuation. If you put $5 million into the company, it creates a post-money valuation of $15 million. So in a very basic scenario, the investor would then have a 33.33% interest in the company, since $5 million is equal to one-third of the post-money valuation of $15 million. This is assuming the investors and the entrepreneurs agree on the valuations without negotiations. Negotiations on the company's assets, intellectual property, determine the actual value.</p>
<p><strong>Headcount tracking</strong> is a method used to analyze the number of employees in an organization over a time period. It gives a glimpse into a company's growth rate, hiring trends, and pinpoint periods of high or low turnover. A positive headcount growth, particularly in strategic roles like sales, marketing, and product development, reflects a proactive approach to scaling and innovation. Expanding the workforce is a green signal in a business's confidence in its business model, demand for its product or service, and readiness to meet market opportunities.</p>
<p>Together, these metrics provide investors with a clearer picture of a company's trajectory and its potential to deliver significant returns.</p>
<p>Now, I am confident you are a competent investor, who knows how to do your research before investing. But try to do that manually, and you are in for a lot of work.</p>
<p>Let's take a look at the top 50 high-growth companies by headcount tracking and post-money valuation in 2024 that I pulled in mere minutes using <a href="http://nubela.co/proxycurl?ref=nubela.co">Proxycurl</a>. I'll even go a step further and segment the employee data geographically and based on their role, and present it in a piechart, using our own homemade <a href="https://nubela.co/blog/built-app-that-pulls-company-employee-composition/">employee composition app</a>, which you can also build from scratch.</p>
<h2 id="top-50-high-growth-companies-by-headcount-tracking-and-post-money-valuation">Top 50 high-growth companies by headcount tracking and post-money valuation</h2>
<table>
<thead>
<tr>
<th>Rank</th>
<th>Company</th>
<th>2022 Headcount</th>
<th>2024 Headcount</th>
<th>Total Funding</th>
<th>Post-Money Valuation</th>
<th>Estimated Revenue</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td><a href="https://www.personio.com/?ref=nubela.co" target="_blank" rel="noopener noreferrer nofollow">Personio</a></td>
<td>1202</td>
<td>1890</td>
<td>$724.3M</td>
<td>$8.5B</td>
<td>$210.1M</td>
</tr>
<tr>
<td>2</td>
<td><a href="https://www.mews.com/en?ref=nubela.co" target="_blank" rel="noopener noreferrer nofollow">Mews</a></td>
<td>359</td>
<td>1046</td>
<td>$442.3M</td>
<td>$1.2B</td>
<td>$234.6M</td>
</tr>
<tr>
<td>3</td>
<td><a href="https://www.apollo.io/?ref=nubela.co" target="_blank" rel="noopener noreferrer nofollow">Apollo</a></td>
<td>190</td>
<td>610</td>
<td>$251.3M</td>
<td>$1.6B</td>
<td>$100M</td>
</tr>
<tr>
<td>4</td>
<td><a href="https://www.vanta.com/?ref=nubela.co" target="_blank" rel="noopener noreferrer nofollow">Vanta</a></td>
<td>221</td>
<td>566</td>
<td>$353M</td>
<td>$2.45B</td>
<td>$105M</td>
</tr>
<tr>
<td>5</td>
<td><a href="https://drata.com/?ref=nubela.co" target="_blank" rel="noopener noreferrer nofollow">Drata</a></td>
<td>180</td>
<td>522</td>
<td>$328.2M</td>
<td>$2B</td>
<td>$63M</td>
</tr>
<tr>
<td>6</td>
<td><a href="https://www.pigment.com/?ref=nubela.co" target="_blank" rel="noopener noreferrer nofollow">Pigment</a></td>
<td>102</td>
<td>402</td>
<td>$396M</td>
<td>$1B</td>
<td>$79.8M</td>
</tr>
<tr>
<td>7</td>
<td><a href="https://www.usemultiplier.com/?ref=nubela.co" target="_blank" rel="noopener noreferrer nofollow">Multiplier</a></td>
<td>89</td>
<td>369</td>
<td>$77.2M</td>
<td>$400M</td>
<td>$21M</td>
</tr>
<tr>
<td>8</td>
<td><a href="https://factorialhr.com/?ref=nubela.co" target="_blank" rel="noopener noreferrer nofollow">FactorialHR</a></td>
<td>445</td>
<td>708</td>
<td>$300M</td>
<td>$1B</td>
<td>$200M</td>
</tr>
<tr>
<td>9</td>
<td><a href="https://ziphq.com/?ref=nubela.co" target="_blank" rel="noopener noreferrer nofollow">ZipHQ</a></td>
<td>73</td>
<td>306</td>
<td>$333M</td>
<td>$2.2B</td>
<td>$63M</td>
</tr>
<tr>
<td>10</td>
<td><a href="https://www.dataiku.com/?ref=nubela.co" target="_blank" rel="noopener noreferrer nofollow">Dataiku</a></td>
<td>992</td>
<td>1188</td>
<td>$846M</td>
<td>$3.70B</td>
<td>$280M</td>
</tr>
<tr>
<td>11</td>
<td><a href="https://retool.com/?ref=nubela.co" target="_blank" rel="noopener noreferrer nofollow">Retool</a></td>
<td>172</td>
<td>337</td>
<td>$135M</td>
<td>$3.2B</td>
<td>$65M</td>
</tr>
<tr>
<td>12</td>
<td><a href="https://www.leadsquared.com/?ref=nubela.co" target="_blank" rel="noopener noreferrer nofollow">Leadsquared</a></td>
<td>992</td>
<td>1148</td>
<td>$188M</td>
<td>$1B</td>
<td>$252M</td>
</tr>
<tr>
<td>13</td>
<td><a href="https://wasabi.com/?ref=nubela.co" target="_blank" rel="noopener noreferrer nofollow">Wasabi</a></td>
<td>177</td>
<td>322</td>
<td>$358M</td>
<td>$1.1B</td>
<td>$21M</td>
</tr>
<tr>
<td>14</td>
<td><a href="https://clevertap.com/?ref=nubela.co" target="_blank" rel="noopener noreferrer nofollow">CleverTap</a></td>
<td>429</td>
<td>542</td>
<td>$175M</td>
<td>$775M</td>
<td>$126M</td>
</tr>
<tr>
<td>15</td>
<td><a href="https://amenitiz.com/en/?ref=nubela.co" target="_blank" rel="noopener noreferrer nofollow">Amenitiz</a></td>
<td>147</td>
<td>253</td>
<td>$38.6M</td>
<td>$100M</td>
<td>$21M</td>
</tr>
<tr>
<td>16</td>
<td><a href="https://www.owner.com/?ref=nubela.co" target="_blank" rel="noopener noreferrer nofollow">Owner</a></td>
<td>57</td>
<td>162</td>
<td>$15M</td>
<td>$150M</td>
<td>$10M</td>
</tr>
<tr>
<td>17</td>
<td><a href="https://appomni.com/?ref=nubela.co" target="_blank" rel="noopener noreferrer nofollow">AppOmni</a></td>
<td>108</td>
<td>205</td>
<td>$123M</td>
<td>$270M</td>
<td>$29M</td>
</tr>
<tr>
<td>18</td>
<td><a href="https://www.deepki.com/?ref=nubela.co" target="_blank" rel="noopener noreferrer nofollow">Deepki</a></td>
<td>133</td>
<td>229</td>
<td>$172M</td>
<td>$150M</td>
<td>$22M</td>
</tr>
<tr>
<td>19</td>
<td><a href="https://metronome.com/?ref=nubela.co" target="_blank" rel="noopener noreferrer nofollow">Metronome</a></td>
<td>23</td>
<td>115</td>
<td>$78M</td>
<td>$200M</td>
<td>$14.7M</td>
</tr>
<tr>
<td>20</td>
<td><a href="https://www.getflip.com/?ref=nubela.co" target="_blank" rel="noopener noreferrer nofollow">Flip</a></td>
<td>90</td>
<td>179</td>
<td>&lt;$5M</td>
<td>$500M</td>
<td>$34M</td>
</tr>
<tr>
<td>21</td>
<td><a href="https://www.montecarlodata.com/?ref=nubela.co" target="_blank" rel="noopener noreferrer nofollow">Monte Carlo Data</a></td>
<td>98</td>
<td>186</td>
<td>$236M</td>
<td>$1.6B</td>
<td>$43M</td>
</tr>
<tr>
<td>22</td>
<td><a href="https://www.gwi.com/?ref=nubela.co" target="_blank" rel="noopener noreferrer nofollow">GWI</a></td>
<td>358</td>
<td>443</td>
<td>$40M</td>
<td>$850M</td>
<td>$229M</td>
</tr>
<tr>
<td>23</td>
<td><a href="https://www.spendflo.com/?ref=nubela.co" target="_blank" rel="noopener noreferrer nofollow">Spendflo</a></td>
<td>15</td>
<td>90</td>
<td>$15.4M</td>
<td>$80M</td>
<td>$17.9M</td>
</tr>
<tr>
<td>24</td>
<td><a href="https://zesty.co/?ref=nubela.co" target="_blank" rel="noopener noreferrer nofollow">Zesty</a></td>
<td>97</td>
<td>175</td>
<td>$116.6M</td>
<td>$75M</td>
<td>$20.2M</td>
</tr>
<tr>
<td>25</td>
<td><a href="https://aisera.com/?ref=nubela.co" target="_blank" rel="noopener noreferrer nofollow">Aisera</a></td>
<td>171</td>
<td>249</td>
<td>$164M</td>
<td>$1.2B</td>
<td>$42M</td>
</tr>
<tr>
<td>26</td>
<td><a href="https://www.paddle.com/?ref=nubela.co" target="_blank" rel="noopener noreferrer nofollow">Paddle</a></td>
<td>245</td>
<td>317</td>
<td>$283.7M</td>
<td>$1.4B</td>
<td>$67.2M</td>
</tr>
<tr>
<td>27</td>
<td><a href="https://optibus.com/?ref=nubela.co" target="_blank" rel="noopener noreferrer nofollow">Optibus</a></td>
<td>263</td>
<td>333</td>
<td>$259M</td>
<td>$1.3B</td>
<td>$63M</td>
</tr>
<tr>
<td>28</td>
<td><a href="https://www.merge.dev/?ref=nubela.co" target="_blank" rel="noopener noreferrer nofollow">Merge</a></td>
<td>36</td>
<td>104</td>
<td>$74.5M</td>
<td>$225M</td>
<td>$25.6M</td>
</tr>
<tr>
<td>29</td>
<td><a href="https://www.lumos.com/?ref=nubela.co" target="_blank" rel="noopener noreferrer nofollow">Lumos</a></td>
<td>29</td>
<td>97</td>
<td>$65M</td>
<td>$100M</td>
<td>$13.7M</td>
</tr>
<tr>
<td>30</td>
<td><a href="https://www.descript.com/?ref=nubela.co" target="_blank" rel="noopener noreferrer nofollow">Descript</a></td>
<td>77</td>
<td>142</td>
<td>$95M</td>
<td>$550M</td>
<td>$21M</td>
</tr>
<tr>
<td>31</td>
<td><a href="https://www.instadeep.com/?ref=nubela.co" target="_blank" rel="noopener noreferrer nofollow">InstaDeep</a></td>
<td>146</td>
<td>211</td>
<td>$107M</td>
<td>$400M</td>
<td>$31.5M</td>
</tr>
<tr>
<td>32</td>
<td><a href="https://www.airwallex.com/?ref=nubela.co" target="_blank" rel="noopener noreferrer nofollow">Airwallex</a></td>
<td>646</td>
<td>735</td>
<td>$702M</td>
<td>$6.0B</td>
<td>$252.1M</td>
</tr>
<tr>
<td>33</td>
<td><a href="https://www.sardine.ai/?ref=nubela.co" target="_blank" rel="noopener noreferrer nofollow">Sardine</a></td>
<td>42</td>
<td>103</td>
<td>$75.6M</td>
<td>$170M</td>
<td>$18.7M</td>
</tr>
<tr>
<td>34</td>
<td><a href="https://www.wetravel.com/?ref=nubela.co" target="_blank" rel="noopener noreferrer nofollow">WeTravel</a></td>
<td>62</td>
<td>126</td>
<td>$27M</td>
<td>$130M</td>
<td>$17.5M</td>
</tr>
<tr>
<td>35</td>
<td><a href="https://www.hebbia.ai/?ref=nubela.co" target="_blank" rel="noopener noreferrer nofollow">Hebbia</a></td>
<td>12</td>
<td>67</td>
<td>$160M</td>
<td>$710M</td>
<td>$9.5M</td>
</tr>
<tr>
<td>36</td>
<td><a href="https://www.assembled.com/?ref=nubela.co" target="_blank" rel="noopener noreferrer nofollow">Assembled</a></td>
<td>49</td>
<td>103</td>
<td>$70.7M</td>
<td>$130M</td>
<td>$13.2M</td>
</tr>
<tr>
<td>37</td>
<td><a href="https://www.birdie.care/?ref=nubela.co" target="_blank" rel="noopener noreferrer nofollow">Birdie</a></td>
<td>102</td>
<td>150</td>
<td>$49.4M</td>
<td>$125M</td>
<td>$21M</td>
</tr>
<tr>
<td>38</td>
<td><a href="https://zenskar.com/?ref=nubela.co" target="_blank" rel="noopener noreferrer nofollow">Zenskar</a></td>
<td>0</td>
<td>48</td>
<td>$6.5M</td>
<td>&lt;$5M</td>
<td>&lt;$5M</td>
</tr>
<tr>
<td>39</td>
<td><a href="https://www.thanksben.com/?ref=nubela.co" target="_blank" rel="noopener noreferrer nofollow">Thanks Ben</a></td>
<td>29</td>
<td>76</td>
<td>$18.5M</td>
<td>&lt;$5M</td>
<td>&lt;$5M</td>
</tr>
<tr>
<td>40</td>
<td><a href="https://www.wati.io/?ref=nubela.co" target="_blank" rel="noopener noreferrer nofollow">Wati</a></td>
<td>26</td>
<td>70</td>
<td>$88M</td>
<td>$200M</td>
<td>$31.5M</td>
</tr>
<tr>
<td>41</td>
<td><a href="https://www.joinblvd.com/?ref=nubela.co" target="_blank" rel="noopener noreferrer nofollow">Boulevard</a></td>
<td>203</td>
<td>250</td>
<td>$108M</td>
<td>$400M</td>
<td>$36.3M</td>
</tr>
<tr>
<td>42</td>
<td><a href="https://www.mangomint.com/?ref=nubela.co" target="_blank" rel="noopener noreferrer nofollow">Mangomint</a></td>
<td>18</td>
<td>64</td>
<td>$48M</td>
<td>$100M</td>
<td>&lt;$5M</td>
</tr>
<tr>
<td>43</td>
<td><a href="https://www.remofirst.com/?ref=nubela.co" target="_blank" rel="noopener noreferrer nofollow">Remofirst</a></td>
<td>7</td>
<td>50</td>
<td>$39.1M</td>
<td>$40M</td>
<td>$22.3M</td>
</tr>
<tr>
<td>44</td>
<td><a href="https://www.ardoq.com/?ref=nubela.co" target="_blank" rel="noopener noreferrer nofollow">Ardoq</a></td>
<td>147</td>
<td>188</td>
<td>$161.4M</td>
<td>$125M</td>
<td>&lt;$5M</td>
</tr>
<tr>
<td>45</td>
<td><a href="https://onesignal.com/?ref=nubela.co" target="_blank" rel="noopener noreferrer nofollow">OneSignal</a></td>
<td>116</td>
<td>155</td>
<td>$84.3M</td>
<td>$500M</td>
<td>$29.4M</td>
</tr>
<tr>
<td>46</td>
<td><a href="https://seamlesshr.com/?ref=nubela.co" target="_blank" rel="noopener noreferrer nofollow">SeamlessHR</a></td>
<td>94</td>
<td>136</td>
<td>$10M</td>
<td>$60M</td>
<td>$27.3M</td>
</tr>
<tr>
<td>47</td>
<td><a href="https://meshpayments.com/?ref=nubela.co" target="_blank" rel="noopener noreferrer nofollow">Mesh</a></td>
<td>98</td>
<td>135</td>
<td>$123M</td>
<td>$70M</td>
<td>$24.8M</td>
</tr>
<tr>
<td>48</td>
<td><a href="https://www.nilus.com/?ref=nubela.co" target="_blank" rel="noopener noreferrer nofollow">Nilus</a></td>
<td>0</td>
<td>39</td>
<td>$8.6M</td>
<td>$25M</td>
<td>&lt;$5M</td>
</tr>
<tr>
<td>49</td>
<td><a href="https://zilliz.com/?ref=nubela.co" target="_blank" rel="noopener noreferrer nofollow">Zilliz</a></td>
<td>39</td>
<td>77</td>
<td>$123M</td>
<td>$1B</td>
<td>$21M</td>
</tr>
<tr>
<td>50</td>
<td><a href="https://www.joinarc.com/?ref=nubela.co" target="_blank" rel="noopener noreferrer nofollow">Arc</a></td>
<td>16</td>
<td>49</td>
<td>$20M</td>
<td>$500M</td>
<td>$6.3M</td>
</tr>
</tbody>
</table>
<h3 id="1-personio">1. Personio</h3>
<p>Based in Munich, Germany, Personio is an all-in-one HR software platform designed for small and medium-sized businesses. It offers solutions for recruiting, payroll, employee management, and more, streamlining HR processes to improve efficiency and compliance.</p>
<p>Personio secured a total funding of $724 million over 7 rounds. They subsequently added 688 new employees from 2022 to 2024, the largest headcount growth in the period.</p>
<p>Top employee location percentages:</p>
<ul>
<li>
<p>Germany 59.5% at 1104</p>
</li>
<li>
<p>Ireland 13.4% at 248</p>
</li>
<li>
<p>Spain 9.7% at 180</p>
</li>
</ul>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/11/image-9.png" class="kg-image" alt="Personio pie-chart detailing geographical employee composition" loading="lazy" width="1264" height="1802"><figcaption><span style="white-space: pre-wrap;">Personio Geographical Employee Composition</span></figcaption></figure><p>Here's what the workforce distribution by role looks like:</p>
<ul>
<li>Sales 31.2% at 577</li>
<li>Developers 22% with 408</li>
<li>Operations 21.1% with 391</li>
</ul>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2025/01/image.png" class="kg-image" alt="Pie-chart detailing Personio's workforce distribution" loading="lazy" width="944" height="1278"><figcaption><span style="white-space: pre-wrap;">Personio Workforce Distribution by Role</span></figcaption></figure><h3 id="2-mews">2. Mews</h3>
<p>Mews is a hospitality management software company that automates operations for hotels and hostels. Their cloud-based system handles reservations, check-ins, payments, and guest management.</p>
<p>This company secured a total funding of $442.3 million in over 8 funding rounds. They added 687 new employees from 2022 to 2024.</p>
<p>Top employee location percentages:</p>
<ul>
<li>
<p>Czech Republic 24.3% at 252</p>
</li>
<li>
<p>United Kingdom 19.5% at 202</p>
</li>
<li>
<p>Spain 12.7% at 132</p>
</li>
</ul>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/11/image-11.png" class="kg-image" alt="Mews pie-chart detailing geographical employee composition" loading="lazy" width="1178" height="1440"><figcaption><span style="white-space: pre-wrap;">Mews Geographical Employee Composition</span></figcaption></figure><p>Here's what the workforce distribution by role looks like at Mews:</p>
<ul>
<li>Operations 29.9% at 310</li>
<li>Developers 28.9% at 299</li>
<li>Sales 13% at 135</li>
</ul>
<p>One interesting find was the position of "Canine Executive Officer" at Mews.</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/11/image-12.png" class="kg-image" alt="Pie-chart detailing Mew's workforce distribution" loading="lazy" width="908" height="1256"><figcaption><span style="white-space: pre-wrap;">Mews Workforce Distribution by Role</span></figcaption></figure><h3 id="3-apolloio">3. Apollo.io</h3>
<p>Apollo.io is a sales engagement platform that helps businesses streamline their sales processes by offering prospecting tools, analytics, and automation. It enables companies to connect with potential customers more effectively and optimize their sales pipelines.</p>
<p>Over 6 rounds of funding, Apollo.io raised $251.3 million. Their new funds allowed them to add 420 new employees from 2022 to 2024.</p>
<p>Top employee location percentage:</p>
<ul>
<li>
<p>United States 52.3% at 304</p>
</li>
<li>
<p>India 19.8% at 115</p>
</li>
<li>
<p>Colombia 5.2% at 30</p>
</li>
</ul>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/11/image-15.png" class="kg-image" alt="Apollo pie-chart detailing geographical employee composition" loading="lazy" width="1136" height="1420"><figcaption><span style="white-space: pre-wrap;">Apollo Geographical Employee Composition</span></figcaption></figure><p>Workforce distribution by role at Apollo:</p>
<ul>
<li>Developer 31.8% at 184</li>
<li>Sales 22.3% at 129</li>
<li>Operations 16.1% at 93</li>
</ul>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/11/image-14.png" class="kg-image" alt="Pie-chart detailing Apollos workforce distribution" loading="lazy" width="960" height="1238"><figcaption><span style="white-space: pre-wrap;">Apollo Workforce Distribution by Role</span></figcaption></figure><h3 id="4-vanta">4. Vanta</h3>
<p>Based in California, Vanta specializes in automating security and compliance processes, making it easier for businesses to obtain certifications like SOC 2, ISO 27001, and GDPR. By simplifying the complex requirements of cybersecurity audits, Vanta helps companies build trust with customers.</p>
<p>Vanta secured $353 million of total funding over 6 funding rounds. This allowed them to recruit 345 new employees from 2022 to 2024.</p>
<p>Top employee location percentages:</p>
<ul>
<li>
<p>United States at 83.8% with 451</p>
</li>
<li>
<p>Ireland 7.6% at 41</p>
</li>
<li>
<p>Australia 3.2% at 17</p>
</li>
</ul>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/11/image-16.png" class="kg-image" alt="Vanta pie-chart detailing geographical employee composition" loading="lazy" width="1138" height="1434"><figcaption><span style="white-space: pre-wrap;">Vanta Geographical Employee Composition</span></figcaption></figure><p>Here's what Vanta's workfroce distribution looks like:</p>
<ul>
<li>Sales 30.1% at 161</li>
<li>Developers 27.5% at 147</li>
<li>Operations 17.6% at 94</li>
</ul>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/11/image-17.png" class="kg-image" alt="Pie-chart detailing Vanta's workforce distribution" loading="lazy" width="924" height="1226"><figcaption><span style="white-space: pre-wrap;">Vanta Workforce Distribution by Role</span></figcaption></figure><h3 id="5-drata">5. Drata</h3>
<p>Similar to Vanta, Drata is a continuous security and compliance automation platform that helps companies achieve and maintain regulatory standards such as SOC 2, GDPR, and ISO 27001.</p>
<p>With over 4 funding rounds, Datra raised over $328.2 million. From 2022 to 2024, they were able to add 342 new employees.</p>
<p>Top employee location percentages:</p>
<ul>
<li>
<p>United States 78.6% at 392</p>
</li>
<li>
<p>Mexico 10% at 50</p>
</li>
<li>
<p>United Kingdom 4.6% at 23</p>
</li>
</ul>
<p> </p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/11/image-18.png" class="kg-image" alt="Datra pie-chart detailing geographical employee composition" loading="lazy" width="1144" height="1446"><figcaption><span style="white-space: pre-wrap;">Datra Geographical Employee Composition</span></figcaption></figure><p>Workforce distribution by role at Datra:</p>
<ul>
<li>Developer 30.8% at 153</li>
<li>Sales 24.2% at 120</li>
<li>Operations 20.4% at 101</li>
</ul>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/11/image-19.png" class="kg-image" alt="Pie-chart detailing Datra's workforce distribution" loading="lazy" width="878" height="1236"><figcaption><span style="white-space: pre-wrap;">Datra Workforce Distribution by Role</span></figcaption></figure><h3 id="6-pigment">6. Pigment</h3>
<p>A business planning and forecasting platform, Pigment empowers organizations to analyze data, model scenarios, and make informed decisions.</p>
<p>Pigment raised $396 million in total, over 6 funding rounds, financing 300 new employees from 2022 to 2024.</p>
<p>Top employee location percentages:</p>
<ul>
<li>
<p>France 44.8% at 173</p>
</li>
<li>
<p>United States 25.1% at 97</p>
</li>
<li>
<p>United Kingdom 18.4% at 71</p>
</li>
</ul>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/11/image-20.png" class="kg-image" alt="Pigment pie-chart detailing geographical employee composition" loading="lazy" width="1186" height="1448"><figcaption><span style="white-space: pre-wrap;">Pigment Geographical Employee Composition</span></figcaption></figure><p>Here's what the workforce distribution looks like at Pigment:</p>
<ul>
<li>Sales 25.5% at 97</li>
<li>Developers 22% at 84</li>
<li>Operations 18.6% at 71</li>
</ul>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/11/image-21.png" class="kg-image" alt="Pie-chart detailing Pigment's workforce distribution" loading="lazy" width="952" height="1256"><figcaption><span style="white-space: pre-wrap;">Pigment Workforce Distribution by Role</span></figcaption></figure><h3 id="7-multiplier">7. Multiplier</h3>
<p>Multiplier offers global employment solutions, allowing businesses to hire and manage international teams with ease. The platform handles payroll, compliance, and employee benefits across multiple countries, enabling seamless cross-border workforce management.</p>
<p>Multiplier secured a total funding of $77.2 million in over 4 funding rounds. From 2022 to 2024, they added 280 new employees.</p>
<p>Top employee location percentages:</p>
<ul>
<li>
<p>India 53.1% at 189</p>
</li>
<li>
<p>United States 11% at 39</p>
</li>
<li>
<p>Singapore 7.6% at 27</p>
</li>
</ul>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/11/image-22.png" class="kg-image" alt="Multiplier pie-chart detailing geographical employee composition" loading="lazy" width="1184" height="1426"><figcaption><span style="white-space: pre-wrap;">Multiplier Geographical Employee Composition</span></figcaption></figure><p>Workforce distribution by role at Multiplier:</p>
<ul>
<li>Operations 29.5% at 103</li>
<li>Developers 18.6% at 65</li>
<li>Sales 17.2% at 60</li>
</ul>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/11/image-23.png" class="kg-image" alt="Pie-chart detailing Multiplier's workforce distribution" loading="lazy" width="856" height="1246"><figcaption><span style="white-space: pre-wrap;">Multiplier Workforce Distribution by Role</span></figcaption></figure><h3 id="8-factorial">8. Factorial</h3>
<p>Factorial is an HR management platform catering to small and medium-sized businesses. It simplifies HR tasks such as time tracking, performance reviews, and payroll, helping companies optimize their HR processes and improve employee satisfaction.</p>
<p>In over 6 funding rounds, Factorial secured $299.9 million, most recently in April of 2024 for $76.8M. They subsequently added 263 new employees from 2022 to 2024.</p>
<p>Top employee location percentages:</p>
<ul>
<li>Spain 77.1% at 541</li>
<li>Brazil 5.4% at 38</li>
<li>Mexico 5.3% 37</li>
</ul>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/11/image-26.png" class="kg-image" alt="Factorial pie-chart detailing geographical employee composition" loading="lazy" width="1108" height="1440"><figcaption><span style="white-space: pre-wrap;">Factorial Geographical Employee Composition</span></figcaption></figure><p>Workforce distribution by role at Factorial:</p>
<ul>
<li>Sales 42.8% at 298</li>
<li>HR 19.3% at 134</li>
<li>Marketing 11.8% at82</li>
</ul>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/11/image-27.png" class="kg-image" alt="Pie-chart detailing Factorial's workforce distribution" loading="lazy" width="814" height="1264"><figcaption><span style="white-space: pre-wrap;">Factorial Workforce Distribution by Role</span></figcaption></figure><h3 id="9-ziphq">9. ZipHQ</h3>
<p>A procurement management software, ZipHQ helps businesses optimize their purchasing processes. By automating workflows, managing vendor relationships, and improving spend visibility, ZipHQ enables organizations to save time and reduce costs.</p>
<p>With over 6 funding rounds, ZipHQ secured a total funding amount of $371.3 million. The company added 233 new employees from 2022 to 2024.</p>
<p>Top employee location percentages:</p>
<ul>
<li>
<p>United States 83.2% at 247</p>
</li>
<li>
<p>Canda at 12.8% at 38</p>
</li>
<li>
<p>United Kingdom 2.69% at 8</p>
</li>
</ul>
<p>Have to give props to ZipHQ for having an employee in Antartica. Must be a brag!</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/11/image-28.png" class="kg-image" alt="ZipHQ pie-chart detailing geographical employee composition" loading="lazy" width="1138" height="1306"><figcaption><span style="white-space: pre-wrap;">ZipHQ Geographical Employee Composition</span></figcaption></figure><p>Here's what ZipHQ's workforce breakdown looks like:</p>
<ul>
<li>Developers 37.6% at 111</li>
<li>Sales 25.1% at 74</li>
<li>Operations 12.5% at 37</li>
</ul>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/11/image-29.png" class="kg-image" alt="Pie-chart detailing ZipHQ's workforce distribution" loading="lazy" width="1018" height="1278"><figcaption><span style="white-space: pre-wrap;">ZipHQ Workforce Distribution by Role</span></figcaption></figure><h3 id="10-dataiku">10. Dataiku</h3>
<p>Dataiku is a data science and machine learning platform that enables businesses to analyze large datasets, build predictive models, and operationalize AI solutions. It caters to data teams by offering collaborative tools that support the entire data lifecycle.</p>
<p>Dataiku secured a total funding of $846.8 million, over 11 funding rounds. From 2022 to 2024, they added over 196 new employees.</p>
<p>Top employee location percentages:</p>
<ul>
<li>
<p>United States 36.9% at 427</p>
</li>
<li>
<p>France 31.5% at 364</p>
</li>
<li>
<p>United Kingdom 10% at 116</p>
</li>
</ul>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/11/image-30.png" class="kg-image" alt="Dataiku pie-chart detailing geographical employee composition" loading="lazy" width="1202" height="1420"><figcaption><span style="white-space: pre-wrap;">Dataiku Geographical Employee Composition</span></figcaption></figure><p>Workforce breakdown by role in Dataiku:</p>
<ul>
<li>Developers 27.6% at 314</li>
<li>Sales 26.8% at 305</li>
<li>Operations 19.7% at 224</li>
</ul>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/11/image-31.png" class="kg-image" alt="Pie-chart detailing Dataiku's workforce distribution" loading="lazy" width="934" height="1230"><figcaption><span style="white-space: pre-wrap;">Dataiku Workforce Distribution by Role</span></figcaption></figure><h2 id="how-to-source-data-for-post-money-valuation-and-headcount-tracking">How to source data for Post money valuation and headcount tracking?</h2>
<p>You can manually search for each company and click on hundreds of job portals and industry publications, hoping you'll find everything you need (Good luck doing this btw!)</p>
<p>Or,</p>
<p>You can rely on a trusted data provider, like <a href="https://nubela.co/proxycurl/?ref=nubela.co">Proxycurl</a>.</p>
<p>Proxycurl is actually the source of all the data you see here. With <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#company-api-company-profile-endpoint">Company Profile Endpoint</a> and <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#company-api-employee-listing-endpoint">Employee Listing Endpoint</a>, I extracted all the data I needed for headcount tracking, post money valuation, total funding amounts, and revenue metrics.</p>
<p>Let me show you how I did it.</p>
<p>First, start with creating a free account with Proxycurl. You get 10 free credits, so don't worry about pulling your credit card right now. Go to your dashboard and scroll down to the <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#company-api-company-profile-endpoint">Company Profile Endpoint</a>.</p>
<p>Using this endpoint, I pulled out all the companys' total funding, post money valuation, employee headcount from 2022 to 2024 and the estimated revenue.</p>
<p>Let's Take a look at this sample API call for Personio:</p>
<pre><code>python
import requests

api_key = 'YOUR_API_KEY'

headers = {'Authorization': 'Bearer ' + api_key}

api_endpoint = 'https://nubela.co/proxycurl/api/Professional Social Network/company'

params = {'url': 'https://www.professionalsocialnetwork.com/company/personio/', 'funding_data': 'include'}

response = requests.get(api_endpoint, params=params, headers=headers)

if response.status_code == 200:

    data = response.json()

    print(f"Company: {data.get('name', 'Unknown')}")

    print(f"Employee Count 2022: {data.get('employee_count', {}).get('2022', 'N/A')}")

    print(f"Employee Count 2024: {data.get('employee_count', {}).get('2024', 'N/A')}")

    print(f"Total Funding: ${data.get('funding', 'N/A')}")

    print(f"Estimated Revenue: ${data.get('estimated_revenue', 'N/A')}")

else:

    print(f"Error: {response.status_code} - {response.content.decode('utf-8')}")

This is what you get in response.\
{

    "name": "Personio",

    "employee_count": {

        "2022": 1202,

        "2024": 1890

    },

    "funding": $724.3M

    "estimated_revenue": $210.1M

}
</code></pre>
<p><a href="https://nubela.co/proxycurl/docs?ref=nubela.co#company-api-employee-listing-endpoint">Employee Listing Endpoint</a>  comes to the frey for granular details on each employee, including their roles and locations. In this case, I used the endpoint to get the geographical distribution of all the employees. Here's a sample API call for Personio:</p>
<pre><code>python
import requests

api_key = 'YOUR_API_KEY'  # Replace with your actual API key

headers = {'Authorization': 'Bearer ' + api_key}

api_endpoint = 'https://nubela.co/proxycurl/api/Professional Social Network/company/employees/'

params = {

    'url': 'https://www.professionalsocialnetwork.com/company/personio',

    'coy_name_match': 'include',

    'use_cache': 'if-present',

    'country': 'us',

    'enrich_profiles': 'enrich',

    'role_search': '(co)?-?founder',  # Confirm API supports regex-style queries

    'page_size': '10',

    'employment_status': 'current',

    'sort_by': 'recently-joined',

    'resolve_numeric_id': 'false',

}

response = requests.get(api_endpoint, params=params, headers=headers)

if response.status_code == 200:

    try:

        employees = response.json()

        for employee in employees.get('results', []):

            full_name = employee.get('full_name', 'N/A')

            role = employee.get('role', 'N/A')

            location = employee.get('location', 'N/A')

            print(f"Name: {full_name}, Role: {role}, Location: {location}")

    except Exception as e:

        print(f"Error processing data: {e}")

else:

    print(f"Error fetching data. Status code: {response.status_code}")

    if response.content:

        print(f"Error details: {response.content.decode('utf-8')}")

This is what it returns:\
[

    {"name": "Jorge Muller", "role": "Software Engineer", "location": "Stuttgart, Germany"},

    {"name": "Karla Hoffman", "role": "Communications Specialist", "location": "Munich, Germany"}

]
</code></pre>
<p>By combining data from these endpoints, I was able to construct the top 50 list, and a profile on the top 10 companies. Imagine the horror if I had to do all this manually!</p>
<p>Proxycurl's <a href="https://nubela.co/blog/ultimate-guide-to-all-21-proxycurl-apis-enrich-people-company-profiles/">selection of endpoints</a> made the process efficient, so much so that I could pull this off alone.</p>
<h2 id="make-data-driven-investment-decisions-with-proxycurl">Make Data-Driven Investment Decisions with Proxycurl</h2>
<p>As 2025 dawns, you need to go the extra mile to make sound investments. Secure your funds, and power your data driven decisions with Proxycurl. Scouting high-growth companies using metrics like headcount growth and post money valuation is just skimming the surface of what Proxycurl can do.</p>
<p>With Proxycurl every data on company and individual profiles are on your finger tips. The data is sourced from trusted sources like Professional Social Network and Crunchbase, and topped off with a <a href="https://nubela.co/blog/how-fresh-are-profiles-returned-by-proxycurl-api/">data freshness guarantee</a>. Pair that with the <a href="https://nubela.co/blog/built-app-that-pulls-company-employee-composition/">employee composition app</a>, and what you have is a prospector, that helps you glance opportunities based on headcount tracking.</p>
<p>Identifying investment opportunities has never been easier. Get started with <a href="https://nubela.co/proxycurl/auth/register?ref=nubela.co">Proxycurl</a> today!</p>
<h2 id="faqs">FAQs</h2>
<div class="kg-card kg-toggle-card" data-kg-toggle-state="close">
            <div class="kg-toggle-heading">
                <h4 class="kg-toggle-heading-text"><span style="white-space: pre-wrap;">What is meant by post-money valuation?</span></h4>
                <button class="kg-toggle-card-icon" aria-label="Expand toggle to read content">
                    <svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"></path>
                    </svg>
                </button>
            </div>
            <div class="kg-toggle-content"><p><span style="white-space: pre-wrap;">A company's estimated value after receiving outside investment or financing. For instance, if a company was worth $10M, and then it raised another $5M, its post-money valuation would now be $15M.</span></p></div>
        </div><div class="kg-card kg-toggle-card" data-kg-toggle-state="close">
            <div class="kg-toggle-heading">
                <h4 class="kg-toggle-heading-text"><b><strong style="white-space: pre-wrap;">Should you rely solely on post-money valuation?</strong></b></h4>
                <button class="kg-toggle-card-icon" aria-label="Expand toggle to read content">
                    <svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"></path>
                    </svg>
                </button>
            </div>
            <div class="kg-toggle-content"><p><span style="white-space: pre-wrap;">Relying solely on post-money valuation is not a good idea. It can lead you to overlook operational inefficiencies, poor talent acquisition strategies, or unsustainable growth models. Combining metrics like headcount tracking ensures a comprehensive analysis.</span></p></div>
        </div><div class="kg-card kg-toggle-card" data-kg-toggle-state="close">
            <div class="kg-toggle-heading">
                <h4 class="kg-toggle-heading-text"><b><strong style="white-space: pre-wrap;">What additional metrics can complement post-money valuation and headcount tracking?</strong></b></h4>
                <button class="kg-toggle-card-icon" aria-label="Expand toggle to read content">
                    <svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"></path>
                    </svg>
                </button>
            </div>
            <div class="kg-toggle-content"><p><span style="white-space: pre-wrap;">Metrics like customer retention rates, net promoter scores (NPS), product-market fit, and R&amp;D investment levels can provide deeper insights into a company's potential.</span></p></div>
        </div><div class="kg-card kg-toggle-card" data-kg-toggle-state="close">
            <div class="kg-toggle-heading">
                <h4 class="kg-toggle-heading-text"><b><strong style="white-space: pre-wrap;">How can geographic distribution of employees impact a company’s scalability?</strong></b></h4>
                <button class="kg-toggle-card-icon" aria-label="Expand toggle to read content">
                    <svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"></path>
                    </svg>
                </button>
            </div>
            <div class="kg-toggle-content"><p><span style="white-space: pre-wrap;">Geographic distribution shows how well a company is expanding its operations and talent acquisition beyond its headquarters. A diverse workforce spread across regions often indicates global scalability.</span></p></div>
        </div><div class="kg-card kg-toggle-card" data-kg-toggle-state="close">
            <div class="kg-toggle-heading">
                <h4 class="kg-toggle-heading-text"><b><strong style="white-space: pre-wrap;">Are late-stage startups inherently less risky investments?</strong></b></h4>
                <button class="kg-toggle-card-icon" aria-label="Expand toggle to read content">
                    <svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"></path>
                    </svg>
                </button>
            </div>
            <div class="kg-toggle-content"><p><span style="white-space: pre-wrap;">Late-stage startups often have proven business models and revenue streams, reducing some risks compared to early-stage ventures. However, challenges like market saturation or difficulties in scaling further may still pose risks.</span></p></div>
        </div><div class="kg-card kg-toggle-card" data-kg-toggle-state="close">
            <div class="kg-toggle-heading">
                <h4 class="kg-toggle-heading-text"><span style="white-space: pre-wrap;">What does a lower post-money valuation indicate?</span></h4>
                <button class="kg-toggle-card-icon" aria-label="Expand toggle to read content">
                    <svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"></path>
                    </svg>
                </button>
            </div>
            <div class="kg-toggle-content"><p><span style="white-space: pre-wrap;">A higher post-money valuation indicates growth and is attractive to investors in future rounds, while a lower valuation raises concerns about the company's performance and market potential. </span></p></div>
        </div> ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ The Ultimate Guide to Professional Social Network X-Ray Searches (2025 Update) ]]></title>
        <description><![CDATA[ A definitive guide to searching for and extracting interesting Professional Social Network profiles at scale with Professional Social Network X-ray searches. ]]></description>
        <link>https://nubela.co/blog/linkedin-x-ray-search-in-2024/</link>
        <guid isPermaLink="false">65b43054e44b0e0001f4d425</guid>
        <category><![CDATA[ proxycurl ]]></category>
        <dc:creator><![CDATA[ Colton Randolph | Technical Writer ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2023/08/cr.jpg"/>
        <pubDate>Wed, 08 Jan 2025 10:26:00 +0800</pubDate>
        <media:content url="" medium="image"/>
        <content:encoded><![CDATA[ <p>Professional Social Network X-ray searches are a unique method that allows for much more freedom in terms of querying Professional Social Network's B2B database for interesting companies, jobs, and individuals.</p>
<p>Technically, there are two similar but functionally different methods referred to as "Professional Social Network X-ray searches"--both being aimed at improving the process of searching for and extracting data from Professional Social Network search results.</p>
<p>Before I continue with the methods to do Professional Social Network X-ray search...</p>
<h2 id="weve-already-built-a-full-working-demo-of-professional-social-network-x-ray-search">We've already built a full working demo of Professional Social Network X-ray search</h2>
<p>That you can start using now: [Free Professional Social Network Xray search tool](<a href="https://nubela.co/proxycurl/demo/Professional?ref=nubela.co">https://nubela.co/proxycurl/demo/Professional</a> Social Network-xray-tool)</p>
<p>You can simply find profiles by searching based on:</p>
<ul>
<li>Job title</li>
<li>Location by city</li>
</ul>
<figure class="kg-card kg-image-card kg-card-hascaption"><a href="https://nubela.co/proxycurl/demo/Professional%20Social%20Network-xray-tool?ref=nubela.co"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2025/01/Professional Social Network-Xray-search-demo-by-Proxycurl.jpg" class="kg-image" alt="Professional Social Network Xray search demo by Proxycurl" loading="lazy" width="1756" height="877"></a><figcaption><span style="white-space: pre-wrap;">For example, find CTOs based in Atlanta, it's that easy. </span></figcaption></figure><p>We'll be adding on more features to the free tool, so subscribe and stay tuned!</p>
<p>Now, back to business.</p>
<h2 id="an-overview-of-some-search-methods">An overview of some search methods</h2>
<p>The first method uses Boolean operators (such as NOT, AND, OR) within the Professional Social Network search engine to improve search results.</p>
<p>For example, let's say you wanted to find and hire a content marketer or content strategist, but you wanted to make sure they were also writers themselves, as well as familiar with SEO standards.</p>
<p>Rather than sifting through thousands of profiles on Professional Social Network to find the right prospect, you could use the following search query to instantly find them, <code>"content marketer" OR "content strategist" AND "writer" AND "SEO"</code>:</p>
<p>Quite a bit narrower than the original 385,00 results for "content marketer":</p>
<p>The second method for performing Professional Social Network X-ray searches is googling, but using operators to refine your results. The main difference is that we're using Google's search engine to find indexed Professional Social Network pages instead of Professional Social Network's search engine.</p>
<p>We also don't need to be logged into a Professional Social Network account to do the second method (hence the name "Professional Social Network X-ray search"), so there's no risk of getting banned. Most people prefer this method due to its scalability.</p>
<p>To give you an example, let's take our earlier example and take a look at the Google search results for <code>Professional Social Network content writer and SEO</code>:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/02/iScreen-Shoter---Google-Chrome---240215171328-1.png" class="kg-image" alt="Over 22 million results" loading="lazy" width="1443" height="370"><figcaption><span style="white-space: pre-wrap;">Over 22 million results</span></figcaption></figure><p>Wow, that's a lot. Let's use a bit of magic and confine our search results to only professionalsocialnetwork.com:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/02/iScreen-Shoter---Google-Chrome---240215171351.png" class="kg-image" alt="Down to 6 million results" loading="lazy" width="1430" height="368"><figcaption><span style="white-space: pre-wrap;">Down to 6 million results</span></figcaption></figure><p>Better. Now let's refine that search query further with operators: <code>site:professionalsocialnetwork.com/in ("content marketer" OR "content strategist") AND "writer" AND "SEO"</code>:</p>
<p>Much better!</p>
<p>That said, in this article, I'll be explaining how to use both methods to your advantage.</p>
<p>First, though, we need to talk a bit more about Boolean operators:</p>
<h1 id="what-are-boolean-operators">What are Boolean operators?</h1>
<p>A Boolean operator is a word or symbol used in logic and search queries to combine or exclude keywords, resulting in more focused and specific search results. It's basically like searching on steroids.</p>
<p>Both Professional Social Network and Google's search engines support the following Boolean operators:</p>
<table>
<thead>
<tr>
<th>Operator</th>
<th>Function</th>
<th>Example Usage</th>
</tr>
</thead>
<tbody>
<tr>
<td>AND</td>
<td>Results must include all specified terms</td>
<td>"developer AND manager"</td>
</tr>
<tr>
<td>OR</td>
<td>Results may include any of the specified terms</td>
<td>"sales OR marketing"</td>
</tr>
<tr>
<td>NOT</td>
<td>Excludes results containing the specified term (Google uses "-" for NOT)</td>
<td>"engineer NOT civil"</td>
</tr>
</tbody>
</table>
<h1 id="quick-heads-up">Quick heads up</h1>
<p>We're about to get into further examples of utilizing search operators on Professional Social Network and performing Professional Social Network X-ray searches on Google, but before we do, I just wanted to give you a heads-up that for the examples throughout this article, we'll assume we're working in some type of HR role and need to find a given individual to fill a job role.</p>
<p>However, don't freak. If that doesn't apply to you, for example, if you're in sales or marketing, you can still use these same methods to find prospects for your use case as well. You'll just slightly modify your search query.</p>
<p>Okay, now let's put this into practice:</p>
<h1 id="how-to-use-search-operators-on-professional-social-network">How to use search operators on Professional Social Network</h1>
<p>On top of just Boolean operators, Professional Social Network also supports the following other search operators:</p>
<table>
<thead>
<tr>
<th>Operator</th>
<th>Function</th>
<th>Example</th>
</tr>
</thead>
<tbody>
<tr>
<td>" "</td>
<td>Search for an exact phrase</td>
<td>"product manager"</td>
</tr>
<tr>
<td>( )</td>
<td>Group terms in complex queries</td>
<td>(senior OR junior) AND engineer</td>
</tr>
<tr>
<td>first:</td>
<td>Search by first name</td>
<td>first:John</td>
</tr>
<tr>
<td>last:</td>
<td>Search by last name</td>
<td>last:Doe</td>
</tr>
</tbody>
</table>
<p>These can further help refine our search results.</p>
<p>First up, the "AND" operator:</p>
<h3 id="and-operators">"AND" operators</h3>
<p>So, let's say we need to find a software engineer who lives in Los Angeles and has experience with both Javascript and Linux.</p>
<p>Here's how we could use Boolean operators to help us here, <code>"software engineer" AND "los angeles" AND "javascript" AND "linux"</code>:</p>
<p>That returns 374 results for profiles that match all of our search criteria. Here's the first profile:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/01/iScreen-Shoter---Google-Chrome---240130173347.png" class="kg-image" alt="The prospect fits our Javascript requirement" loading="lazy" width="968" height="397"><figcaption><span style="white-space: pre-wrap;">The prospect fits our Javascript requirement</span></figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/01/iScreen-Shoter---Google-Chrome---240130173323.png" class="kg-image" alt="The prospect also fits our Linux requirement" loading="lazy" width="1605" height="389"><figcaption><span style="white-space: pre-wrap;">The prospect also fits our Linux requirement</span></figcaption></figure><h3 id="not-operators">"NOT" operators</h3>
<p>Let's say for whatever reason, the company we're recruiting for doesn't hire programmers that use Kotlin.</p>
<p>The profile returned above also has Kotlin, the programming language, listed as a skill:</p>
<p>We can refine our search accordingly, <code>"software engineer" AND "los angeles"AND "javascript" AND "linux" NOT "kotlin"</code>:</p>
<p>You'll see our search just slightly went down in the number of results returned. Our friend from earlier is also now no longer returned.</p>
<h3 id="filtering-with-location-and-putting-everything-together">Filtering with location and putting everything together</h3>
<p>We can take this one step further and assume everything above is true, but the company we're recruiting for has offices in both Los Angeles and New York City, so they could work in either and come into either respective office.</p>
<p>We can expand our original search by alternating it slightly, <code>"software engineer" AND ("los angeles" OR "new york city") AND "javascript" AND "linux" NOT "Kotlin"</code>:</p>
<p>The amount nearly doubles by including New York City as an option. All profiles returned still fit our earlier search. Nice!</p>
<h1 id="searching-on-professional-social-network-vs-google">Searching on Professional Social Network vs. Google</h1>
<p>It may sound silly, but the main con of this way of searching for prospects is the fact you have to provide your own Professional Social Network account and be actively logged into it. You can't use Professional Social Network's search engine otherwise.</p>
<p>You'll also inevitably run into account limits and bans by doing this in bulk, and you [can't access more than 1,000 results](<a href="https://nubela.co/blog/how-to-bypass-Professional">https://nubela.co/blog/how-to-bypass-Professional</a> Social Network-search-limit/) at any given time on a free Professional Social Network account, even if it tells you more results were returned.</p>
<p>It's simply not a scalable method, and you can't automate it for the most part.</p>
<p>This is why Professional Social Network operators, while they help improve search results, aren't quite as powerful as utilizing Google to perform a true Professional Social Network X-ray search without the same limitations as on Professional Social Network.</p>
<p>That said, let me show you how to do this in a bit of a better way by using Google:</p>
<h1 id="googles-search-operators">Google's search operators</h1>
<p>On top of AND, OR, and NOT, Professional Social Network, Google also supports additional search operators:</p>
<table>
<thead>
<tr>
<th>Operator</th>
<th>Function</th>
<th>Example</th>
</tr>
</thead>
<tbody>
<tr>
<td>" "</td>
<td>Searches for an exact phrase</td>
<td>"climate change"</td>
</tr>
<tr>
<td>-</td>
<td>As mentioned above, Google uses "-" for NOT</td>
<td>jaguar -car</td>
</tr>
<tr>
<td>site:</td>
<td>Limits the search to a specific website or domain</td>
<td>site:nytimes.com</td>
</tr>
<tr>
<td>related:</td>
<td>Finds websites similar to a specified site</td>
<td>related:time.com</td>
</tr>
<tr>
<td>filetype:</td>
<td>Searches for a specific file type</td>
<td>filetype:pdf "renewable energy"</td>
</tr>
<tr>
<td>intitle:</td>
<td>Finds pages with a specific term in the title</td>
<td>intitle:conservation</td>
</tr>
<tr>
<td>inurl:</td>
<td>Searches for a specific term within the URL</td>
<td>inurl:nutrition</td>
</tr>
<tr>
<td>intext:</td>
<td>Searches for a specific term within the text of a page</td>
<td>intext:"global warming"</td>
</tr>
<tr>
<td>*</td>
<td>Acts as a wildcard</td>
<td>world * champion</td>
</tr>
<tr>
<td>AROUND(X)</td>
<td>Finds terms that are within a certain number of words apart</td>
<td>solar AROUND(3) energy</td>
</tr>
<tr>
<td>cache:</td>
<td>Shows the most recent cached version of a web page</td>
<td>cache:google.com</td>
</tr>
</tbody>
</table>
<p>We can use these operators to our advantage.</p>
<h1 id="how-to-do-professional-social-network-x-ray-searches">How to do Professional Social Network X-ray searches</h1>
<p><code>site:professionalsocialnetwork.com/in</code>, will be our starting point and is what allows us to search on Google exclusively for Professional Social Network results.</p>
<p>(<strong>Note:</strong> Remember the part from earlier where I mentioned you can also do this for companies and jobs? The only different is that companies have a URL structure with <code>/company</code> instead, for example: <code>https://www.professionalsocialnetwork.com/company/microsoft/</code>, and jobs have a URL structure of <code>/jobs</code>, such as: <code>https://www.professionalsocialnetwork.com/jobs/search/?currentJobId=3825567794</code>.)</p>
<h3 id="professional-social-network-x-ray-searches-by-job-role">Professional Social Network X-ray searches by job role</h3>
<p>So, let's say we want to find a full-stack developer. Here's how we could do just that by using a Professional Social Network X-ray search, <code>site:professionalsocialnetwork.com/in/ intitle:"full-stack developer"</code>:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/02/iScreen-Shoter---Google-Chrome---240202174708.png" class="kg-image" alt="Professional Social Network X-ray search results returned for &quot;fullstack developer&quot;" loading="lazy" width="1869" height="1070"><figcaption><span style="white-space: pre-wrap;">Professional Social Network X-ray search results returned for "full stack developer"</span></figcaption></figure><p>11,100 results returned. All consisting of Professional Social Network profiles, having "full-stack developer" in their title:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/02/iScreen-Shoter---Google-Chrome---240202172003.png" class="kg-image" alt="An example profile returned for &quot;fullstack developer&quot;" loading="lazy" width="1207" height="634"><figcaption><span style="white-space: pre-wrap;">An example profile returned for "full stack developer"</span></figcaption></figure><h3 id="professional-social-network-x-ray-searches-by-job-role-and-skill">Professional Social Network X-ray searches by job role and skill</h3>
<p>Now, let's narrow that search down a bit and say we need them to be familiar with both Django and React, <code>site:professionalsocialnetwork.com/in/ intitle:"full-stack developer" (django OR react)</code>:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/02/iScreen-Shoter---Google-Chrome---240202174824.png" class="kg-image" alt="Professional Social Network X-ray with job role and skill filtering applied" loading="lazy" width="1850" height="992"><figcaption><span style="white-space: pre-wrap;">Professional Social Network X-ray with job role and skill filtering applied</span></figcaption></figure><p>6,560 results returned. With profiles such as this:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/02/iScreen-Shoter---Google-Chrome---240202172346.png" class="kg-image" alt="Fits our search criteria" loading="lazy" width="1191" height="1389"><figcaption><span style="white-space: pre-wrap;">Fits our search criteria</span></figcaption></figure><h3 id="excluding-skills-roles-or-anything-from-your-professional-social-network-x-ray-search">Excluding skills, roles, or anything from your Professional Social Network X-ray search</h3>
<p>Next, let's say we want the same as above, but we want to exclude PHP programmers.</p>
<p>Here's how we could do that, <code>site:professionalsocialnetwork.com/in/ intitle:"full-stack developer" intext:django OR intext:react -php</code>:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/02/iScreen-Shoter---Google-Chrome---240202175215.png" class="kg-image" alt="Results returned with an excluding operator" loading="lazy" width="1805" height="1026"><figcaption><span style="white-space: pre-wrap;">Results returned with an excluding operator</span></figcaption></figure><p>Quite a bit fewer results, none of the profiles containing PHP within them as a skill:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/02/iScreen-Shoter---Google-Chrome---240202175035.png" class="kg-image" alt="All of those skills, and not one is PHP" loading="lazy" width="1198" height="1434"><figcaption><span style="white-space: pre-wrap;">All of those skills, and not one is PHP</span></figcaption></figure><p>I think you're probably just about getting the point, but I'll show you another trick:</p>
<h3 id="location-based-filtering-with-professional-social-network-x-ray-searches">Location-based filtering with Professional Social Network X-ray searches</h3>
<p>One way of doing this is by simply adding the location into the search such as this, <code>site:professionalsocialnetwork.com/in/ intitle:"full-stack developer" "new york city" (django OR react) -php</code>:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/02/iScreen-Shoter---Google-Chrome---240202175717.png" class="kg-image" alt="Results returned with location filtering" loading="lazy" width="1807" height="1009"><figcaption><span style="white-space: pre-wrap;">Results returned with location filtering</span></figcaption></figure><p>Obviously narrowing the search results down, matching profiles like this:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/02/iScreen-Shoter---Google-Chrome---240202175829.png" class="kg-image" alt="A New York City full-stack programmer without any skill in PHP" loading="lazy" width="1196" height="1156"><figcaption><span style="white-space: pre-wrap;">A New York City full-stack programmer without any skill in PHP</span></figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/02/iScreen-Shoter---Google-Chrome---240202180059.png" class="kg-image" alt="Results returned with ultra-specific location filtering" loading="lazy" width="1805" height="1285"><figcaption><span style="white-space: pre-wrap;">Results returned with ultra-specific location filtering</span></figcaption></figure><p>170 results. Full of Professional Social Network profiles like this:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/02/iScreen-Shoter---Google-Chrome---240202180255.png" class="kg-image" alt="A full-stack developer in Frankfurt" loading="lazy" width="1197" height="641"><figcaption><span style="white-space: pre-wrap;">A full-stack developer in Frankfurt</span></figcaption></figure><p>Not bad! You can get even more sophisticated with operators for an even more refined search results returned too.</p>
<p>Now let's talk a bit more about extracting this data from Professional Social Network:</p>
<h1 id="extracting-your-professional-social-network-x-ray-search-results">Extracting your Professional Social Network X-ray search results</h1>
<p>Ideally, we want to automate and systemize as much as possible. Especially if you're doing this at <a href="https://www.adobe.com/express/feature/image/resize?ref=nubela.co">scale image</a> for recruiting.</p>
<p>So, to help accomplish this, we can use a tool like <a href="https://www.valueserp.com/?ref=nubela.co">Value Serp</a>, which is a search engine result page API (<strong>ELI5</strong>: an API is like a fast food menu for data--it makes it easy to send/receive data between applications):</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/02/vs.png" class="kg-image" alt="What Value Serp's homepage looks like" loading="lazy" width="1900" height="968"><figcaption><span style="white-space: pre-wrap;">What Value Serp's homepage looks like</span></figcaption></figure><p>Its sole job is to scrape search result pages at scale and conveniently return the data. This will help us avoid any future issues like  running into CAPTCHAs or just blatantly being blocked (you'll have to source proxies otherwise).</p>
<p>Value Serp starts out at $2.50 to scrape 1,000 Google results, so not bad, but there are also other similar services out there you can use, so if you find an equivalent service for less, it's one of those things that it either works or doesn't, so it should do just as good of a job.</p>
<p>Anyway, using Value Serp's API, we can extract the results of Google search queries at scale:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/02/scrape-g.png" class="kg-image" alt="Value Serp's API" loading="lazy" width="1917" height="966"><figcaption><span style="white-space: pre-wrap;">Value Serp's API</span></figcaption></figure><p>And we can conveniently export these results to a <code>.CSV</code>:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/02/csv-1.png" class="kg-image" alt="Value Serp's process of exporting to .CSV" loading="lazy" width="793" height="315"><figcaption><span style="white-space: pre-wrap;">Value Serp's process of exporting to .CSV</span></figcaption></figure><p>Here's our earlier Germany example, <code>site:de.professionalsocialnetwork.com/in/ intitle:"full-stack developer" "frankfurt" (django OR react) -php</code> exported:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/02/iScreen-Shoter---Microsoft-Excel---240205181606.png" class="kg-image" alt="Our brand new .CSV" loading="lazy" width="914" height="363"><figcaption><span style="white-space: pre-wrap;">Our brand new .CSV</span></figcaption></figure><p>You could do this to thousands of profiles at once, all fitting different Professional Social Network X-ray search queries or recruiting prospects.</p>
<p>This is where Professional Social Network X-ray searches truly shine: the programmatic, and scalable nature of it in comparison to traditional Professional Social Network prospecting methods.</p>
<p>Continuing on:</p>
<h1 id="how-to-enrich-professional-social-network-profiles">How to enrich Professional Social Network profiles</h1>
<p>You now have a way to search for qualified prospects that meet specified criteria. You know how to search for Professional Social Network profile URLs at scale and export the results without limitations.</p>
<p>But a Professional Social Network profile URL alone doesn't do us much good.</p>
<p>Sure, you could click that URL and then manually send them a connection and try to message them, however, ideally, I would want their <a href="https://nubela.co/proxycurl/contact-api?ref=nubela.co">email and phone number</a> for better touchpoints. All 3 if possible for multiple touchpoints.</p>
<p>So, what's an easy way to do that?</p>
<p>Well, no other than <a href="https://proxycurl.com/?ref=nubela.co">Proxycurl</a> of course; a B2B data provider and API.</p>
<p>Let me explain more:</p>
<h2 id="proxycurls-person-profile-endpoint">Proxycurl's Person Profile Endpoint</h2>
<p>One of the key endpoints of Proxycurl is the <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#people-api-person-profile-endpoint">Person Profile Endpoint</a>, which allows you to extract quite a bit of data from [public Professional Social Network profiles](<a href="https://nubela.co/blog/the-ultimate-guide-to-Professional">https://nubela.co/blog/the-ultimate-guide-to-Professional</a> Social Network-public-profile-visibility/), such as education, employment, skills, and everything you would find on a Professional Social Network profile.</p>
<p>But it doesn't <em>just</em> extract Professional Social Network information. The B2B data provided by our API is also enriched with other data sources, which is our secret sauce.</p>
<p>Anyway, by using our Person Profile Endpoint, you can take your newly exported list of Professional Social Network profiles and enrich them, improving both the quantity and quality of data you have on any given prospect. And we can do it in a nearly automatic fashion that requires almost no effort or human intervention.</p>
<h2 id="using-proxycurls-api-for-enrichment">Using Proxycurl's API for enrichment</h2>
<p>In the above Value Serp API example I used their built-in API sandbox feature, however, for the following Proxycurl example I'll be using a bit of Python, one of the easiest programming languages there is to use, to accomplish our Professional Social Network profile enrichment.</p>
<p>(For the untechnical/non-programmers, there are many different ways to request data from an API. I chose Python because I'm familiar with it. You can easily use a free Python IDE like <a href="https://pycharm.com/?ref=nubela.co">PyCharm</a> on any device.)</p>
<p>That said, using a bit of Python, here's how we could pull quite a bit of information from any given Professional Social Network profile:</p>
<pre><code class="language-python">import requests

api_key = 'Your_API_Key_Here'
headers = {'Authorization': 'Bearer ' + api_key}
api_endpoint = 'https://nubela.co/proxycurl/api/v2/Professional Social Network'
params = {
    'Professional Social Network_profile_url': 'https://www.professionalsocialnetwork.com/in/russellbrunson/',
    'extra': 'include',
    'github_profile_id': 'include',
    'facebook_profile_id': 'include',
    'twitter_profile_id': 'include',
    'personal_contact_number': 'include',
    'personal_email': 'include',
    'inferred_salary': 'include',
    'skills': 'include',
    'use_cache': 'if-present',
    'fallback_to_cache': 'on-error',
}
try:
    response = requests.get(api_endpoint, params=params, headers=headers)
    response.raise_for_status()  # Raise an exception for HTTP errors (e.g., 404, 500)
    
    # Print the response content and status code
    print("Response Content:")
    print(response.text)
    print("\nResponse Status Code:", response.status_code)
except requests.exceptions.RequestException as e:
    print("An error occurred during the HTTP request:", e)
except Exception as ex:
    print("An unexpected error occurred:", ex)

</code></pre>
<p>In this example, it would enrich the <code>Professional Social Network_profile_url</code> of <code>https://www.professionalsocialnetwork.com/in/russellbrunson/</code> (random example, he's a co-founder of the company ClickFunnels), immediately printing the results:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/02/iScreen-Shoter---PyCharm---240205185342.png" class="kg-image" alt="An enriched Professional Social Network profile" loading="lazy" width="2000" height="1250"><figcaption><span style="white-space: pre-wrap;">An enriched Professional Social Network profile</span></figcaption></figure><p>(<strong>Note</strong>: You could try this for yourself by <a href="https://nubela.co/proxycurl/auth/register?ref=nubela.co">creating an account here</a>, we give you 15 free credits for testing a few things out upon account creation.)</p>
<p>The JSON result returned at the bottom looks like this:</p>
<pre><code class="language-json">"public_identifier": "russellbrunson", "profile_pic_url": "normal_url.com", "background_cover_image_url": null, "first_name": "Russell", "last_name": "Brunson", "full_name": "Russell Brunson", "follower_count": 81644, "occupation": "Owner at ClickFunnels", "headline": "New York Times Bestselling Author, Co-Founder of ClickFunnels", "summary": "Over the past 14 years, Russell has built a following of over 2 million entrepreneurs, sold over 450,000 copies of his books, popularized the concept of sales funnels, and co-founded ClickFunnels, a software company that helps 90,000 entrepreneurs quickly get their message out to the marketplace. \n\nRussell has been featured on major publications and websites such as Forbes, Entrepreneur Magazine, and The Huffington Post. He is also the host of the #1 rated business podcast, Marketing Secrets. In 2018, he was awarded \u2018Entrepreneur of the Year\u2019 in the Utah region by ey.com. Russell also regularly works with non-profits like Operation Underground Railroad and Village Impact.", "country": "US", "country_full_name": "United States of America", "city": null, "state": null, "experiences"...(continues on with more data)...
</code></pre>
<p>You can see all of the different data points that can be returned by the <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#people-api-person-profile-endpoint">Person Profile Endpoint here</a>.</p>
<p>So, of course, you could individually put any given Professional Social Network profile in your new Python script to enrich, but you could also automate the entire process, using a familiar file format such as a <code>.CSV</code> to store the data, such as your Professional Social Network profile URLs.</p>
<h3 id="how-to-easily-enrich-professional-social-network-profiles-at-scale">How to easily enrich Professional Social Network profiles at scale</h3>
<p>In fact, here's a script that does just that, reading an original <code>.CSV</code> named <code>input_Professional Social Network_profiles.csv</code>, full of just Professional Social Network URLs, enriches them, and then returns the results into a new <code>.CSV</code> named <code>enriched_data.csv</code>:</p>
<pre><code class="language-python">import json
import requests
import csv

# Your API key
API_KEY = 'Your_API_Key_Here'

# API endpoint for Person Profile
api_endpoint = 'https://nubela.co/proxycurl/api/v2/Professional Social Network'

# Headers for the API request
headers = {'Authorization': 'Bearer ' + API_KEY}

# Input and output CSV file names
input_file = 'input_Professional Social Network_profiles.csv'
output_file = 'enriched_data.csv'

# Function to extract experiences as a string
def extract_experiences(profile):
    experiences = profile.get('experiences', [])
    return '; '.join([f"{exp.get('title', '')} at {exp.get('company', '')}" for exp in experiences])

# Read Professional Social Network profile URLs from the input CSV file
with open(input_file, 'r') as csvfile:
    reader = csv.reader(csvfile)
    Professional Social Network_urls = [row[0] for row in reader]

# Open the output CSV file for writing
with open(output_file, 'w', newline='') as csvfile:
    fieldnames = [
        'Professional Social Network_url', 'full_name', 'profile_picture', 'current_occupation',
        'country', 'city', 'state', 'experiences', 'skills', 'personal_emails', 'inferred_salary'
    ]
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
    writer.writeheader()

    # Loop through each Professional Social Network profile URL
    for Professional Social Network_url in Professional Social Network_urls:
        params = {
            'Professional Social Network_profile_url': Professional Social Network_url,
            'extra': 'include',
            'github_profile_id': 'include',
            'facebook_profile_id': 'include',
            'twitter_profile_id': 'include',
            'personal_contact_number': 'include',
            'personal_email': 'include',
            'inferred_salary': 'include',
            'skills': 'include',
            'use_cache': 'if-recent',
            'fallback_to_cache': 'on-error',
        }

        response = requests.get(api_endpoint, params=params, headers=headers)
        if response.status_code == 200:
            profile = response.json()

            # Extracting skills and experiences
            skills = ", ".join(profile.get('skills', []))
            experiences_str = extract_experiences(profile)

            writer.writerow({
                'Professional Social Network_url': Professional Social Network_url,
                'full_name': profile.get('full_name', ''),
                'profile_picture': profile.get('profile_pic_url', ''),
                'current_occupation': profile.get('occupation', ''),
                'country': profile.get('country_full_name', ''),
                'city': profile.get('city', ''),
                'state': profile.get('state', ''),
                'experiences': experiences_str,
                'skills': skills,
                'personal_emails': "; ".join(profile.get('personal_emails', [])),
                'inferred_salary': profile.get('inferred_salary', {}).get('min', '')  # Example of handling nested data
            })
        else:
            print(f"Failed to fetch data for {Professional Social Network_url}, Status Code: {response.status_code}")

print(f"Data exported to {output_file}")
</code></pre>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/02/excel.png" class="kg-image" alt="Example of the data returned into the new .CSV" loading="lazy" width="2000" height="379"><figcaption><span style="white-space: pre-wrap;">Example of the data returned into the new .CSV</span></figcaption></figure><p>There's <strong>no limit to this</strong>, so you can automate the enrichment of thousands and thousands of prospects/Professional Social Network profile URLs directly generated from a tool like Value Serp. You could also integrate our API directly with Value Serp's API and skip the <code>.CSV</code> with a little bit more effort.</p>
<p>But there's also another way of doing this as well...</p>
<h2 id="proxycurls-person-search-endpoint">Proxycurl's Person Search Endpoint</h2>
<p>Proxycurl's <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#search-api-person-search-endpoint">Person Search Endpoint</a> is another useful endpoint, especially for those in the recruitment sector. It allows you to search for individuals by using job roles, education, the companies they work for, and more.</p>
<p>So you'll be able to skip Value Serp and search directly within our existing dataset, full of millions and millions of Professional Social Network profiles (powered by <a href="https://nubela.co/proxycurl/linkdb?ref=nubela.co">LinkDB</a>). And it's pretty darn simple to do so. Much similar to the above examples.</p>
<h3 id="searching-based-on-job-role-and-company">Searching based on job role and company</h3>
<p>Let's say we want to hire a project manager, and we want them to be from a big tech background.</p>
<p>We'll use Microsoft as the source company (but we could of course use others, such as AWS), and then we can use the following Python script to search our dataset for anyone that matches being a "project manager" for "Microsoft" and return an enriched result:</p>
<pre><code class="language-python">import json, requests

headers = {'Authorization': 'Bearer ' + 'Your_API_Key_Here'}
api_endpoint = 'https://nubela.co/proxycurl/api/search/person/'
params = {
    'country': 'US',
    'current_role_title': '(?i)Project Manager',
    'current_company_Professional Social Network_profile_url': 'https://www.professionalsocialnetwork.com/company/microsoft',
    'page_size': '10',
    'enrich_profiles': 'enrich',
}
try:
    response = requests.get(api_endpoint, params=params, headers=headers)
    response.raise_for_status()  # Raise an exception for HTTP errors (e.g., 404, 500)
    
    # Print the response content and status code
    print("Response Content:")
    print(response.text)
    print("\nResponse Status Code:", response.status_code)
except requests.exceptions.RequestException as e:
    print("An error occurred during the HTTP request:", e)
except Exception as ex:
    print("An unexpected error occurred:", ex)
</code></pre>
<p>Here's an example profile:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/02/iScreen-Shoter---Google-Chrome---240208155614.png" class="kg-image" alt="Microsoft project manager" loading="lazy" width="1196" height="1340"><figcaption><span style="white-space: pre-wrap;">Microsoft project manager</span></figcaption></figure><p>It should be noted when using the <code>enrich_profiles</code> variable, you're limited to a <code>page_size</code> of 10 (which is why you see that limit above), but you can use our <code>next_page</code> function to pull large enriched lists with ease still.</p>
<h3 id="extracting-all-search-results">Extracting all search results</h3>
<p>Here's a slightly altered script that would endlessly keep going until there were no more results to return:</p>
<pre><code class="language-python">import requests

api_key = 'Your_API_Key_Here'
headers = {'Authorization': 'Bearer ' + api_key}
api_endpoint = 'https://nubela.co/proxycurl/api/search/person/'
params = {
    'country': 'US',
    'current_role_title': '(?i)Project Manager',
    'current_company_Professional Social Network_profile_url': 'https://www.professionalsocialnetwork.com/company/microsoft',
    'page_size': '10',
    'enrich_profiles': 'enrich',
}
def fetch_page(url, params):
    response = requests.get(url, params=params, headers=headers)
    if response.status_code == 200:
        return response.json()
    else:
        print("Error:", response.status_code, response.text)
        return None

# Fetch the initial page
response_data = fetch_page(api_endpoint, params)

# Loop through pages
while response_data and response_data.get('next_page'):
    # Process the results here
    for result in response_data['results']:
        print(result)  # or any other processing

    # Fetch the next page
    next_page_url = response_data['next_page']
    if 'country' not in next_page_url:
        next_page_url += '&amp;country=US'  # Append 'country' parameter
    response_data = fetch_page(next_page_url, {})

# End of pagination
print("Completed fetching all pages.")
</code></pre>
<h3 id="exporting-search-results-to-a-csv">Exporting search results to a .CSV</h3>
<p>We could even take these results and export them to a <code>.CSV</code> like so:</p>
<pre><code class="language-python">import requests
import csv
from urllib.parse import urlparse, parse_qs, urlencode, urlunparse

# API credentials and endpoint configuration
api_key = 'Your_API_Key_Here'
headers = {'Authorization': 'Bearer ' + api_key}
api_endpoint = 'https://nubela.co/proxycurl/api/search/person/'

# Parameters for the initial request
initial_params = {
    'country': 'US',
    'current_role_title': '(?i)Project Manager',
    'current_company_Professional Social Network_profile_url': 'https://www.professionalsocialnetwork.com/company/microsoft',
    'page_size': '10',
    'enrich_profiles': 'enrich',
}

# Define the output CSV file and headers
output_file = 'enriched_profiles.csv'
fieldnames = [
    'Professional Social Network_profile_url', 'full_name', 'profile_picture', 'background_cover_image_url',
    'current_occupation', 'location'
]

def fetch_profiles(url, headers, params=None):
    """Fetch profiles from the given URL with specified parameters."""
    response = requests.get(url, headers=headers, params=params)
    if response.status_code == 200:
        return response.json()
    else:
        print(f"Error: {response.status_code}, {response.text}")
        return None

def add_country_to_url(url, country):
    """Add the 'country' parameter to the given URL."""
    parsed_url = urlparse(url)
    query_params = parse_qs(parsed_url.query, keep_blank_values=True)
    query_params['country'] = [country]  # Ensure 'country' parameter is included
    new_query = urlencode(query_params, doseq=True)
    new_url = urlunparse(parsed_url._replace(query=new_query))
    return new_url

def process_profile_data(profile):
    """Process and return the profile data in a dict format."""
    return {
        'Professional Social Network_profile_url': profile.get('Professional Social Network_profile_url', ''),
        'full_name': profile.get('profile', {}).get('full_name', ''),
        'profile_picture': profile.get('profile', {}).get('profile_pic_url', ''),
        'background_cover_image_url': profile.get('profile', {}).get('background_cover_image_url', ''),
        'current_occupation': profile.get('profile', {}).get('occupation', ''),
        'location': f"{profile.get('profile', {}).get('city', '')}, {profile.get('profile', {}).get('country_full_name', '')}"
    }

# Open the output CSV file for writing
with open(output_file, mode='w', newline='') as file:
    writer = csv.DictWriter(file, fieldnames=fieldnames)
    writer.writeheader()

    # Fetch the initial page of profiles
    profiles_data = fetch_profiles(api_endpoint, headers, initial_params)

    if profiles_data and 'results' in profiles_data:
        # Iterate through each profile and write to CSV
        for profile in profiles_data['results']:
            profile_data = process_profile_data(profile)
            writer.writerow(profile_data)

        # Handle pagination
        while 'next_page' in profiles_data:
            next_page_url = add_country_to_url(profiles_data['next_page'], initial_params['country'])
            profiles_data = fetch_profiles(next_page_url, headers)

            if profiles_data and 'results' in profiles_data:
                for profile in profiles_data['results']:
                    profile_data = process_profile_data(profile)
                    writer.writerow(profile_data)
            else:
                break

print("Completed fetching and storing all profile data.")
</code></pre>
<p>It would export them to a file named <code>enriched_profiles.csv</code> that looks like this:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/02/results-returned.png" class="kg-image" alt="microsoft project managers" loading="lazy" width="1334" height="450"><figcaption><span style="white-space: pre-wrap;">.CSV file exported, all Microsoft project managers</span></figcaption></figure><h3 id="exporting-phone-numbers-and-emails-with-our-search-api">Exporting phone numbers and emails with our Search API</h3>
<p>Notice, however, how there is no phone number or email...</p>
<p>We could use our <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#contact-api-personal-contact-number-lookup-endpoint">Personal Contact Number Lookup Endpoint</a> and <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#contact-api-personal-email-lookup-endpoint">Personal Email Lookup Endpoint</a> to change that.</p>
<p>Here's our updated Python script, keeping the same "project manager" at "Microsoft" example:</p>
<pre><code class="language-python">import requests
import csv
from urllib.parse import urlparse, parse_qs, urlencode, urlunparse

# API credentials and endpoint configuration
api_key = 'Your_API_Key_Here'  # Replace with your actual API key
headers = {'Authorization': 'Bearer ' + api_key}
search_api_endpoint = 'https://nubela.co/proxycurl/api/search/person/'
contact_phone_endpoint = 'https://nubela.co/proxycurl/api/contact-api/personal-contact'
contact_email_endpoint = 'https://nubela.co/proxycurl/api/contact-api/personal-email'

# Parameters for the initial search request
search_params = {
    'country': 'US',
    'current_role_title': '(?i)Project Manager',
    'current_company_Professional Social Network_profile_url': 'https://www.professionalsocialnetwork.com/company/microsoft',
    'page_size': '10',
    'enrich_profiles': 'enrich',
}

# Define the output CSV file and headers
output_file = 'enriched_profiles_with_contacts.csv'
fieldnames = [
    'Professional Social Network_profile_url', 'full_name', 'profile_picture', 'background_cover_image_url',
    'current_occupation', 'location', 'personal_phone_number', 'personal_email'
]


def fetch_contact_info(api_endpoint, Professional Social Network_profile_url):
    """Fetch personal contact info (phone number or email)."""
    params = {'Professional Social Network_profile_url': Professional Social Network_profile_url}
    response = requests.get(api_endpoint, headers=headers, params=params)
    if response.status_code == 200:
        data = response.json()
        if api_endpoint.endswith('personal-contact'):
            return ', '.join(data.get('numbers', []))  # Join all numbers into a single string
        elif api_endpoint.endswith('personal-email'):
            return ', '.join(data.get('emails', []))  # Join all emails into a single string
    else:
        print(f"Error fetching contact info from {api_endpoint}: {response.status_code}, {response.text}")
    return ''  # Return empty string if no data or in case of error


def add_country_to_url(url, country):
    """Add the 'country' parameter to the given URL."""
    parsed_url = urlparse(url)
    query_params = parse_qs(parsed_url.query, keep_blank_values=True)
    query_params['country'] = [country]
    new_query = urlencode(query_params, doseq=True)
    new_url = urlunparse(parsed_url._replace(query=new_query))
    return new_url


def process_and_write_profiles(writer):
    """Fetch profiles and write their details, including contact info, to the CSV file."""
    url = search_api_endpoint
    params = search_params.copy()

    while url:
        response = requests.get(url, headers=headers, params=params)
        if response.status_code != 200:
            print(f"Error fetching profiles: {response.status_code}, {response.text}")
            break

        data = response.json()
        for profile in data.get('results', []):
            # Fetch contact information
            email_info = fetch_contact_info(contact_email_endpoint, profile['Professional Social Network_profile_url'])
            phone_info = fetch_contact_info(contact_phone_endpoint, profile['Professional Social Network_profile_url'])

            # Write profile and contact information to CSV
            writer.writerow({
                'Professional Social Network_profile_url': profile['Professional Social Network_profile_url'],
                'full_name': profile['profile']['full_name'],
                'profile_picture': profile['profile']['profile_pic_url'],
                'background_cover_image_url': profile['profile']['background_cover_image_url'],
                'current_occupation': profile['profile']['occupation'],
                'location': f"{profile['profile']['city']}, {profile['profile']['country_full_name']}",
                'personal_phone_number': phone_info,
                'personal_email': email_info,
            })

        # Prepare for the next page
        next_page_url = data.get('next_page')
        if next_page_url:
            url = add_country_to_url(next_page_url, search_params['country'])
            params = {}  # Since all needed params are in the URL, clear params to avoid duplication
        else:
            break


# Open the output CSV file for writing and process profiles
with open(output_file, mode='w', newline='') as file:
    writer = csv.DictWriter(file, fieldnames=fieldnames)
    writer.writeheader()
    process_and_write_profiles(writer)

print("Completed fetching and storing all profile data with contact information.")
</code></pre>
<p>Which will export an enriched list of prospects, including contact and email (providing we have it available), to a file named <code>enriched_profiles_with_contacts.csv</code>:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/02/enriched.png" class="kg-image" alt="Our new .CSV that includes contact information" loading="lazy" width="2797" height="1201"><figcaption><span style="white-space: pre-wrap;">Our new .CSV that includes contact information</span></figcaption></figure><p>I've gone ahead and blurred all contact information, but as you can see, it pulled additional contact information for many of our earlier prospects.</p>
<p>Now we're really talking...</p>
<p>There are 100 different ways you could do this, even going as far as to directly integrate outreach channels straight into our API (sending emails, messages, automatically) and beyond.</p>
<p>But, as you can see, our Search API is quite powerful, and you can avoid many of the cons of a traditional Professional Social Network search, or Professional Social Network X-ray search.</p>
<h1 id="by-the-way-if-youre-entirely-uninterested-in-coding">By the way, if you're entirely uninterested in coding...</h1>
<p>I don't know how you got this far. Nevertheless, we do have a no-code option that anyone could use.</p>
<p>It's a Google Sheets extension named <a href="https://sapiengraph.com/?utm_campaign=own_platforms&utm_source=proxycurl_website&utm_medium=platforms&utm_content=article_link">Sapiengraph</a> that'll allow you to conveniently pull all of this same data into a Google Sheets spreadsheet.</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><a href="https://sapiengraph.com/?ref=nubela.co"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/02/TLC_Use_Proxycurl_s_APIs_Within_Google_Sheets-_Introducing_Sapiengraph-.png" class="kg-image" alt="Same power, but all of the convenience in the world - Sapiengraph Google Sheets enrichment" loading="lazy" width="2048" height="1040"></a><figcaption><span style="white-space: pre-wrap;">Same power, but all of the convenience in the world</span></figcaption></figure><p>It won't have the level of functionality or customizability as our API, however, it's still very effective and <a href="https://sapiengraph.com/?utm_campaign=own_platforms&utm_source=proxycurl_website&utm_medium=platforms&utm_content=article_link">worth checking out</a>!</p>
<h1 id="additional-tips">Additional tips</h1>
<p>There are several other API endpoints we offer that could be of value to you, but I'm not going to mention every single one of them here for the sake of brevity.</p>
<p>The most immediately relevant not already shown above is our <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#company-api-employee-listing-endpoint">Employee Listing Endpoint</a>, which works similarly to our Person Search Endpoint, but instead searches a given company for a matching job role.</p>
<p>Outside of that, for a full understanding of what's possible, <a href="https://nubela.co/proxycurl/docs?ref=nubela.co">I would read over our documentation here</a>.</p>
<h1 id="you-now-have-three-options">You now have three options</h1>
<ol>
<li>
<p>You can take your newly gained knowledge and do nothing with it.</p>
</li>
<li>
<p>You can take your newly gained knowledge about Professional Social Network X-ray searches and implement it.</p>
</li>
<li>
<p>You can take your newly gained knowledge about Professional Social Network X-ray searches and our B2B enrichment APIs and fully utilize it to your advantage.</p>
</li>
</ol>
<p>The choice is yours to make, but, if you're thinking what I'm thinking in my admittedly <em>very</em> biased position...</p>
<h1 id="create-your-proxycurl-account-today">Create your Proxycurl account today</h1>
<p>It's free to create a Proxycurl account and you start out with a few trial credits to test things out. What do you have to lose?</p>
<p>That said, <a href="https://nubela.co/proxycurl/auth/register?ref=nubela.co">you can click right here to create your account for free now</a>.</p>
<p>If you're interested in learning more about our credit usage system and pricing policy first, <a href="https://nubela.co/proxycurl/pricing?ref=nubela.co">you can do that here</a>.</p>
<h1 id="conclusion">Conclusion</h1>
<p>Whether you're looking to <a href="https://nubela.co/blog/the-proxycurl-success-story-hiring-a-marketing-manager-through-automated-recruitment-and-executive-search/">fill a job role</a>, <a href="https://nubela.co/blog/how-cold-emailing-grew-my-b2b-startup-to-100k-mrr/">find a sales lead</a>, or beyond, Professional Social Network X-ray searches offer a scalable and programmatically friendly way to access the vast amounts of B2B data available on Professional Social Network. It just requires a bit of technical know-how.</p>
<p>But, if you want the most convenient way, you can skip Professional Social Network X-ray searches altogether and <a href="https://proxycurl.com/?ref=nubela.co">use a B2B data provider and API like ours to handle all of the headaches for you</a> (like scraping Professional Social Network profiles and Google SERPs). You can just flawlessly pull rich B2B data instead.</p>
<p>Thanks for reading, and here's to both more and better-quality data!</p>
<p><strong>P.S.</strong> Have any questions about Proxycurl? Feel free to reach out to us at "<a href="mailto:hello@nubela.co">hello@nubela.co</a>" and we'll be glad to help!</p>
 ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ 13 Best Company Data Enrichment Tools in 2025 (Free &amp; Paid) ]]></title>
        <description><![CDATA[ Discover 13 top company data enrichment tools in 2025 and how to find your fit. 1. Proxycurl 2. Clearbit 3. Zoominfo 4. UpLead 4. Adapt.io ]]></description>
        <link>https://nubela.co/blog/13-best-company-data-enrichment-tools-in-2025-free-paid/</link>
        <guid isPermaLink="false">675cc64cb4546d00014e8977</guid>
        <category><![CDATA[ company data enrichment ]]></category>
        <dc:creator><![CDATA[ Sese | Technical Writer ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/10/IMG_4677.jpeg"/>
        <pubDate>Tue, 31 Dec 2024 10:36:30 +0800</pubDate>
        <media:content url="" medium="image"/>
        <content:encoded><![CDATA[ <p>Google search <a href="https://nubela.co/blog/best-data-enrichment-tools/">"data enrichment"</a> and you will get countless data enrichment tools, all promising the freshest, fastest, and most accurate data. Now, switch your search to "company data enrichment". You will find the similar search results; the same typical tools without any distinction.</p>
<p>Usually most data providers offer both individual data enrichment (focused on people) and company data enrichment (focused on businesses), but the nuances often get lost in between. And if company data enrichment is what you're looking for, you need a list of providers that excel in that area rather than your common run of the mill list of general data enrichment providers.</p>
<p>Let me ease your search by providing you a list of the top company data enrichment providers to consider as we head to 2025. I'll also share key criteria and metrics to help you choose the right provider for your needs, so you get the most value out of it.</p>
<p>I'll kick things off with an overview of all company enrichment tools before we take a look at each one.</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/12/Table-13-Best-Company.png" class="kg-image" alt="13 different top company data enrichment tools in 2025" loading="lazy" width="1040" height="1397"><figcaption><span style="white-space: pre-wrap;">13 best company data enrichment tools of 2025</span></figcaption></figure><p>Now, let's walk through each one of these tools.</p>
<h2 id="best-company-data-enrichment-tools-for-2025">Best Company Data Enrichment Tools for 2025</h2>
<h3 id="1-proxycurl">1. <a href="http://nubela.co/proxycurl?ref=nubela.co">Proxycurl</a></h3>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdxfgwVxTRQqx8eVFH9_cG8o9bveTJ8r3Zum6HcOyiMWtJYwuUnB3NpSeiigM1aCNfnHSobgderDqW0L09vcvo2VxFzfKfnAkntzvb-jTe-Sp3pRnN8IlAjrwd3UeHSHRWokKwttg?key=z_8JavWYNdNwa7TM8w7lLEfr" alt="Proxycurl Landing Page" loading="lazy"></p>
<p>Made for developers, Proxycurl takes the API-first approach to another level. With an exhaustive dataset of millions of companies and individuals around the globe, no information is out of your grasp. That is without mentioning the huge portfolio of API endpoints which scrape and enrich profiles, providing a variety of data points.</p>
<p>The <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#company-api-company-profile-endpoint">Company Profile Endpoint</a> in particular, allows you to enrich your company data in real-time. You can add or remove parameters, based on what you need. Make the most of Proxycurl's APIs flexibly and integrate them into any existing applications and workflows.</p>
<p>Here is an example Company Profile Endpoint API request to pull company data for Tesla:</p>
<pre><code>
import requests

api_key = 'YOUR_API_KEY'

headers = {'Authorization': 'Bearer ' + api_key}

api_endpoint = 'https://nubela.co/proxycurl/api/Professional Social Network/company'

params = {

    'url': 'https://www.professionalsocialnetwork.com/company/Tesla/',

    'categories': 'include',

    'funding_data': 'include',

    'exit_data': 'include',

    'acquisitions': 'include',

    'extra': 'include',

    'use_cache': 'if-present',

    'fallback_to_cache': 'on-error',

}

response = requests.get(api_endpoint,

                params=params,

                headers=headers)

</code></pre>
<p>Proxycurl offers multiple endpoints, so you have the option to target and enrich specific data fields.</p>
<p>Under Company Profile APIs, you can find the following endpoints:</p>
<ul>
<li>
<p><a href="https://nubela.co/proxycurl/docs?ref=nubela.co#company-api-company-profile-endpoint">Company Profile Endpoint</a>: Enrich company profiles with structured data like funding &amp; investments data, locations, industries etc.</p>
</li>
<li>
<p><a href="https://nubela.co/proxycurl/docs?ref=nubela.co#company-api-company-lookup-endpoint">Company Lookup Endpoint</a>: Get a company's profile URL using their name, website and/or location.</p>
</li>
<li>
<p><a href="https://nubela.co/proxycurl/docs?ref=nubela.co#company-api-employee-search-api-endpoint">Employee Search Endpoint</a>: Get the profile URL of employees using their job title.</p>
</li>
<li>
<p><a href="https://nubela.co/proxycurl/docs?ref=nubela.co#company-api-employee-listing-endpoint">Employee Listing Endpoint</a>: Get a list of past and present employees of a company.</p>
</li>
<li>
<p><a href="https://nubela.co/proxycurl/docs?ref=nubela.co#company-api-employee-count-endpoint">Employee Count Endpoint</a>: Get the number of employees in a company.</p>
</li>
<li>
<p><a href="https://nubela.co/proxycurl/docs?ref=nubela.co#company-api-company-profile-picture-endpoint">Company Profile Picture Endpoint</a>: Get a company's Professional Social Network profile picture.</p>
</li>
</ul>
<p>Proxycurl has over 21 APIs that scrape individual and company data in real-time. You can learn about each one of them through our <a href="https://nubela.co/blog/ultimate-guide-to-all-21-proxycurl-apis-enrich-people-company-profiles/#21-apis-that-scrape-profiles-of-people-company-contact-jobs-a-name21-apis-that-scrape-profiles-of-peoplecompanycontactjobsa">Ultimate Guide to Proxycurl APIs</a>.</p>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXc6Iebcyq-xhZ7I9Gs37JllnwgqCp5IGizdC90Kz9-oiAlWMV8nM-LcMRTrG8_bYRoj86dU7nqsm51jRblplu9ymN4VTqsbIBDMaroxYFKlKfrdGgXIF0IgGRapso4vI7L26Ydw5Q?key=z_8JavWYNdNwa7TM8w7lLEfr" alt="LinkDB Landing Page" loading="lazy"></p>
<p>Proxycurl's <a href="https://nubela.co/proxycurl/linkdb?ref=nubela.co">LinkDB</a> also deserves a shout. With over 500 million Professional Social Network profiles and more than 40 detailed data points, you can build and scale your business, identify promising talents, discover investment opportunities, and more.</p>
<h4 id="proxycurl-key-features">Proxycurl Key Features</h4>
<ul>
<li>
<p>Enrich professional profiles of companies and individuals.</p>
</li>
<li>
<p>Real-time enrichment with company data, including employee count and funding rounds.</p>
</li>
<li>
<p>Multiple APIs tailored for easy integration into custom workflows.</p>
</li>
<li>
<p>Supports bulk data enrichment through scalable API endpoints.</p>
</li>
</ul>
<h4 id="proxycurl-pros">Proxycurl Pros</h4>
<ul>
<li>
<p>Real-time data enrichment and <a href="https://nubela.co/blog/how-fresh-are-profiles-returned-by-proxycurl-api/">data freshness guarantee</a> to top that up.</p>
</li>
<li>
<p>Affordable pricing</p>
</li>
<li>
<p>Highly customizable, perfect for developers.</p>
</li>
<li>
<p>Granular insights into company and individual data.</p>
</li>
</ul>
<h4 id="proxycurl-cons">Proxycurl Cons</h4>
<ul>
<li>Perfect for developers, might be a learning curve for non-technical users.</li>
</ul>
<h4 id="proxycurl-pricing"><a href="https://nubela.co/proxycurl/pricing?ref=nubela.co">Proxycurl Pricing</a></h4>
<table>
<thead>
<tr>
<th style="text-align:center">Plans</th>
<th style="text-align:center">Details</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:center">Free</td>
<td style="text-align:center">10 credits on sign-up ✅<br> 20 credits for work email ⭐️</td>
</tr>
<tr>
<td style="text-align:center">Basic Paid</td>
<td style="text-align:center">$49/mo</td>
</tr>
<tr>
<td style="text-align:center">High-end Paid</td>
<td style="text-align:center">Starts from $2000/mo</td>
</tr>
</tbody>
</table>
<h3 id="2-a-href-httpsclearbitcom-relnofollowclearbita">2. <a href="https://clearbit.com/?ref=nubela.co" rel="nofollow">Clearbit</a></h3>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfpgqPc0ofzVGY3vPVKHV_RASTzLtd3H5YaXpFQxQzqjc1n2dqfRoqWqXoDng-LHPjlRF_XP-0SyZa2hqmi9aqBUPy2J77wTw3d1ltOMgyMhciglqMpzrTeKMrJZC8WA3IS_OJkzQ?key=z_8JavWYNdNwa7TM8w7lLEfr" alt="Clearbit Landing Page" loading="lazy"></p>
<p>Clearbit is a company data enrichment tool that instantly upgrades your data game. Hubspot's recent acquisition only goes to show how great a tool it is.</p>
<p>Clearbit powers their data enrichment with machine learning. It combines first-party data and third-party sources to enrich company profiles with 100+ Firmographics and technographic data that automatically updates every 30 days.</p>
<p>One feature that really stands out for me is its ability to pair company data with decision-maker insights, creating a two-way approach to enrichment.</p>
<h4 id="clearbit-key-features">Clearbit Key Features</h4>
<ul>
<li>
<p>Automatically updates records every 30 days.</p>
</li>
<li>
<p>Added decision-maker data with contact details and roles.</p>
</li>
<li>
<p>Supports updates to back-end systems with APIs and webhooks.</p>
</li>
</ul>
<h4 id="clearbit-pros">Clearbit Pros</h4>
<ul>
<li>
<p>Offers both real-time API and batch enrichment options.</p>
</li>
<li>
<p>Integrated with Hubspot, an all-in-one CRM platform.</p>
</li>
</ul>
<h4 id="clearbit-cons">Clearbit Cons</h4>
<ul>
<li>
<p>Users report instances of getting false data and sometimes non-existent emails.</p>
</li>
<li>
<p>Pricing is not transparent and predictable.</p>
</li>
</ul>
<h4 id="clearbit-pricing">Clearbit Pricing</h4>
<p>Clearbit's previous pricing is no longer relevant. You will have to contact Hubspot to get a quote.</p>
<h3 id="3-a-href-httpswwwzoominfocom-relnofollow-zoominfoa">3. <a href="https://www.zoominfo.com/?ref=nubela.co" rel="nofollow"> ZoomInfo</a></h3>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXemvvqt9ZaKP7g4OqGFxCNI-BHMbx2u3rF8udm5HdjZvpO829qaRP_j4MHRKI3-LAKvfXW1xwIMZ5lXKGCHUEghYrZM9X1_xWLTHNcFFqg9yBLLdPtxS63cOkriOIKDKDmup5iCJA?key=z_8JavWYNdNwa7TM8w7lLEfr" alt="CZoominfo Landing Page" loading="lazy"></p>
<p>ZoomInfo boasts datasets of over 14 million companies and remains one of the most well-renowned B2B lead enrichment platforms. Aside from enrichment, Zoominfo also supplies marketing and recruitment solutions.</p>
<p>One thing to note is their data is pretty US-centric, so if you're looking for wider geographical coverage, Zoominfo might come up short. It doesn't take away the fact that they provide a variety of solutions, and different packages for data enrichment.</p>
<h4 id="zoominfo-key-features">Zoominfo Key Features</h4>
<ul>
<li>
<p>Combines firmographics with buyer intent data for advanced targeting.</p>
</li>
<li>
<p>Variety of data packages, catering to almost all data needs.</p>
</li>
<li>
<p>Provides insights into competitors and market positioning.</p>
</li>
</ul>
<h4 id="zoominfo-pros">Zoominfo Pros</h4>
<ul>
<li>
<p>Segmented solutions to compliment data enrichment (Sales, marketing, recruitment)</p>
</li>
<li>
<p>Granular data packages.</p>
</li>
<li>
<p>Vast B2B company database for deep research.</p>
</li>
<li>
<p>Excellent for identifying and targeting high-value prospects.</p>
</li>
<li>
<p>Combines enrichment with advanced analytics like intent signals.</p>
</li>
</ul>
<h4 id="zoominfo-cons">Zoominfo Cons</h4>
<ul>
<li>
<p>Criticized for prioritizing new features at the expense of its core product.</p>
</li>
<li>
<p>Too many data package options bring add-on costs.</p>
</li>
<li>
<p>The platform's complexity may feel overwhelming for casual users.</p>
</li>
</ul>
<h4 id="a-href-httpswwwzoominfocompricing-relnofollowzoominfo-pricinga"><a href="https://www.zoominfo.com/pricing?ref=nubela.co" rel="nofollow">Zoominfo Pricing</a></h4>
<p>Their pricing information is not publicly available, although some sources claim their plan starts from $14,995/ year.</p>
<h3 id="4-a-hrefhttpswwwupleadcom-relnofollow-upleada">4. <a href="https://www.uplead.com/?ref=nubela.co" rel="nofollow"> UpLead</a></h3>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdE6ETV27cDXKPcE2L5woE5zNWbTqcjhAiBzJaF8frWBpAvH2M3S3iaIz09Ebq7rGidcZHBXBibz5s_q-9gLjFnUXPLo4Ib57Gb4PuHEEWd8-mlelqBmFf8XRO6RLDumnN12fp1jg?key=z_8JavWYNdNwa7TM8w7lLEfr" alt="UpLead Landing Page" loading="lazy"></p>
<p>The <a href="https://www.g2.com/products/uplead/reviews?ref=nubela.co" rel="nofollow"> highest rated</a> B2B data provider in G2, UpLead turns your messy list of prospects to sales opportunities. Their huge database helps you find and connect leads, to drive higher conversions.</p>
<p>I have to rate UpLead, not just for its company data enrichment ability, but also for making them actionable. You get a clean prospecting list, which you can then plug into your CRM without duplicating, risking, or losing the customer records.</p>
<h4 id="uplead-key-features">UpLead Key Features</h4>
<ul>
<li>
<p>Large database of over 160 million business contacts in over 200 countries.</p>
</li>
<li>
<p>Advanced filters with 50+ fields.</p>
</li>
<li>
<p>Real-time email verification</p>
</li>
</ul>
<h4 id="uplead-pros">UpLead Pros</h4>
<ul>
<li>
<p>Commendable user-interface; allows very precise searches.</p>
</li>
<li>
<p>Provides detailed contact information (email and phone number).</p>
</li>
<li>
<p>Excellent tracking of lookups.</p>
</li>
</ul>
<h4 id="uplead-cons">UpLead Cons</h4>
<ul>
<li>
<p>Higher data coverage emphasis on the North American region.</p>
</li>
<li>
<p>The number of "valid" leads cuts down the amount of total leads. Even if a large amount of leads are generated, only a small % of them are pursuable "valid" leads.</p>
</li>
</ul>
<h4 id="a-href-httpswwwupleadcompricing-relnofollowuplead-pricinga"><a href="https://www.uplead.com/pricing/?ref=nubela.co" rel="nofollow">UpLead Pricing</a></h4>
<table>
<thead>
<tr>
<th style="text-align:center">Plans</th>
<th style="text-align:center">Details</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:center">Free</td>
<td style="text-align:center">7 day free trial available ✅ <br> 5 credits</td>
</tr>
<tr>
<td style="text-align:center">Basic Paid</td>
<td style="text-align:center">$99/mo</td>
</tr>
<tr>
<td style="text-align:center">High-end Paid</td>
<td style="text-align:center">Customizable usage and pricing</td>
</tr>
</tbody>
</table>
<p><em><strong>Note:</strong> Free trials require credit card information to activate.</em></p>
<h3 id="5-a-hrefhttpswwwadaptio-relnofollowadaptioa">5. <a href="https://www.adapt.io/?ref=nubela.co" rel="nofollow">Adapt.io</a></h3>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXe0P0kfmDi4hYaSVK1gKD5PAJ7bS7F_UMjgSFGon9GvkkKcw16CO5bFJT7pSuiQCh8UIwUJZKUyh7X5zg-lRtuWpKd5FY0tivlw5eSBmsAbFRrWr4rRu4FTEDHHElP-Y12Hq5OLcw?key=z_8JavWYNdNwa7TM8w7lLEfr" alt="Adapt.io Landing Page" loading="lazy"></p>
<p>Adapt.io is a company data enrichment tool that provides actionable data to align with your outreach strategies. You get enriched profiles through attributes like direct dial numbers and department information.</p>
<p>The tool also allows you to enrich your incomplete data from other sources; you can update a CSV file, update your CRM or directly use their API.</p>
<h4 id="adaptio-key-features">Adapt.io Key Features</h4>
<ul>
<li>
<p>Multiple data points including funding information and department wise employee count.</p>
</li>
<li>
<p>Uses APIs to complete missing B2B data points in your CRM.</p>
</li>
<li>
<p>Data coverage of over 3,000+ industries with granular filters. For instance, under Saas, you can search for Fintech SaaS, HRTech SaaS, eCommerce SaaS, and more.</p>
</li>
</ul>
<h4 id="adaptio-pros">Adapt.io Pros</h4>
<ul>
<li>
<p>Affordable pricing</p>
</li>
<li>
<p>Ideal for marketing campaigns that require firmographic segmentation.</p>
</li>
<li>
<p>Supports integration with popular CRM platforms.</p>
</li>
</ul>
<h4 id="adaptio-cons">Adapt.io Cons</h4>
<ul>
<li>
<p>Limited data coverage in <a href="https://www.g2.com/products/adapt-adapt/reviews/adapt-review-6958480?ref=nubela.co" rel="nofollow">European regions</a>.</p>
</li>
<li>
<p>Features focused primarily on marketing, limiting its use in other areas.</p>
</li>
</ul>
<h4 id="a-hrefhttpswwwadaptiopricing-relnofollow-adaptio-pricinga"><a href="https://www.adapt.io/pricing?ref=nubela.co" rel="nofollow"> Adapt.io Pricing</a></h4>
<table>
<thead>
<tr>
<th style="text-align:center">Plans</th>
<th style="text-align:center">Details</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:center">Free</td>
<td style="text-align:center">Free Plan Available ✅<br> 25 Email Credits <br> 25 Enrichment Credits <br> 25 Contacts per day</td>
</tr>
<tr>
<td style="text-align:center">Basic paid</td>
<td style="text-align:center">$49/mo</td>
</tr>
<tr>
<td style="text-align:center">High-end paid</td>
<td style="text-align:center">Custom usage and pricing</td>
</tr>
</tbody>
</table>
<h3 id="6-a-hrefhttpswwwdatanyzecom-relnofollow-datanyzea">6. <a href="https://www.datanyze.com/?ref=nubela.co" rel="nofollow"> Datanyze</a></h3>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdAdCEx5NJJ9KYWBDHU6pj_GYE-fUzGFhnHeRv_TvwRFNpR7Qx2Ovte6ccgsqajbgfq0aQGRZ-lz-e-FkZux-Se5dlZUnhadV79fUJ3wMNUrjr45AN2CX6r0oUB6xWV9OIVe3hBlg?key=z_8JavWYNdNwa7TM8w7lLEfr" alt="Datanyze Landing Page" loading="lazy"></p>
<p>Built for salespeople, Datanyze enriches prospects profiles in real-time, while you're browsing Professional Social Network. It uses web crawlers to identify a company's technology stack and usage, which helps you identify potential customers. How? It scans the code, tags, and metadata on company websites to detect specific software or technologies in use, helping you pinpoint businesses using tools relevant to your offering.</p>
<h4 id="datanyze-key-features">Datanyze Key Features</h4>
<ul>
<li>
<p>Specializes in technographics, providing insights into a company's tech stack.</p>
</li>
<li>
<p>Allows filtering and targeting based on technology usage.</p>
</li>
</ul>
<h4 id="datanyze-pros">Datanyze Pros</h4>
<ul>
<li>
<p>Unparalleled depth in technology usage data.</p>
</li>
<li>
<p>Highly effective for targeting IT and SaaS companies.</p>
</li>
</ul>
<h4 id="datanyze-cons">Datanyze Cons</h4>
<ul>
<li>
<p>Limited enrichment for non-technographic company data.</p>
</li>
<li>
<p>No integrations to update CRMs and other systems.</p>
</li>
<li>
<p>Users have criticized the tool previously for their <a href="https://www.g2.com/products/datanyze/reviews/datanyze-review-598868?ref=nubela.co" rel="nofollow">data inaccuracy</a>.</p>
</li>
</ul>
<h4 id="a-hrefhttpswwwdatanyzecompricing-relnofollow-datanya-pricinga"><a href="https://www.datanyze.com/pricing?ref=nubela.co" rel="nofollow"> Datanya Pricing</a></h4>
<table>
<thead>
<tr>
<th style="text-align:center">Plans</th>
<th style="text-align:center">Details</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:center">Free</td>
<td style="text-align:center">90 Day Free Trial ✅<br> 10 credits per month</td>
</tr>
<tr>
<td style="text-align:center">Basic paid</td>
<td style="text-align:center">$29/mo</td>
</tr>
<tr>
<td style="text-align:center">High-end paid</td>
<td style="text-align:center">$55/mo</td>
</tr>
</tbody>
</table>
<h3 id="7-a-hrefhttpswwwcognismcom-relnofollowcognisma">7. <a href="https://www.cognism.com/?ref=nubela.co" rel="nofollow">Cognism</a></h3>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcGcwycuQmfiwSoZt8YddyuQpQzs5Fw4FlUVFxAFvrnYN94CZLUx5msN6LGDr4D4hgTL13U1hb3tb-D-dO0PtcMMC7n9CZX0Ys1gebJcM6ENBpvwmvR7QqJRAtOgzE-DB8FYGm1MQ?key=z_8JavWYNdNwa7TM8w7lLEfr" alt="Cognism Landing Page" loading="lazy"></p>
<p>Cognism is a popular company data enrichment tool, with a focus on technographic and intent data. Similar to Adapt.io, Cognism helps you fill the gaps in your incomplete prospect lists. The database is updated on a regular basis, so once you connect your CRM to the platform, you can be assured your leads are never stale.</p>
<p>One unique aspect of Cognism is its emphasis on intent-based targeting. You get insights into companies actively researching products or services in your domain. Unlike most tools that prioritize North American markets, Cognism offers robust data coverage across Europe as well.</p>
<h4 id="cognism-key-features">Cognism Key Features</h4>
<ul>
<li>
<p>CCPA and GDPR-compliant.</p>
</li>
<li>
<p>Supports integration with popular platforms like Salesforce, HubSpot, Pipedrive, Microsoft Dynamics, Outreach, and Salesloft.</p>
</li>
<li>
<p>Data entry cleansing to prevent CRM pollution.</p>
</li>
<li>
<p>Automated data validation saves time. Free up sales reps' time by eliminating the need for manual data validation.</p>
</li>
</ul>
<h4 id="cognism-pros">Cognism Pros</h4>
<ul>
<li>
<p>Wider geographical data coverage.</p>
</li>
<li>
<p>Combines firmographic enrichment with intent-based insights.</p>
</li>
<li>
<p>Supports integration with a large pool of tech stack.</p>
</li>
</ul>
<h4 id="cognism-cons">Cognism Cons</h4>
<ul>
<li>
<p>Advanced features can feel complex.</p>
</li>
<li>
<p>Cognism is a self-declared GDPR compliant; they <a href="https://olssonm.medium.com/cognism-the-premium-supplier-of-spam-and-fake-data-a12984c0af0a?ref=nubela.co" rel="nofollow"> lack certification from an accredited body</a>.</p>
</li>
</ul>
<h4 id="a-hrefhttpswwwcognismcompricing-relnofollow-cognism-pricinga"><a href="https://www.cognism.com/pricing?ref=nubela.co" rel="nofollow"> Cognism Pricing</a></h4>
<p>Their pricing information is not public. You will have to contact them to request a quote.</p>
<h3 id="8-a-hrefhttpswwwlead411com-relnofollow-lead411a">8. <a href="https://www.lead411.com/?ref=nubela.co" rel="nofollow"> Lead411</a></h3>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXeIoVMFHmwjaDfcQv3tbz46TKyzS2YdgQJRAJ4ahfMFM7DRgSrS4MG9eJUgUa75-F6wfvZaHNUKWrDYl1SJFhE1xKxsuDYLUaYZSyMdtncK7BwWWK9i-3jsfFJimMFOciDKvQGj1A?key=z_8JavWYNdNwa7TM8w7lLEfr" alt="Lead411 Landing Page" loading="lazy"></p>
<p>My next entry in this list is Lead411, a company data enrichment tool that provides actionable company data enriched with verified intent signals and contact information. I'm not sure of their claim as the "Only Unlimited B2B data provider" but it is an excellent choice if you're looking for a tool that focuses on identifying companies showing signs of readiness to buy.</p>
<p>What sets Lead411 apart is its verified email accuracy. You don't just get enriched company data, but also reliable communication channels to reach decision-makers. Features like trigger events notify you of key changes in a company, such as funding rounds or hiring sprees.</p>
<h4 id="lead411-key-features">Lead411 Key Features</h4>
<ul>
<li>
<p>Trigger events highlight major business activities like funding or expansions.</p>
</li>
<li>
<p>Verified B2B contact email addresses using open email validation.</p>
</li>
<li>
<p>Supports integration with 20+ CRMs.</p>
</li>
</ul>
<h4 id="lead411-pros">Lead411 Pros</h4>
<ul>
<li>Email verification ensures high email accuracy rates and reduced bounce rates for outreach campaigns.</li>
</ul>
<h4 id="lead411-cons">Lead411 Cons</h4>
<ul>
<li>US-centric dataset; insufficient data from other regions like Europe, Asia and Latin America.</li>
</ul>
<h4 id="a-hrefhttpswwwlead411compricing-relnofollowlead411-pricinga"><a href="https://www.lead411.com/pricing/?ref=nubela.co" rel="nofollow">Lead411 Pricing</a></h4>
<table>
<thead>
<tr>
<th style="text-align:center">Plans</th>
<th style="text-align:center">Details</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:center">Free</td>
<td style="text-align:center">7 days free trial ✅<br> 50 Exports</td>
</tr>
<tr>
<td style="text-align:center">Basic paid</td>
<td style="text-align:center">$99/mo</td>
</tr>
<tr>
<td style="text-align:center">High-end paid</td>
<td style="text-align:center">Custom usage and pricing</td>
</tr>
</tbody>
</table>
<h3 id="9-a-hrefhttpswwwapolloio-relnofollowapolloioa">9. <a href="https://www.apollo.io/?ref=nubela.co" rel="nofollow">Apollo.io</a></h3>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfBUldG3MB9Fe22SZ6VuJ317SOKWNCqrx18nDUYy7giedf03KBL9j_TSjU6Y7OzIEK44nV8dwGx3S9mIWsVOMydWYlqThIUdchEIqxBxfM-NA94i68tFyN3w0KxLN_NqeaYIsezkA?key=z_8JavWYNdNwa7TM8w7lLEfr" alt="Apollo.io Landing Page" loading="lazy"></p>
<p>Apollo.io has one sole purpose; boost sales engagement to the max. A company data enrichment tool that refreshes your systems with their contact databases. Since sales is their area of focus, the platform automates emails, marketing and sales processes, sequences touchpoints, and sales call dialing.</p>
<p>Notable features of Apollo.io include their Enrich feature and the Data Health Center. It can identify incomplete data, flag inaccurate data (or out-dated data) and track contacts without email addresses in your CRM.</p>
<h4 id="apolloio-key-features">Apollo.io Key Features</h4>
<ul>
<li>
<p>Enriches company data with over 275 million contacts and detailed firmographics for improved targeting.</p>
</li>
<li>
<p>Data Health Center flags inaccurate data and completes missing data points.</p>
</li>
<li>
<p>Exhaustive US-centric data.</p>
</li>
<li>
<p>Notifies and schedules automatic enrichment on new updates.</p>
</li>
</ul>
<h4 id="apolloio-pros">Apollo.io Pros</h4>
<ul>
<li>
<p>65+ advanced search filters.</p>
</li>
<li>
<p>Serious automation features; Almost every repetitive sales and marketing tasks can be automated.</p>
</li>
<li>
<p>Seamless integration with CRMs like Salesforce for workflow efficiency.</p>
</li>
</ul>
<h4 id="apolloio-cons">Apollo.io Cons</h4>
<ul>
<li>
<p>Limited data outside of the US.</p>
</li>
<li>
<p>Full-on automation poses a risk of losing personal touch.</p>
</li>
<li>
<p>High tier pricing, hard to access for small businesses and startups.</p>
</li>
<li>
<p>Not GDPR compliant.</p>
</li>
</ul>
<h4 id="a-hrefhttpswwwapolloiopricing-relnofollow-apolloio-pricinga"><a href="https://www.apollo.io/pricing?ref=nubela.co" rel="nofollow"> Apollo.io Pricing</a></h4>
<table>
<thead>
<tr>
<th style="text-align:center">Plans</th>
<th style="text-align:center">Details</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:center">Free</td>
<td style="text-align:center">Free Plan Available ✅<br> 1,200 Credits / year</td>
</tr>
<tr>
<td style="text-align:center">Basic Paid</td>
<td style="text-align:center">$59/user/mo</td>
</tr>
<tr>
<td style="text-align:center">High-end Paid</td>
<td style="text-align:center">$149/user/mo</td>
</tr>
</tbody>
</table>
<h3 id="10-a-hrefhttpswwwdata-axlecom-relnofollowdata-axle-formerly-infogroupa">10. <a href="https://www.data-axle.com/?ref=nubela.co" rel="nofollow">Data Axle (Formerly InfoGroup)</a></h3>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdlswGaFxIHwVkafKJjvPl0voB5X4pV7pgiaWdjR61I7Rw1-0-8orSxohLbZMdMpzIWH_6r8DuBkAxUkP2rxP31nJ5z7Nu4p-JqGJbDXuQvFNBlFU78f-N3XaoCR40HShZKTgQD?key=z_8JavWYNdNwa7TM8w7lLEfr" alt="Data Axle Landing Page" loading="lazy"></p>
<p>Infogroup, now rebranded as Data Axle, continues to deliver enriched company data, complemented by robust firmographics and advanced segmentation tools. The depth of Data Axle's data collection is amazing. They use verified public records, business registrations, and direct phone verification to verify their data.</p>
<p>Personally, I have to commend them on their ability to provide hyper-specific segmentation. You can target companies based on criteria like location, revenue, or even niche industries.</p>
<h4 id="data-axle-key-features">Data Axle Key Features</h4>
<ul>
<li>
<p>Processing services like data hygiene, data enhancement and email append ensure data accuracy.</p>
</li>
<li>
<p>Offers reliable data verified through public records and direct calls.</p>
</li>
</ul>
<h4 id="data-axle-pros">Data Axle Pros</h4>
<ul>
<li>
<p>Extremely accurate data due to rigorous verification processes.</p>
</li>
<li>
<p>Ideal for industries requiring compliance and precision, like finance.</p>
</li>
<li>
<p>Supports deep segmentation for precise targeting.</p>
</li>
</ul>
<h4 id="data-axle-cons">Data Axle Cons</h4>
<ul>
<li>
<p>Over-reliance on historical data; data updates may not suit fast-paced industries.</p>
</li>
<li>
<p>High-end pricing.</p>
</li>
</ul>
<h4 id="a-hrefhttpswwwdata-axlecomwhat-we-docredit-solutionsplans-relnofollow-data-axle-pricinga"><a href="https://www.data-axle.com/what-we-do/credit-solutions/plans/?ref=nubela.co" rel="nofollow"> Data Axle Pricing</a></h4>
<table>
<thead>
<tr>
<th style="text-align:center">Plans</th>
<th style="text-align:center">Details</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:center">Free</td>
<td style="text-align:center">30 day free trail  ✅</td>
</tr>
<tr>
<td style="text-align:center">Pay-as-you-go</td>
<td style="text-align:center">$17.95 per credit report</td>
</tr>
<tr>
<td style="text-align:center">Basic Paid (Monthly)</td>
<td style="text-align:center">$195/mo</td>
</tr>
<tr>
<td style="text-align:center">Basic Paid (Annual)</td>
<td style="text-align:center">$179/mo</td>
</tr>
</tbody>
</table>
<h3 id="11-a-hrefhttpsbusinessprofessionalsocialnetworkcomsales-solutionssales-navigator-relnofollowprofessional-social-network-sales-navigatora">11. <a href="https://business.professionalsocialnetwork.com/sales-solutions/sales-navigator?ref=nubela.co" rel="nofollow">Professional Social Network Sales Navigator</a></h3>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfFp2D2qk_nora_-bPFsiXm6r5pkxFpwxnYP9_QFJ92nnrungEU7IYGob4vxt05xvJwR21HgA-3wbQwRvJ-ujL5X1UdERUlME262H43uCVfXf-2JTfP54xVkkcEZb2capksml0ckA?key=z_8JavWYNdNwa7TM8w7lLEfr" alt="Professional Social Network Sales Navigator Landing Page" loading="lazy"></p>
<p>Professional Social Network has their very own tool that grants access to Professional Social Network's network and professional data. Tapping into that data means you get valuable insights for sales intelligence, lead generation, and market research.</p>
<p>With Professional Social Network Sales Navigator API, you can create a custom dashboard to keep an eye on prospects. The dashboard will automatically update whenever a company updates their profile, so you're always in the loop.</p>
<p>[Accessing Professional Social Network Sales Navigator](<a href="https://nubela.co/blog/access-Professional">https://nubela.co/blog/access-Professional</a> Social Network-sales-navigator-api-guide/) is not simple. You have to file an application for access with details on how you're going to use the data. The approval process can take several weeks, and there is no guarantee you will be approved.</p>
<h4 id="professional-social-network-sales-navigator-key-features">Professional Social Network Sales Navigator Key Features</h4>
<ul>
<li>
<p>Lead Recommendation suggests potential decision-makers within your target companies, while Saved Leads and Alerts tracks decision-makers' Professional Social Network activities.</p>
</li>
<li>
<p>InMail Messaging enables direct outreach to decision-makers, even if they're not in your immediate Professional Social Network network.</p>
</li>
</ul>
<h4 id="professional-social-network-sales-navigator-pros">Professional Social Network Sales Navigator Pros</h4>
<ul>
<li>
<p>Allows fetching real-time data and enrich your platform.</p>
</li>
<li>
<p>Supports data syncing of newly fetched data with your existing customer information.</p>
</li>
<li>
<p>Advanced search options with numerous field filters.</p>
</li>
</ul>
<h4 id="professional-social-network-sales-navigator-cons">Professional Social Network Sales Navigator Cons</h4>
<ul>
<li>
<p>Lengthy approval process, hard to get access.</p>
</li>
<li>
<p>Harsh rate limits of 1,000 profile exports per day.</p>
</li>
<li>
<p>Expensive venture, need an active subscription to access.</p>
</li>
</ul>
<h4 id="a-hrefhttpsbusinessprofessionalsocialnetworkcomsales-solutionscompare-plans-relnofollowprofessional-social-network-sales-navigator-pricinga"><a href="https://business.professionalsocialnetwork.com/sales-solutions/compare-plans?ref=nubela.co" rel="nofollow">Professional Social Network Sales Navigator Pricing</a></h4>
<p>Pricing for the API is not publicly disclosed and requires direct negotiation with Professional Social Network, depending on the intended use case and volume of data access. The most common pricing reference you can get online is $99/person/mo.</p>
<h3 id="12-a-href-httpswwwleadspacecom-relnofollowleadspacea">12. <a href="https://www.leadspace.com/?ref=nubela.co" rel="nofollow">Leadspace</a></h3>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXesqNeEnTRS_aqDEDp0XtdFO9-F0olGU6tsr45U4fitwBivVxrIhFREyJZgB25r6BTojA5npnOoCfzDoClhgo6A3mWJUsO9F7Dh4j7wS4pp6PA9B5FuxNS_ySKraFmFYGzcT0tT4w?key=z_8JavWYNdNwa7TM8w7lLEfr" alt="Leadspace Landing Page" loading="lazy"></p>
<p>Unique to most tools in the list, Leadspace is not a database, but a real-time lead research engine that provides targeted lead data on-demand. Its AI-driven audience modeling goes beyond basic enrichment by helping you create detailed ideal customer profiles (ICPs). This allows you to target companies that are the best fit for your goals with greater precision.</p>
<p>Additionally, Leadspace supports integration with CRMs and marketing platforms like Salesforce, HubSpot, and Marketo.</p>
<h4 id="leadspace-key-features">Leadspace Key Features</h4>
<ul>
<li>
<p>Intent Scoring search for solutions in your industry, and help prioritize leads.</p>
</li>
<li>
<p>Data Matching and Deduplication clears your CRM of duplicate or outdated entries.</p>
</li>
<li>
<p>Offers AI-powered audience modeling for better ICP creation and targeting.</p>
</li>
<li>
<p>Provides segmentation tools to refine company data for specific campaigns.</p>
</li>
</ul>
<h4 id="leadspace-pros">Leadspace Pros</h4>
<ul>
<li>
<p>AI-driven insights help target companies more effectively.</p>
</li>
<li>
<p>Strong focus on creating precise audience profiles.</p>
</li>
</ul>
<h4 id="leadspace-cons">Leadspace Cons</h4>
<ul>
<li>
<p>Advanced features may be overwhelming for smaller teams.</p>
</li>
<li>
<p>High-end price points.</p>
</li>
</ul>
<h4 id="leadspace-pricing">Leadspace Pricing</h4>
<p>Their Pricing information is not public. You will have to contact their sales team to get a quote.</p>
<h3 id="13-a-hrefhttpscorpowlercom-relnofollowowlera">13. <a href="https://corp.owler.com/?ref=nubela.co" rel="nofollow">Owler</a></h3>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdtWo9BxXe_U0aJe7l5V73j1UFqu4Ost4vfu4pOVGb4FuIScZ7a7R25p93CwmWT6hy3R6OXII-EfrtPAgOKcvTnuOizPFr8QWjWNYJYJ-gjDRpTIh-gGIoeXDJAsa-tSwOE-i2s?key=z_8JavWYNdNwa7TM8w7lLEfr" alt="Owler Landing Page" loading="lazy"></p>
<p>One of the largest crowdsourced company data enrichment providers, Owler, pulls insights from its active user community of over 5 million professionals, giving it a fresh, up-to-date perspective on smaller or emerging companies that might be underrepresented in other databases. The data is later verified by Owler's data science team, so you can be assured they're accurate.</p>
<p>Owler is a great choice if you need to understand not just a company but its position in the market, including competitors, estimated revenue, and leadership details. This data is aggregated from its own analytics, user contributions, and public sources, so you get an idea of how a company fits into its industry landscape.</p>
<h4 id="owler-key-features">Owler Key Features</h4>
<ul>
<li>
<p>Daily Snapshot email allows users to receive daily updates on companies of interest.</p>
</li>
<li>
<p>Crowdsourced data from over 5 million business professionals.</p>
</li>
<li>
<p>Provides competitive analysis for understanding market positioning.</p>
</li>
<li>
<p>Includes notification features for tracking changes in key companies.</p>
</li>
<li>
<p>Supports integration with popular tools like Hubspot, Salesforce, Slack and Microsoft Teams.</p>
</li>
</ul>
<h4 id="owler-pros">Owler Pros</h4>
<ul>
<li>
<p>First-hand data, crowdsourced by professionals, gives real-time updates.</p>
</li>
<li>
<p>Excellent for tracking competitors and market trends.</p>
</li>
</ul>
<h4 id="owler-cons">Owler Cons</h4>
<ul>
<li>
<p>Smaller database size of only 15 million profiles in comparison to other tools.</p>
</li>
<li>
<p>Crowdsourced data can be less reliable even with verification by the data science team.</p>
</li>
</ul>
<h4 id="a-hrefhttpswwwowlercomcheckoutowlerproutmcampaignpricingpageutmmediumtopnavutmsourcecms-relnofollowowler-pricinga"><a href="https://www.owler.com/checkout/owlerpro?utm_campaign=Pricing_Page&utm_medium=topnav&utm_source=cms" rel="nofollow">Owler Pricing</a></h4>
<table>
<thead>
<tr>
<th style="text-align:center">Plans</th>
<th style="text-align:center">Details</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:center">Free</td>
<td style="text-align:center">Free Plan Available ✅<br> Follow up to 5 companies <br> Access 1 company profile per month</td>
</tr>
<tr>
<td style="text-align:center">Basic Paid</td>
<td style="text-align:center">$39/mo</td>
</tr>
<tr>
<td style="text-align:center">High-end Paid</td>
<td style="text-align:center">Custom usage and pricing</td>
</tr>
</tbody>
</table>
<h2 id="how-to-find-the-perfect-company-data-enrichment-tool">How to Find The Perfect Company Data Enrichment Tool</h2>
<p>Now that you know the top company data enrichment tools going into 2025, it's time to pick one. But how do you find the one that's best suited for your needs? Let's find out.</p>
<h3 id="1-data-needs-evaluation">1.  Data Needs Evaluation</h3>
<p>Ask yourself these specific data related questions:</p>
<ul>
<li><strong>What are the important data points and geographical areas you are focused on?</strong></li>
</ul>
<p>Not all company data enrichment providers are made equal. Some provide more data points than others. Circle out your 'must-have' data points.</p>
<p>Similarly, most providers give higher emphasis towards the North American region, as they have more customers there. Be on the lookout for what geographical data you want and find a provider that covers that area.</p>
<p>Proxycrul and Adapt.io dominate on data points variety, while Cognism offers a wider geographical coverage.</p>
<ul>
<li><strong>What is your relevant industry?</strong></li>
</ul>
<p>Do you operate in a common industry or a niche? Go for a provider that is comprehensive with their datasets, and doesn't leave out your niche industry.</p>
<p>Adapt.io provides niche segmentation, while Owler might have newer, underrepresented data in other databases.</p>
<ul>
<li><strong>Does the data provider compliment your outreach methods?</strong></li>
</ul>
<p>If the outreach norm in your industry is through email, then search for a provider that specializes in email enrichment. If you operate through different channels, go for a high-end provider that supports all your channels.</p>
<p>Proxycurl' API-first design, made for developers, allows you to integrate enrichment capabilities into your existing workflows, applications, or platforms.</p>
<ul>
<li><strong>Are you a high-volume user?</strong></li>
</ul>
<p>Often, rate limits are imposed on enrichment platforms to push users towards subscribing for a better, expensive plan. Choose a company data enrichment provider that accommodates your volume requirements without coercing you to pay more.</p>
<p>Proxycurl's generous rate limit of 432,000 requests per day is perfect for high-volume.</p>
<ul>
<li><strong>What current CRM and other integrations are you currently working with?</strong></li>
</ul>
<p>Learn what integrations the platform supports before you sign up for a provider. You don't want two incompatible platforms and double your workload.</p>
<p>While most company data enrichment tools on this list integrate with popular CRM platforms, your tech stack as a whole might be an issue.</p>
<ul>
<li><strong>Any add-ons you wish from your provider?</strong></li>
</ul>
<p>Besides the primary data enrichment function, most providers give some extras to differ themselves from the competition. Browse tools offering that something 'extra' which would benefit you the most.</p>
<h3 id="2-data-accuracy">2. Data Accuracy</h3>
<p>The worst deal you could get out of your data enrichment provider is inaccurate data. From out-dated data to wrongly verified contact information, there are many things that can be wrong with the data you receive.</p>
<p>Fact-check a provider's data quality and accuracy claims through customer review sites. Better yet, go with a provider that has a <a href="https://nubela.co/blog/how-fresh-are-profiles-returned-by-proxycurl-api/">data freshness guarantee</a>.</p>
<h3 id="3-budget">3. Budget</h3>
<p>Even the perfect company data enrichment provider is just sour grapes if the cost is outlandish. There are a lot of options and pricing tiers in the market catering to varying budgets, so don't worry if you have a limited budget.</p>
<p>At $49/mo, Proxycurl and Adapt.io are the most affordable company data enrichment tools in the list, just behind Owler at $39. But Owler's limited database of only 15 million contacts might make you reconsider.</p>
<h3 id="4-legal-compliance">4. Legal Compliance</h3>
<p>Consider going with a provider that sources data legally and ethically. GDPR and CCPA compliance are the norm in the data industry.</p>
<p>Almost all company data enrichment tool providers in my list are compliant to GDPR and CCPA regulations. However, be sure to do your due diligence for complete peace of mind.</p>
<h3 id="5-customer-support">5. Customer Support</h3>
<p>Isn't it great when you reach out to customer support and they get back to you two days later! Absolutely not. Some promise 24/7 customer support but all you get is chatbots in return. Look for a provider that has a human listening to your concerns at the other end and not AI.</p>
<p>There are no chatbots within Proxycurl. Your concerns are dealt with directly by an expert on the other end.</p>
<h2 id="choose-the-best-choose-proxycurl">Choose the Best. Choose Proxycurl.</h2>
<p>Proxycurl stands at the top of this list for a reason. Proxycurl's database, LinkDB, boasts the largest database on the list, that updates in real-time, all the while matching Adapt.io's affordable pricing and Cognism's global reach.</p>
<p>You get access to rich B2B data from more data sources than just Professional Social Network. We always link it back to a Professional Social Network identifier, so it may seem like our API only relies on Professional Social Network, but it doesn't. Get accurate, real-time insights that help you make smarter decisions and drive your business forward.</p>
<p>Surround yourself with the best. You deserve nothing less. Choose <a href="https://nubela.co/proxycurl/auth/register?ref=nubela.co">Proxycurl</a> and get 20 free credits upon signup.</p>
<h2 id="faqs">FAQs</h2>
<div class="kg-card kg-toggle-card" data-kg-toggle-state="close">
            <div class="kg-toggle-heading">
                <h4 class="kg-toggle-heading-text"><span style="white-space: pre-wrap;">How to enrich company data?</span></h4>
                <button class="kg-toggle-card-icon" aria-label="Expand toggle to read content">
                    <svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"></path>
                    </svg>
                </button>
            </div>
            <div class="kg-toggle-content"><p><span style="white-space: pre-wrap;">To enrich company data, choose a reliable company data enrichment tool, integrate it with your CRM or platform, and specify the data you need. Use the tool to update your records in real-time or through batch processing, ensuring your data stays accurate and actionable.</span></p></div>
        </div><div class="kg-card kg-toggle-card" data-kg-toggle-state="close">
            <div class="kg-toggle-heading">
                <h4 class="kg-toggle-heading-text"><span style="white-space: pre-wrap;">What is an example of data enrichment?</span></h4>
                <button class="kg-toggle-card-icon" aria-label="Expand toggle to read content">
                    <svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"></path>
                    </svg>
                </button>
            </div>
            <div class="kg-toggle-content"><p><span style="white-space: pre-wrap;">Data enrichment entails combining multiple internal data sources. For example, a sales team might enrich their CRM records with firmographic data like company size, revenue, and industry to prioritize leads based on potential value and tailor their outreach strategies.</span></p></div>
        </div><div class="kg-card kg-toggle-card" data-kg-toggle-state="close">
            <div class="kg-toggle-heading">
                <h4 class="kg-toggle-heading-text"><span style="white-space: pre-wrap;">How does company data enrichment differ from personal data enrichment?</span></h4>
                <button class="kg-toggle-card-icon" aria-label="Expand toggle to read content">
                    <svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"></path>
                    </svg>
                </button>
            </div>
            <div class="kg-toggle-content"><p><span style="white-space: pre-wrap;">Company data enrichment focuses on firm-level details like industry, revenue, and technology use; personal data enrichment enhances individual profiles, providing insights such as job titles, skills, and contact information.</span></p></div>
        </div><div class="kg-card kg-toggle-card" data-kg-toggle-state="close">
            <div class="kg-toggle-heading">
                <h4 class="kg-toggle-heading-text"><span style="white-space: pre-wrap;">Can small businesses benefit from company data enrichment tools?</span></h4>
                <button class="kg-toggle-card-icon" aria-label="Expand toggle to read content">
                    <svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"></path>
                    </svg>
                </button>
            </div>
            <div class="kg-toggle-content"><p><span style="white-space: pre-wrap;">Absolutely! Small businesses can use data enrichment to refine their marketing efforts, target the right clients, and compete more effectively with larger players.</span></p></div>
        </div><div class="kg-card kg-toggle-card" data-kg-toggle-state="close">
            <div class="kg-toggle-heading">
                <h4 class="kg-toggle-heading-text"><span style="white-space: pre-wrap;">What’s the difference between real-time and batch data enrichment?</span></h4>
                <button class="kg-toggle-card-icon" aria-label="Expand toggle to read content">
                    <svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"></path>
                    </svg>
                </button>
            </div>
            <div class="kg-toggle-content"><p><span style="white-space: pre-wrap;">Real-time enrichment updates records instantly, ideal for dynamic workflows. Batch enrichment, on the other hand, processes large datasets periodically for mass updates.</span></p></div>
        </div> ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ Using Crunchbase API: A Guide on Everything You Need to Know ]]></title>
        <description><![CDATA[ Find everything you need to know about Crunchbase API, with a working demo and code snippet. Get access to all the Crunchbase data you want. ]]></description>
        <link>https://nubela.co/blog/crunchbase-api-guide/</link>
        <guid isPermaLink="false">673ff2731cb59d0001b17e75</guid>
        <category><![CDATA[ crunchbase ]]></category>
        <dc:creator><![CDATA[ Sese | Technical Writer ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/10/IMG_4677.jpeg"/>
        <pubDate>Wed, 18 Dec 2024 13:14:00 +0800</pubDate>
        <media:content url="" medium="image"/>
        <content:encoded><![CDATA[ <p>Given <a href="https://www.crunchbase.com/?ref=nubela.co" rel="nofollow">Crunchbase's</a> plethora of company information, it would be a waste not to make the most of it. Thankfully, Crunchbase has its own API that allows you to access and integrate the website's data into your applications; everything from company profiles, funding histories, market trends, and competitive landscapes.</p>
<p>But how do you access it? What does it cost? Is it worth it?</p><p>Welcome to the only Crunchbase API guide you will ever need. In this article, I will explore all Crunchbase API packages, discuss their features, show you a demo on how to access those APIs, and the costs associated with each. We'll end on a high note, by comparing Crunchbase API with an alternative solution, <a href="https://nubela.co/proxycurl/?ref=nubela.co" rel="noreferrer"><strong>Proxycurl</strong></a>, a paid API, that enriches B2B data from trusted sources like <a href="https://nubela.co/blog/what-is-the-difference-between-Professional%20Social%20Network-public-profiles-vs-Professional%20Social%20Network-private-profiles-with-python-code-samples/">Professional Social Network</a> and <a href="https://nubela.co/blog/build-a-crunchbase-scraper/">Crunchbase</a>.</p><p>Sounds fair? Let's begin. </p><h2 id="crunchbase-api-packages">Crunchbase API Packages</h2><p>Crunchbase offers tailored API packages; four tiers of data access in exact. You have the freedom to choose between these packages depending on your application or use case.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/12/Crunchbase_Packages.png" class="kg-image" alt="Infographic on Crunchbase API packages" loading="lazy" width="1040" height="1101"><figcaption><span style="white-space: pre-wrap;">Crunchabse API Packages</span></figcaption></figure><h3 id="tier-1-firmographics">Tier 1: Firmographics </h3><p>Firmographic data <strong><em>outlines business characteristics</em></strong>, similar to how demographics outline the characteristics of individuals. The contents include industry type, company size, revenue, location, organizational structure and more. The purpose is to give you a full picture of a company’s role and position in the market.</p><p><strong>Key Features</strong></p><ul><li>Company name, type, and legal status.</li><li>Industry classification and organizational structure.</li><li>Revenue and employee size.</li><li>Geographic location and operational reach.</li></ul><p><strong>Ideal For</strong></p><ul><li><strong>Sales Teams</strong>: Discover qualified leads based on industry, size, and geography to streamline outreach.</li><li><strong>Market Analysts</strong>: Enrich market research with detailed company profiles for competitive analysis.</li><li><strong>Risk Management Team</strong>: Mitigate partnership risks by verifying business legitimacy and foundational data.</li><li><strong>Business Developers</strong>: Evaluate competitors or partners with comprehensive organizational insights.</li></ul><h3 id="tier-2-basic-financials">Tier 2: Basic Financials</h3><p>Peek into company with the Basic Financials Package. A brief overview of financial metrics that <strong><em>look into a company's financial health</em></strong> and assist you in making informed investment decisions. </p><p><strong>Features</strong></p><ul><li>Basic financial metrics overview.</li><li>Investment insights, including funding rounds and investor profiles.</li></ul><p><strong>Perfect For</strong></p><ul><li><strong>Financial Analysts:</strong> Develop in-depth reports and accurate financial forecasts.</li><li><strong>Investors:</strong> Screen and evaluate potential investment opportunities with comprehensive data on funding trends.</li></ul><h3 id="tier-3-advanced-financials">Tier 3: Advanced Financials</h3><p>Perfect for those needing a <strong><em>granular analysis of detailed funding histories and complex financial health indicators</em></strong>. With details on funding histories, complex financial trends, and key financial metrics, it supports strategic decisions at the highest levels.</p><p><strong>Features</strong></p><ul><li>Exhaustive financial metrics, including funding histories and long-term trends.</li><li>Advanced investment analysis tools for in-depth forecasting.</li></ul><p><strong>Perfect For</strong></p><ul><li><strong>Market Analysts:</strong> Conduct market and competitor evaluation for strategic planning or mergers, acquisitions and major investments.</li></ul><h3 id="tier-4-predictions-and-insights">Tier 4: Predictions and Insights</h3><p>Complete Crunchbase unlocked! The Predictions and Insights package is a game-changer for businesses looking to stay ahead of the curve. You get <strong><em>real-time signals on critical events</em></strong> like layoffs, executive changes, or growth trends, for accurate decision-making.</p><p><strong>Features</strong></p><ul><li>Advanced insights and real-time signals, including funding predictions and news analytics.</li><li>Predictive analytics for employee changes, product launches, and company performance.</li></ul><p><strong>Use Cases</strong></p><ul><li><strong>Investors:</strong> Venture capitalists and private equity firms use predictive data to identify promising startups and emerging companies.</li><li><strong>Sales Teams:</strong> Optimize outreach by targeting high-potential leads and businesses poised for growth.</li><li><strong>Recruiters:</strong> Spot scaling companies that are expanding and likely to hire executive talent.</li></ul><h2 id="how-to-access-crunchbase-apis">How to Access Crunchbase APIs</h2><p>The** <strong>Basic API</strong>** will give you access to firmographic data points like organization description, address, etc. You get access as soon as you register an account with Crunchbase through <a href="https://www.crunchbase.com/account?ref=nubela.co" rel="nofollow">account settings</a>.</p>
<p>Unregistered users can <a href="https://www.crunchbase.com/register?ref=nubela.co" rel="nofollow">sign up for Crunchbase basic access</a>. You get immediate access to an API key and can get started with exploring Crunchbase's Basic data as soon as the API key is activated, which typically takes 15 minutes to an hour.</p>
<figure class="kg-card kg-image-card"><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdGjXbTxA92VboFAMAM6uHPgycjvQXd6131VnOTojHQ9b618v4ZrNLWiuUIiHzIDSF2j9aWXd8-RCIj1FTd24Yh463lgsikOwrMHV9JINhBjddmvKCuusVuFj1hk_to-qMifeJVkRyzqtlPmNaD-Zj-Qds5?key=5Jqyq2FaP7YWcpbf_tFdWQ" class="kg-image" alt="Getting access to Crunchbase API and the API key" loading="lazy" width="1281" height="609"></figure><p>Crunchbase also has a robust API documentation at <a href="https://data.crunchbase.com/docs/crunchbase-basic-getting-started?ref=nubela.co" rel="nofollow">Crunchbase Basic docs</a> if you need assistance. In case you are still not sure on the data fields you can access with the Basic Plan, check out <a href="https://data.crunchbase.com/docs/organizationsummary?ref=nubela.co" rel="nofollow">Organization Attributes for Basic API</a> for further clarification.</p>
<p>The <strong><strong>Crunchbase Full API</strong></strong> (currently v4.0) provides exclusive Crunchbase data, such as advanced firmographics, advanced financials, company insights, and more. For full API access, you will have to contact Crunchbase's sales team.</p>
<h3 id="demo-using-entity-lookup-api">Demo Using Entity Lookup API</h3><p>The Crunchbase API uses token-based authentication, which means that developers must pass their individual API Key parameter with every request.</p><p>The Entity Lookup API endpoints are provided so you can retrieve data - data fields and relationships from a specific entity. Crunchbase provides Entity Lookup endpoints for organizations, people, funding rounds, and acquisitions.</p><p>To make a request using the Entity Lookup APIs, you must provide the following:</p><ul><li>a user key</li><li>an {entity_id} - which can either be the UUID or the permalink (e.g., "tesla-motors") of the entity</li></ul><p>You can also ask for additional data fields and relationships in the response by adding the <code>field_ids</code> and/or <code>card_ids</code> parameters to the request. Here is an example below:</p>
<pre><code class="language-python">GET https://api.crunchbase.com/v4/data/entities/organizations/tesla-motors?
card_ids=founders, raised_funding_rounds&amp;field_ids=categories, short_description, rank_org_company, founded
_on,website, facebook, created_at&amp;user_key=INSERT_KEY_HERE
</code></pre>
<h3 id="example-entity-lookup-request"><strong>Example Entity Lookup Request</strong></h3><p>Entity Lookup API is one of the APIs Crunchbase provides where you can pull up information from a specific entity. </p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdkF1gxDGhsHqYZj0SpjegAtmEEZAMEcfX7YjzljK5d26KevLDwh8fsSEBKLe7Y8EwIz2iXVe4OU7gdKx3Ey9ciJGG8MgsDywfao97nvD_tMI2mBA-m2uzqyNdi8mWd5cCgA-RDYkauGgLwdFKPu_axqIPh?key=5Jqyq2FaP7YWcpbf_tFdWQ" class="kg-image" alt="Entity Lookup Request using Crunchbase API " loading="lazy" width="988" height="728"><figcaption><span style="white-space: pre-wrap;">Entity Lookup Request using Crunchbase API </span></figcaption></figure><p>Here's an example request using <a href="https://data.crunchbase.com/docs/using-entity-lookup-apis?ref=nubela.co" rel="nofollow">Entity Lookup API</a>. Let's try and pull company information of Tesla Motors.</p>
<pre><code class="language-python">GET https://api.crunchbase.com/v4/data/entities/organizations/tesla-motors?card_ids=founders,raised_funding_rounds&amp;field_ids=categories,short_description,rank_org_company,founded_on,website,facebook,created_at&amp;user_key=INSERT_KEY_HERE</code></pre><p>And here's the response it generates: </p><pre><code class="language-python">{
&nbsp;&nbsp;&nbsp;&nbsp;"properties": {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"identifier": {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"uuid": "a367b036-5952-5435-7541-ad7ee8869e24",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"value": "Tesla",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"image_id": "dj8rndg9wkqkpgvplvzi",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"permalink": "tesla-motors",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"entity_def_id": "organization"
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"short_description": "Tesla Motors is an electric vehicle and clean energy company that provides electric cars, solar, and renewable energy solutions.",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"facebook": {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"value": "https://www.facebook.com/TeslaMotorsCorp"
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"created_at": "2007-12-24T13:25:13Z",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"rank_org_company": 2978
&nbsp;&nbsp;&nbsp;&nbsp;}
}
</code></pre><p>Crunchbase documentation is pretty solid. If you find yourself in a tight corners, you can check out Crunchbase documentation at <a href="https://data.crunchbase.com/docs/using-the-api?ref=nubela.co" rel="nofollow">Using the API</a> tab for your assistance.</p>
<h2 id="full-crunchbase-plans-and-api-options">Full Crunchbase Plans and API Options </h2><p>Crunchbase has several subscription and API access plans, so it can get a bit confusing. Let me break it down in the simplest way possible. </p><h3 id="subscription-plans"><strong>Subscription Plans</strong>: </h3><p>The overall access tiers for using Crunchbase’s services. This is what you'll find on their pricing page. Each tier unlocks different levels of data and features:</p><ol><ul><li><strong>Pro Plan</strong>: Leverage private company data and go places. </li><li><strong>Business Plan</strong>: For the team; enable scalable integrations and exports for your team.</li><li><strong>API Plan</strong>: Designed for larger teams or companies with the most comprehensive access to data, bulk exports, and API integration. Within the API plan, Crunchbase offers specific data packages that cater to different needs <a href="https://nubela.co/blog/crunchbase-api-guide" rel="noreferrer">(what I talked about earlier)</a>:</li></ul></ol><ul><ul><ul><ul><ul><li><strong>Firmographics</strong>: Company data including size, location, and industry.</li><li><strong>Basic Financials</strong>: Surficial financial data like funding rounds.</li><li><strong>Advanced Financials</strong>: Detailed financial data, including revenue estimates and valuation.</li><li><strong>Predictions and Insights</strong>: The most comprehensive package, with advanced insights and real-time signals on companies.</li></ul></ul></ul></ul></ul><h3 id="api-access"><strong>API Access</strong>: </h3><p>API access tiers allows you to integrate Crunchbase data into your systems based on your requirements. There are two main API packages:</p>
<ol>
<li><strong>Basic API:</strong> Limited access to datasets and usage quotas.</li>
<li><strong>Full API:</strong> Full access to Crunchbase's datasets, granular information and higher usage limits. See <a href="https://support.crunchbase.com/hc/en-us/articles/30598109284883-What-is-the-difference-between-the-Crunchbase-Basic-API-vs-Full-API?ref=nubela.co" rel="nofollow">What is the difference between the Crunchbase Basic API vs Full API?</a></li>
</ol>
<p>Your <strong>Subscription Plan</strong> (Pro, Business or API) determines your level of access to Crunchbase’s data. You can select between the <strong>Basic or Full API </strong>to further enhance that access depending on your use case. Furthermore, you can focus on <strong>specific types of data </strong>under the API Plan through the Firmographics, Basic Financials, Advanced Financials, or Predictions and Insights data packages.</p><h2 id="a-hrefhttpswwwcrunchbasecombuyselect-product-relnofollowcrunchbase-pricinga"><a href="https://www.crunchbase.com/buy/select-product?ref=nubela.co" rel="nofollow">Crunchbase Pricing</a></h2>
<p>Here's an overview of the plans and pricing Crunchbase offers, with their subsequent features.</p><table>
<thead>
<tr>
<th>Subscription Plan</th>
<th>Price</th>
<th>Features</th>
</tr>
</thead>
<tbody>
<tr>
<td>Pro Plan</td>
<td><strong>$49</strong>/mo billed annually<br>OR<br><strong>$99</strong>/mo billed monthly</td>
<td>4M+ private companies with all company and investor profile data, including growth signals and AI-powered insights</td>
</tr>
<tr>
<td>Business Plan</td>
<td>Starting at <strong>$199</strong>/mo billed annually</td>
<td>• Everything in Pro, plus 5k exports per month and contact data<br> • CRM integrations, auto-enrichment add-ons, customized support from the Customer Success Team</td>
</tr>
<tr>
<td>API Plan</td>
<td>Custom usage and pricing</td>
<td>• Proprietary company intelligence<br>• Live company data at scale, with 200 calls/min<br> • Predictions and insights, with bulk export API data via CSV</td>
</tr>
</tbody>
</table>
<h2 id="crunchbase-api-limitations">Crunchbase API Limitations </h2><p>Crunchbase API is not without its flaws. Keep in mind their product limitations are your usage limitations so, think of this like a heads up. </p><ol><li><strong>Rate Limits</strong>: Crunchbase has a rate limit of <strong>200 calls per minute</strong> for their API endpoints. They claim it as a wall to protect the platform and ensure consistent reliability and performance. It could be limiting for corporations that work with bulk data. </li><li><strong>Export Limits</strong>: If you're subscribed to Crunchbase Pro, you can see full search results, but cannot export them. Crunchbase Business subscribers are also limited to 5K rows of exports per month.</li><li><strong>Inaccurate Information:</strong> Crunchbase relies on self-reported information from various sources, which may not always be accurate or up-to-date. Additionally, information is volatile in the business world, making it difficult for any database to maintain a completely accurate record.</li><li><strong>Costly at Scale</strong>: While basic access is free, higher usage or premium features come with significant costs, making it hard for startups and small businesses to consider Crunchbase API as an option. </li><li><strong>Attribution Requirements</strong>: Usually, people pay premium money to get rid of an annoying watermark. However, with Crunchbase, the licensees must attribute content sourced when made available or visible to any third party. Attribution must state “Powered by Crunchbase” and be accompanied by a hyperlink to Crunchbase. </li></ol><p>If your business depends on accurate and reliable data, you should not pull any stops while choosing your provider. With so many limitations, it really makes you reconsider your standing on Crunchbase API. But you're not out of options just yet. </p><h2 id="enter-proxycurl">Enter Proxycurl </h2><p><a href="https://proxycurl.com/?ref=nubela.co" rel="noreferrer">Proxycurl</a> is a paid API that just works! We provide enriched people and company data for professional insights. Real-time scraping to <a href="https://nubela.co/blog/historical-employee-growth-with-employee-count-endpoint/" rel="noreferrer">historical data</a>, we've got them all.  But the biggest reason you'd want to use Proxycurl is because it's an incredibly versatile API that's designed to be built into your existing systems and workflow. </p><p>I do admit that Proxycurl is a platform designed for developers. But you don't need rocket science or expert technical proficiency to figure out how it works. In fact, let me show you how easy it is to pull a freshly scraped and accurate company data using Company Profile Endpoint. </p><h3 id="demo-using-proxycurl-company-profile-endpoint">Demo Using Proxycurl <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#company-api-company-profile-endpoint" rel="noreferrer">Company Profile Endpoint</a></h3><p>Start off by creating a free account with <a href="https://nubela.co/proxycurl/auth/register?ref=nubela.co">Proxycurl</a>. You get free credits upon signup so don't worry about paying right away. Head on to your <a href="https://nubela.co/proxycurl/auth/login?ref=nubela.co">dashboard</a> and get a unique API key. You need this key for authentication.</p>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXd3b18zJccQFaLJc0GDkxxhqPq6uH5LDqDfWmubUN3cSkE3Ft5RG4EtDpbTqtK7744M1lqhCecoydCfqBZsApY-b8C1Q9kYAl_5iySIylWLxIO-R86vQmojC8l2SdsmWNN7OzcEag?key=5Jqyq2FaP7YWcpbf_tFdWQ" alt="Proxycurl User Dashboard" loading="lazy"></p>
<p>Using the Company Profile Endpoint, let’s try and pull up information about Tesla Motors like we did with Crunchbase API.</p>
<p>The Proxycurl Company Profile API endpoint is:</p>
<pre><code class="language-python">https://api.proxycurl.com/v2/company/profile
</code></pre>
<p>Your API should be included as a header:<br>
<code>Authorization: Bearer YOUR_API_KEY</code></p>
<p>To search for Tesla Motors, the parameter url can be used to pass Tesla's Professional Social Network URL:</p>
<pre><code class="language-python">{
  "url": "https://www.professionalsocialnetwork.com/company/tesla-motors/"
}
</code></pre>
<h3 id="example-request-and-response">Example Request and Response</h3>
<p>Here's what your full request looks like in Python.</p>
<pre><code class="language-python">import requests

# API Key and Endpoint
API_KEY = "YOUR_API_KEY"
URL = "https://api.proxycurl.com/v2/company"

# Request payload
payload = {
    "url": "https://www.professionalsocialnetwork.com/company/tesla-motors/"
}

headers = {
    "Authorization": f"Bearer {API_KEY}"
}

# Making the API call
response = requests.get(URL, headers=headers, params=payload)

# Handling the response
if response.status_code == 200:
    data = response.json()
    print("Company Name:", data.get("name"))
    print("Website:", data.get("website"))
    print("Headquarters:", data.get("headquarters_location"))
    print("Industry:", data.get("industry"))
    print("Employee Count:", data.get("employee_count"))
else:
    print("Error:", response.status_code, response.text)
</code></pre>
<p>What you get is a response in JSON with Tesla’s details.</p>
<pre><code class="language-json">{
  "name": "Tesla Motors",
  "website": "https://www.tesla.com",
  "industry": "Automotive",
  "headquarters_location": "Palo Alto, California, United States",
  "employee_count": 10000,
  "founded_year": 2003,
  "Professional Social Network_url": "https://www.professionalsocialnetwork.com/company/tesla-motors/",
  "description": "Tesla, Inc. is an American electric vehicle and clean energy company ..."
}
</code></pre>
<p>Depending on what data fields you need, you can add or remove them. It’s that easy.</p>
<h2 id="crunchbase-api-vs-proxycurl">Crunchbase API vs Proxycurl </h2><p>It's time to bring these two giants head-to-head. Let's see how well they bode when compared under some important metrics.  </p><table>
<thead>
<tr>
<th style="text-align:center">Metrics</th>
<th style="text-align:center">Crunchbase API</th>
<th style="text-align:center">Proxycurl API</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:center">Data Collection</td>
<td style="text-align:center">User-Generated Content <br> Partnerships with Data Providers <br> Web Crawling and Automated Data Collection</td>
<td style="text-align:center">Real-time Scraping ✅<br> Trusted Sources like LikedIn and Crunchbase ✅<br> Publicly sourced data ✅</td>
</tr>
<tr>
<td style="text-align:center">Pricing</td>
<td style="text-align:center">3 tier subscription ✅<br> API tier based subscription ✅<br> $99/mo ❌</td>
<td style="text-align:center">Free Credits on signup ✅<br> Pay-as-you-go Model ✅<br> $49/mo (0.02/profile) ✅</td>
</tr>
<tr>
<td style="text-align:center">Data Freshness</td>
<td style="text-align:center">Updated by default bi-monthly ❌</td>
<td style="text-align:center">Data Freshness Guarantee ✅</td>
</tr>
<tr>
<td style="text-align:center">Rate Limits</td>
<td style="text-align:center">Constrained ❌<br> 200 requests per minute</td>
<td style="text-align:center">Perfect for High-volume requests ✅<br> 432,000 API calls per day</td>
</tr>
<tr>
<td style="text-align:center">Customization</td>
<td style="text-align:center">Constrained data fields</td>
<td style="text-align:center">Control over granular data fields</td>
</tr>
<tr>
<td style="text-align:center">Best For</td>
<td style="text-align:center">Investors <br> Analysts <br> Strategists</td>
<td style="text-align:center">Sales Teams <br> Marketers <br> Recruiters</td>
</tr>
<tr>
<td style="text-align:center">Legal Compliance</td>
<td style="text-align:center">GDPR ✅<br> CCPA ✅</td>
<td style="text-align:center">GDPR ✅<br> CCPA ✅</td>
</tr>
</tbody>
</table>
<p>Now, let's look at each of these metrics up close. </p><h3 id="data-collection">Data Collection</h3><p><strong>Proxycurl: </strong>Proxycurl's scrapes publicly available data in real-time from trusted sources such like Professional Social Network and Crunchbase. What you get is accurate, up-to-date information. </p><p><strong>Crunchbase: </strong>Crunchbase collects data from various sources, including:</p><ul><li><strong>User-Generated Content</strong>: Content and submissions from the community, basically like Wikipedia. </li><li><strong>Partnerships with Data Providers</strong>: Crunchbase partners with reputable data providers to augment its database. These partnerships help to increase the accuracy and depth of the data.</li><li><strong>Web Crawling and Automated Data Collection</strong>: Crunchbase uses web crawling and automated data collection methods to gather information from public sources. </li></ul><table>
<thead>
<tr>
<th style="text-align:center">Feature</th>
<th style="text-align:center">Crunchbase API</th>
<th style="text-align:center">Proxycurl API</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:center"><strong>Primary Data Sources</strong></td>
<td style="text-align:center">Public records, proprietary updates, user contributions</td>
<td style="text-align:center">Trusted sources like Professional Social Network and Crunchbase</td>
</tr>
<tr>
<td style="text-align:center"><strong>Data Types</strong></td>
<td style="text-align:center">Business and financial details</td>
<td style="text-align:center">Business and individual profiles</td>
</tr>
<tr>
<td style="text-align:center"><strong>Focus</strong></td>
<td style="text-align:center">Funding, firmographics, and market analytics</td>
<td style="text-align:center">Employment, people, and company profiles</td>
</tr>
</tbody>
</table>
<h3 id="pricing">Pricing</h3><p><strong>Proxycurl: </strong>You get free credits up front when you sign up. If you want to pursue further, you have the option to choose from one of our five subscription plans or get on our pay-as-you-go API approach. Check out our <a href="https://nubela.co/proxycurl/pricing?ref=nubela.co"><u>Pricing Plans</u></a> to get a better idea. </p><p><strong>Crunchbase: </strong>Crunchbase offers a freemium model with three tiers: Basic, Pro, and Enterprise. The Basic plan is free, providing limited access to company profiles, funding information, and news.&nbsp;</p><p>The Pro plan unlocks additional features, such as access to investor profiles and funding rounds data.&nbsp;</p><p>Enterprise plans are custom-priced for teams and organizations, offering advanced features, support, and data access.</p><table>
<thead>
<tr>
<th style="text-align:center">Feature</th>
<th style="text-align:center">Crunchbase API</th>
<th style="text-align:center">Proxycurl API</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:center"><strong>Free Access</strong></td>
<td style="text-align:center">Limited (basic data only)</td>
<td style="text-align:center">Free credits upon signup</td>
</tr>
<tr>
<td style="text-align:center"><strong>Pricing Model</strong></td>
<td style="text-align:center">Subscription (monthly/annual)</td>
<td style="text-align:center">Subscription (monthly/annual) <br> Pay-per-use (credit-based)</td>
</tr>
<tr>
<td style="text-align:center"><strong>Basic Paid Plan</strong></td>
<td style="text-align:center">Pro ($99/mo)</td>
<td style="text-align:center">Starter $49/mo</td>
</tr>
</tbody>
</table>
<h3 id="data-freshness">Data Freshness </h3><p><strong>Proxycurl: </strong>Proxycurl provides real-time scraping, with a <a href="https://nubela.co/blog/how-fresh-are-profiles-returned-by-proxycurl-api/" rel="noreferrer">freshness guarantee</a> to <strong> </strong>assure you. But here's the kicker, you have control over how fresh you want your data to be. You have the option to extract freshly-scraped data, data 29 days old or younger or historical data that is older than 29 days.</p><p><strong>Crunchbase: </strong>Crunchbase regularly updates their datasets every two weeks. </p><table>
<thead>
<tr>
<th style="text-align:center">Feature</th>
<th style="text-align:center">Crunchbase API</th>
<th style="text-align:center">Proxycurl API</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:center"><strong>Update Frequency</strong></td>
<td style="text-align:center">Periodic updates <br> Bi-monthly</td>
<td style="text-align:center">Real-time updates</td>
</tr>
<tr>
<td style="text-align:center"><strong>Real-time Insights</strong></td>
<td style="text-align:center">Limited</td>
<td style="text-align:center">Comprehensive</td>
</tr>
</tbody>
</table>
<h3 id="rate-limits">Rate Limits</h3><p><strong>Proxycurl</strong>: A generous rate limit of 432,000 calls per day. Perfect for high-volume users.</p><p><strong>Crunchbase API</strong>: Restricted to 200 API requests per minute. Rate limits are based on subscription tiers. Lower tiers have strict API call restrictions.</p><table>
<thead>
<tr>
<th style="text-align:center">Feature</th>
<th style="text-align:center">Crunchbase API</th>
<th style="text-align:center">Proxycurl API</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:center"><strong>Rate Limit</strong></td>
<td style="text-align:center">Subscription-tier dependent <br> 200 requests per minute</td>
<td style="text-align:center">High-volume <br> 432,000 requests per day</td>
</tr>
<tr>
<td style="text-align:center"><strong>Scalability</strong></td>
<td style="text-align:center">Limited by tier</td>
<td style="text-align:center">Highly scalable</td>
</tr>
</tbody>
</table>
<h3 id="customization">Customization</h3><p><strong>Proxycurl</strong>: With Proxycurl, you get granular control over API requests; you can tailor data fields according to your needs.</p><p><strong>Crunchbase API</strong>: Offers predefined data packages that limit customization to the provided dataset categories. You have to work within these constraints.</p><table>
<thead>
<tr>
<th style="text-align:center">Feature</th>
<th style="text-align:center">Crunchbase API</th>
<th style="text-align:center">Proxycurl API</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:center"><strong>Data Structure</strong></td>
<td style="text-align:center">Predefined packages</td>
<td style="text-align:center">Granular data fields</td>
</tr>
<tr>
<td style="text-align:center"><strong>Adaptability</strong></td>
<td style="text-align:center">Limited to standard business tools</td>
<td style="text-align:center">Flexible for bespoke applications</td>
</tr>
<tr>
<td style="text-align:center"><strong>Developer Control</strong></td>
<td style="text-align:center">Fixed endpoints and data outputs</td>
<td style="text-align:center">Fine-tuned API responses</td>
</tr>
</tbody>
</table>
<h3 id="best-for">Best For</h3><p><strong>Proxycurl: </strong>If there's one thing Proxycurl does best, its enriching people and company data. It's ideal for recruitment, lead generation, and CRM enhancements. The developer-friendly environment allows creating tailored solutions like applicant tracking systems and market intelligence dashboards, offering real-time, Professional Social Network-based insights to optimize business processes.</p><p><strong>Crunchbase API: </strong>Crunchbase is more geared towards research than anything else. It empowers venture capitalists, sales teams, and analysts with detailed insights into company financials, funding histories, and market trends, streamlining lead generation, risk management, and talent acquisition.</p><table>
<thead>
<tr>
<th style="text-align:center">Feature</th>
<th style="text-align:center">Crunchbase API</th>
<th style="text-align:center">Proxycurl API</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:center"><strong>Focus</strong></td>
<td style="text-align:center">Investment &amp; financial insights</td>
<td style="text-align:center">Professional Social Network-based people &amp; company data</td>
</tr>
<tr>
<td style="text-align:center"><strong>Primary Data</strong></td>
<td style="text-align:center">Firmographics, funding, financials</td>
<td style="text-align:center">Company and individual profiles <br> Real-time updates</td>
</tr>
<tr>
<td style="text-align:center"><strong>Best For</strong></td>
<td style="text-align:center">Investors, analysts, and strategists</td>
<td style="text-align:center">Sales teams, marketers, and recruiters</td>
</tr>
<tr>
<td style="text-align:center"><strong>Use Cases</strong></td>
<td style="text-align:center">Market intelligence, due diligence</td>
<td style="text-align:center">CRM enrichment, lead generation</td>
</tr>
</tbody>
</table>
<h3 id="legal-compliance">Legal Compliance </h3><p><strong>Proxycurl: </strong>Proxycurl is <a href="https://nubela.co/blog/is-proxycurl-compliant-with-gdpr/" rel="noreferrer">legally compliant with GDPR</a> (General Data Protection Regulation) and CCPA (California Consumer Privacy Act of 2018) , the industry standard privacy regulations. </p><p><strong>Crunchbase: </strong>Matching Proxycurl's stride, Crunchbase is also GDPR and CCPA compliant. </p><table>
<thead>
<tr>
<th style="text-align:center"><strong>Feature</strong></th>
<th style="text-align:center"><strong>Crunchbase API</strong></th>
<th style="text-align:center"><strong>Proxycurl API</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:center">GDPR</td>
<td style="text-align:center">✅</td>
<td style="text-align:center">✅</td>
</tr>
<tr>
<td style="text-align:center">CCPA</td>
<td style="text-align:center">✅</td>
<td style="text-align:center">✅</td>
</tr>
</tbody>
</table>
<h3 id=""></h3><h2 id="the-bottomline">The Bottomline</h2><p>Crunchbase API is certainly a viable option if you're looking harvest the platform's data. But just so you know, there is a better, more affordable option out there. </p><p>Proxycurl starts where Crunchbase API ends. With our multiple endpoints, filter and pick only the data fields you want. Enjoy accurate data without falling for common data pitfalls.</p><p>Say yes to fresher, more accurate data. Say yes to Proxycurl. <a href="https://nubela.co/proxycurl/auth/register?ref=nubela.co" rel="noreferrer">Sign up</a> today!</p><div class="kg-card kg-toggle-card" data-kg-toggle-state="close">
            <div class="kg-toggle-heading">
                <h4 class="kg-toggle-heading-text"><span style="white-space: pre-wrap;">Is Crunchbase API free?</span></h4>
                <button class="kg-toggle-card-icon" aria-label="Expand toggle to read content">
                    <svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"></path>
                    </svg>
                </button>
            </div>
            <div class="kg-toggle-content"><p><span style="white-space: pre-wrap;">You get basic access when you register an account with Crunchbase. That means you can get data points such as organization description, address, etc, giving users everything they need to start the matching process for organization profiles.</span></p></div>
        </div><div class="kg-card kg-toggle-card" data-kg-toggle-state="close">
            <div class="kg-toggle-heading">
                <h4 class="kg-toggle-heading-text"><span style="white-space: pre-wrap;">What are the limitations of Crunchbase API?</span></h4>
                <button class="kg-toggle-card-icon" aria-label="Expand toggle to read content">
                    <svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"></path>
                    </svg>
                </button>
            </div>
            <div class="kg-toggle-content"><p><span style="white-space: pre-wrap;">There is a rate limit of 200 calls per minute for Crunchbase API. Hit the rate limit, and the API will respond with an error message.</span></p></div>
        </div><div class="kg-card kg-toggle-card" data-kg-toggle-state="close">
            <div class="kg-toggle-heading">
                <h4 class="kg-toggle-heading-text"><span style="white-space: pre-wrap;">How to get data from Crunchbase?</span></h4>
                <button class="kg-toggle-card-icon" aria-label="Expand toggle to read content">
                    <svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"></path>
                    </svg>
                </button>
            </div>
            <div class="kg-toggle-content"><p><span style="white-space: pre-wrap;">There are a set of steps you have to follow. First, locate your unique 32 character User Key that you get when signing up with Crunchbase. Now, type the URL corresponding to the file you wish to download into your browser and replace the "&lt;user_key&gt;" with the value that you received. Press enter and start downloading. And that’s it! You will have downloaded a .zip file containing the CSV you've requested. </span></p></div>
        </div><div class="kg-card kg-toggle-card" data-kg-toggle-state="close">
            <div class="kg-toggle-heading">
                <h4 class="kg-toggle-heading-text"><span style="white-space: pre-wrap;">Is it legal to scrape Crunchbase?</span></h4>
                <button class="kg-toggle-card-icon" aria-label="Expand toggle to read content">
                    <svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"></path>
                    </svg>
                </button>
            </div>
            <div class="kg-toggle-content"><p><span style="white-space: pre-wrap;">Scraping any publicly available information is legal.</span></p></div>
        </div><div class="kg-card kg-toggle-card" data-kg-toggle-state="close">
            <div class="kg-toggle-heading">
                <h4 class="kg-toggle-heading-text"><span style="white-space: pre-wrap;">How do I export from Crunchbase to Excel?</span></h4>
                <button class="kg-toggle-card-icon" aria-label="Expand toggle to read content">
                    <svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"></path>
                    </svg>
                </button>
            </div>
            <div class="kg-toggle-content"><p><span style="white-space: pre-wrap;">Build a search or create a list. Then click the ‘Export To CSV’ button in the upper right-hand corner. The downloaded file can be opened with Excel, Google Sheets, OpenOffice, or another program of your choice.</span></p></div>
        </div> ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ How T-Shirts Reflect Corporate Culture: 11 Creative Designs Ideas ]]></title>
        <description><![CDATA[ 11 best corporate tshirt design ideas. 1. Minimalist Logo T-shirt 2. Taglines 3. Inside Jokes 4. Diverse and Inclusive T-shirts 5. Sustainably sourced T-shirts ]]></description>
        <link>https://nubela.co/blog/how-t-shirts-reflect-corporate-culture-creative-designs-ideas/</link>
        <guid isPermaLink="false">67523526b4546d00014e83fa</guid>
        <category><![CDATA[ proxycurl ]]></category>
        <dc:creator><![CDATA[ Sese | Technical Writer ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/10/IMG_4677.jpeg"/>
        <pubDate>Tue, 17 Dec 2024 08:28:07 +0800</pubDate>
        <media:content url="" medium="image"/>
        <content:encoded><![CDATA[ <p>Ahrefs Evolve 2024, held over two days in Singapore, brought together over 500 professionals to network and share insights into the future of digital marketing. Team Proxycurl was also there, to learn and connect with industry peers.</p><p>Amid all the networking, one unexpected star emerged: our company t-shirt.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/12/image--1-.jpg" class="kg-image" alt="Picture of Proxycurl employees at Ahrefs Evolve 2024 in Singapore" loading="lazy" width="2000" height="969"><figcaption><span style="white-space: pre-wrap;">Team Proxycurl at the Ahrefs Evolve 2024 Event in Singapore</span></figcaption></figure><p>Again and again, we heard, “I love your t-shirt.”</p><p>“Thanks! It’s our company t-shirt. We designed it ourselves.”</p><p>“Looks great. It must be fun working at your company.”</p><p>What started as casual compliments turned into meaningful discussions, with the t-shirt acting as an icebreaker. It wasn’t planned, but the design sparked curiosity and gave us an opportunity to share a bit about Proxycurl.</p><p>On the trip back, I couldn’t help but wonder, <strong><em>how much does a t-shirt really say about a company’s culture?</em></strong></p><h2 id="what-corporate-culture-looks-like-today">What Corporate Culture Looks Like Today</h2><p>How often do you hear a company say, <em>“We’re a fun place to work!”</em>?</p><p>And how often do you actually believe it?</p><p>I’ve been in enough job interviews to know the drill. When it’s my turn to ask questions, I always inquire about company culture (Yes, I did that in my interview with Proxycurl too). What I usually get back is a well-rehearsed monologue about how “great” it is to work there. I’m left unconvinced.</p><p>Corporate culture is the actions, atmosphere, and values you can see, feel, and experience. As an employee, the job isn’t just a paycheck; it’s where we spend most of our waking hours. If the culture doesn’t inspire confidence, it’s better to keep looking. I go back to how Chris Voss puts it in <em>Never Split the Difference</em>, <em>“No deal is better than a bad deal.”</em></p><p>The game has truly changed. It’s no longer about keeping things in-house. Now, it’s all about making your business everyone else’s business.&nbsp;</p><p>Take this TikTok for instance.&nbsp;</p><figure class="kg-card kg-embed-card kg-card-hascaption"><blockquote class="tiktok-embed" cite="https://www.tiktok.com/@futurecloudacc/video/7283921162533424417" data-video-id="7283921162533424417" data-embed-from="oembed" style="max-width:605px; min-width:325px;"> <section> <a target="_blank" title="@futurecloudacc" href="https://www.tiktok.com/@futurecloudacc?refer=embed&ref=nubela.co">@futurecloudacc</a> <p>This is how we introduce the newest members of the team!😂 all in the second take aswell!  <a title="fyp" target="_blank" href="https://www.tiktok.com/tag/fyp?refer=embed&ref=nubela.co">#fyp</a> <a title="team" target="_blank" href="https://www.tiktok.com/tag/team?refer=embed&ref=nubela.co">#team</a> <a title="explorepage" target="_blank" href="https://www.tiktok.com/tag/explorepage?refer=embed&ref=nubela.co">#explorepage</a> <a title="futurecloud" target="_blank" href="https://www.tiktok.com/tag/futurecloud?refer=embed&ref=nubela.co">#futurecloud</a> <a title="officehumor" target="_blank" href="https://www.tiktok.com/tag/officehumor?refer=embed&ref=nubela.co">#officehumor</a> <a title="officelife" target="_blank" href="https://www.tiktok.com/tag/officelife?refer=embed&ref=nubela.co">#officelife</a> <a title="officefun" target="_blank" href="https://www.tiktok.com/tag/officefun?refer=embed&ref=nubela.co">#officefun</a> </p> <a target="_blank" title="♬ original sound - Future Cloud Accounting" href="https://www.tiktok.com/music/original-sound-7283921182016342817?refer=embed&ref=nubela.co">♬ original sound - Future Cloud Accounting</a> </section> </blockquote> <script async="" src="https://www.tiktok.com/embed.js"></script><figcaption><p><span style="white-space: pre-wrap;">FutureCloud TikTok on how they introduce the newest team member</span></p></figcaption></figure><p>It’s playful, inviting, and lighthearted; a glimpse of a work environment that values connection and camaraderie. I’m not saying a single video can paint the full picture of a company’s culture, but moments like these go a long way in setting a positive tone.</p><p>But expressing your culture doesn’t mean jumping on every TikTok trend. Something as simple as a well thought t-shirt can say a lot about your company culture, like it did for us at Evolve 2024.</p><h2 id="why-apparel-reflects-culture">Why Apparel Reflects Culture</h2><p>Corporate t-shirts have stood the test of time, usually made to celebrate achievements or commemorate milestones. Anything from project completions, annual events, team gatherings, and even festive celebrations calls for a t-shirt. These t-shirts go beyond just apparel, they become visible, tangible symbols of shared identity and pride.</p><p>Besides, it turns your employees into a walking, talking billboard for the company. If you’re subtle, your design can convey your culture without being heavy-handed or preachy. A sleek, stylish t-shirt can spark curiosity, make heads turn, and genuinely connect with people.</p><p><a href="https://www.professionalsocialnetwork.com/in/christopher-vardanyan-4b6b38111/?ref=nubela.co">Christopher Vardanyan</a>, co-founder of&nbsp;<a href="https://rocketmoving.com/facts-about-moving/?ref=nubela.co">Rocket Moving Services</a>,&nbsp;highlights how apparel plays a unique role in the moving industry. "In a business like ours, where teamwork and client trust are important, branded t-shirts serve as more than just uniforms—they create a sense of unity and professionalism. Our employees wear these shirts within working hours, and it shows their role as representatives of our company. These t-shirts act as mobile advertisements, catching the attention of potential clients during moves or in transit. We've even seen an uptick in inquiries—about 12%—from people who spot our team and want to know more about our services.''</p><p>For employees, it can be a badge of belonging. I didn’t wear the Proxycurl t-shirt because I had to; it’s casual, stylish, and reflects my pride in being part of the team. Even after I move on from the company, that t-shirt will hold a special place in my wardrobe.</p><h2 id="11-cool-corporate-t-shirt-design-ideas">11 Cool Corporate T-Shirt Design Ideas</h2><p>If you’re convinced of the role a well-thought t-shirt can play to further your corporate culture, let me indulge you in 11 trending t-shirt designs for 2025.</p><h3 id="1-minimalist-logo-t-shirt">1. Minimalist Logo T-shirt</h3>
<p>The fashion world is loving the aesthetic look. A minimalistic, not-trying-too-hard approach is the way to go. Besides, you don’t want your t-shirt to be cluttered, words all over the place and just overwhelming in general. Just your company name or logo might do the job!</p>
<p>Check out this Dunder Mifflin company t-shirt from the famous sitcom The Office. I know it’s a fictional company but they sure did a great job with their t-shirts! A standalone logo. Simple, sleek, and loud.</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/12/Screenshot-2024-12-03-at-16.51.2.png" class="kg-image" alt="Dunder Mifflin Employee T-shirt from the famous sitcom The Office US, in blue with a white print" loading="lazy" width="1192" height="1238"><figcaption><span style="white-space: pre-wrap;">Dunder Mifflin Employee T-shirt from the famous sitcom The Office US</span></figcaption></figure><h3 id="2-tagline-t-shirt">2. Tagline T-Shirt</h3>
<p>Sometimes the best way to get your message across is to directly put it out there. In time the phrase resonates with the brand and gives people a better idea of what they can expect from the company’s culture.</p>
<p>Apple has one of the best taglines in the corporate world. The <em>‘Think Different’</em> tagline captures their innovative corporate culture.</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/12/Screenshot-2024-12-03-at-16.47.50.png" class="kg-image" alt="Apple t-shirt with logo and 'Think Different' tagline print" loading="lazy" width="1126" height="1130"><figcaption><span style="white-space: pre-wrap;">Apple 'Think Different' T-shirt</span></figcaption></figure><h3 id="3-inside-jokes">3. Inside Jokes</h3>
<p>The beauty of an inside joke is not everyone will get it, but it sparks a conversation. And let’s be honest everyone enjoys good ol’ sensible humor!</p>
<p>A witty phrase or image that the employees get or even an industry limerick that other professionals can catch.</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/12/Screenshot-2024-12-05-at-16.27.12.png" class="kg-image" alt="A witty coding-based t-shirt for developers" loading="lazy" width="1180" height="582"><figcaption><span style="white-space: pre-wrap;">A funny, code-themed t-shirt designed for developers</span></figcaption></figure><h3 id="4-diverse-and-inclusive-t-shirts">4. Diverse and Inclusive T-shirts</h3>
<p>Diversity is a big issue these days and most companies are doing their best to put the word out. We are an equal opportunity provider.</p>
<p>What better to include that sentiment to your t-shirt! Use phrases and graphics to let everyone know the company's commitment to inclusivity.</p>
<p>If you want to pledge your commitment to diveristy, there are plenty of initiatives you can take besides designing a t-shirt. For starters, you can create a <a href="https://nubela.co/blog/built-app-that-pulls-company-employee-composition/">Diversity App!</a></p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/12/Screenshot-2024-12-05-at-16.30.00.png" class="kg-image" alt="Two, diversity themed t-shirts in black and blue" loading="lazy" width="1154" height="610"><figcaption><span style="white-space: pre-wrap;">Inclusive T-shirt Designs</span></figcaption></figure><h3 id="5-sustainably-sourced-t-shirts">5. Sustainably Sourced T-shirts</h3>
<p>If you’re still not on the sustainability bandwagon, it’s not too late. It’s time to source eco-conscious materials and give back to the planet. Plus, it sends a great message on your part about where your priorities lie.</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/12/fab.jpg" class="kg-image" alt="Sustainable Fabrics" loading="lazy" width="1960" height="1307"><figcaption><span style="white-space: pre-wrap;">Sustainable Fabrics</span></figcaption></figure><h3 id="6-employee-artwork">6. Employee Artwork</h3>
<p>Designs hit home when someone from the team is behind the monitor doing the work. A lot of corporations outsource their designs and would pay good money to get that personal touch. Brainstorm with your crew, come up with a design everyone can get on board with.</p>
<p>Rolling out Proxycurl’s very own Bali 2024 t-shirt design. Made by our amazing designer Arif Prasetyo.</p>
<figure class="kg-card kg-image-card"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/12/CMYK-Preview.png" class="kg-image" alt="" loading="lazy" width="1453" height="2000"></figure><h3 id="7-event-specific-t-shirts">7. Event-Specific T-shirts</h3>
<p>Commemorate your achievements, annual and festive gatherings with event-specific t-shirts. Let everyone know that you work hard and play hard.</p>
<p>I still remember unboxing the PS2 when it was first released, more than 20 years ago (God I’m getting old!). Back in 2015, Playstation celebrated their 20th anniversary with a commemorative t-shirt for everyone who made it possible. Now, with 2025 just around the corner, I can’t help but wonder what their 30th-anniversary t-shirts would look like.</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/12/Screenshot-2024-12-05-at-12.54.0.png" class="kg-image" alt="Three Playstation employees celebrating 20 year anniversary with commemorate t-shirts" loading="lazy" width="1116" height="742"><figcaption><span style="white-space: pre-wrap;">Playstation employees celebrating 20 year anniversary with commemorate t-shirts</span></figcaption></figure><h3 id="8-cultural-icons">8. Cultural Icons</h3>
<p>Be proud of where you belong. Incorporating cultural sites and icons is a great design idea for a corporate t-shirt.</p>
<p>Presenting the first edition of Proxycurl’s very own t-shirt. Drawing inspiration from our roots in Singapore, the design features the iconic MRT system and highlights the Tai Seng station, our office's closest stop. A wearable nod to the city we call home.</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/12/image--104---1-.png" class="kg-image" alt="Proxycurl Singapore themed t-shirt" loading="lazy" width="1340" height="1785"><figcaption><span style="white-space: pre-wrap;">Proxycurl Singapore themed t-shirt</span></figcaption></figure><h3 id="9-typography">9. Typography</h3>
<p>Drop the norm. Use a typography that goes beyond your company logo and tagline. Let everyone know you’re creative and adventurous. But don’t go overboard and make the words unreadable!</p>
<p>Nintendo’s rehabilitation clinic t-shirt uses unconventional fonts and strings up a different typography arrangement than their norm.</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/12/Screenshot-2024-12-05-at-12.56.3.png" class="kg-image" alt="Nintendo Rehabilitation Clinic t-shirt in Red" loading="lazy" width="898" height="948"><figcaption><span style="white-space: pre-wrap;">Nintendo Rehabilitation Clinic t-shirt</span></figcaption></figure><h3 id="10-printing-quality">10. Printing Quality</h3>
<p>Don’t spare any change in the design prints. If your designs are already peeling off after a few washes, it comes off as cheap. No tattered t-shirts are going in someone’s wardrobe. They go straight to the bin!</p>
<p>This imagined Tumblr t-shirt by Printsome is a great example of how an excellent printing job can transform a simple design into something sophisticated.</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/12/Screenshot-2024-12-05-at-16.06.0.png" class="kg-image" alt="An imagined Tumblr t-shirt by Printsome in blue" loading="lazy" width="1000" height="1318"><figcaption><span style="white-space: pre-wrap;">An imagined Tumblr t-shirt by Printsome</span></figcaption></figure><h3 id="11-quotes">11. Quotes</h3>
<p>Inspiring quotes, or even humorous ones deserve a place in your t-shirt. Give your tagline a break, go with a quote that sums up your team spirit and corporate culture.</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/12/Screenshot-2024-12-05-at-16.08.2.png" class="kg-image" alt="Industrial t-shirts with quote by Engineers Asgard Industries in black " loading="lazy" width="1000" height="1068"><figcaption><span style="white-space: pre-wrap;">Industrial t-shirts with quote by Engineers Asgard Industries </span></figcaption></figure><h2 id="the-story-behind-our-t-shirts"><strong>The Story Behind Our T-Shirts</strong></h2><p>	The Proxycurl team is a tight-knit group, despite working remotely. We actively engage in fun conversations, share memes, and enjoy light-hearted banter in our team channels. Though globally distributed, our team is primarily based in Singapore and Indonesia, with a few members like myself working from other parts of the world.</p><h3 id="our-singapore-themed-t-shirt">Our Singapore Themed T-shirt</h3><p>The t-shirt I wore at the Evolve event was designed by our creative head, Aji. It captures the spirit of Singapore, where Proxycurl is headquartered. The design centers around the iconic MRT, Singapore's bustling transportation system, with a frame inspired by the interior of an MRT carriage. It even highlights the Tai Seng station, the closest station to our office.&nbsp;</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/12/image--4---1-.jpg" class="kg-image" alt="The Proxycurl team with our Singapore themed t-shirt" loading="lazy" width="2000" height="970"><figcaption><span style="white-space: pre-wrap;">The Proxycurl team with our Singapore themed t-shirt</span></figcaption></figure><p>The modern aesthetic is elevated with kanji characters and design elements, and our Proxycurl logo at the top-right ties it all together. The imagery can be seen as a journey from Tai Seng to Proxycurl HQ; symbolic and stylish.</p><h3 id="bali-2024-t-shirt">Bali 2024 T-shirt</h3><p>Another cherished design in our collection celebrates our annual company getaway. This year’s retreat took us to Bali, a destination famous for surfing and the sea. </p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/12/image--5-.jpg" class="kg-image" alt="The Proxycurl team with Bali 2024 t-shirt in our yearly getaway to Bali" loading="lazy" width="2000" height="878"><figcaption><span style="white-space: pre-wrap;">The Proxycurl team with Bali 2024 t-shirt in our yearly getaway!</span></figcaption></figure><p>To commemorate the trip, our designer Arif designed a whimsical "surfing cat" graphic, a creative twist on Garfield enjoying water sports. The design features our company name prominently at the top, with the occasion, "Bali 2024," subtly placed at the bottom left.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/12/image--105---1--1.png" class="kg-image" alt="" loading="lazy" width="1280" height="960"><figcaption><span style="white-space: pre-wrap;">The Three Pussketeers (From left to right) Pixel, Meebles and Choba </span></figcaption></figure><p>The playful nod to Garfield is also a shout to our beloved office mascots, Meebles, Pixel, and Choba. The design perfectly reflects our team's fun and quirky personality, all the while preserving the memories of a great adventure.</p><h2 id="the-final-thread">The Final Thread</h2><p>Wrap up your next big milestone with a kick-ass t-shirt. It’s a token of belonging for your team and a bold statement of your company culture to the outside world.</p><p>At Proxycurl, we proudly tell our story through our t-shirts. Beyond the threads, we’re all about empowering businesses with robust data solutions. From streamlining application development to removing the need for a dedicated data team, Proxycurl is your partner in growth. With an exhaustive database of over 500 million people and company records, we provide the tools you need to build and scale.</p><p>So, why not partner with the guys rocking cool t-shirts and offering game-changing data solutions? We work hard, we play harder, and we’re here to help you do the same.</p><p>Try <a href="https://nubela.co/proxycurl/auth/login?ref=nubela.co"><u>Proxycurl</u></a> today and get 100 free credits upon signing up.</p><h2 id="faqs">FAQs</h2><div class="kg-card kg-toggle-card" data-kg-toggle-state="close">
            <div class="kg-toggle-heading">
                <h4 class="kg-toggle-heading-text"><span style="white-space: pre-wrap;">What is a corporate t-shirt?</span></h4>
                <button class="kg-toggle-card-icon" aria-label="Expand toggle to read content">
                    <svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"></path>
                    </svg>
                </button>
            </div>
            <div class="kg-toggle-content"><p><span style="white-space: pre-wrap;">Corporate t-shirts are different from a corporate dress code or clothing. Corporate T-shirts are a memento, a symbol of celebration and achievement to the contributors to that success. Corporate clothing can include formal workwear, such as a dress, jacket, tie, golf shirt, neat pants, white shirt, etc.</span></p></div>
        </div><div class="kg-card kg-toggle-card" data-kg-toggle-state="close">
            <div class="kg-toggle-heading">
                <h4 class="kg-toggle-heading-text"><span style="white-space: pre-wrap;">Can you use company logos on t-shirts?</span></h4>
                <button class="kg-toggle-card-icon" aria-label="Expand toggle to read content">
                    <svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"></path>
                    </svg>
                </button>
            </div>
            <div class="kg-toggle-content"><p><span style="white-space: pre-wrap;">You can use a trademarked logo on apparel for personal use, but not for professional use. Hire someone to create a logo or secure permission from the trademark owner to avoid potential legal issues.</span></p></div>
        </div><div class="kg-card kg-toggle-card" data-kg-toggle-state="close">
            <div class="kg-toggle-heading">
                <h4 class="kg-toggle-heading-text"><span style="white-space: pre-wrap;">How much should I pay an artist for t-shirt design?</span></h4>
                <button class="kg-toggle-card-icon" aria-label="Expand toggle to read content">
                    <svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"></path>
                    </svg>
                </button>
            </div>
            <div class="kg-toggle-content"><p><span style="white-space: pre-wrap;">If you're doing regular graphic design work, you'd probably be better off hiring someone. An in-house project can also help you get the personal touch. If you are outsourcing the work, the average rate can run from $60/hour. Some designers can charge upwards of $300 for the artwork.&nbsp;</span></p></div>
        </div><div class="kg-card kg-toggle-card" data-kg-toggle-state="close">
            <div class="kg-toggle-heading">
                <h4 class="kg-toggle-heading-text"><span style="white-space: pre-wrap;">Can you legally put quotes on t-shirts?</span></h4>
                <button class="kg-toggle-card-icon" aria-label="Expand toggle to read content">
                    <svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"></path>
                    </svg>
                </button>
            </div>
            <div class="kg-toggle-content"><p><span style="white-space: pre-wrap;">Like logos, some quotes may also be trademarked. Research before using a quote for your t-shirt. Usually printing famous quotes are fine.&nbsp;</span></p></div>
        </div> ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ Changelog: Enhanced Employee Listing Match Rates by Company Name Matching ]]></title>
        <description><![CDATA[ We are now able to match on average 107% more employees of companies via the newly revamped Employee Listing Endpoint.

The endpoint now matches employees based on Professional Social Network company numerical ID and company name, not just the Professional Social Network company profile URL.




Match type
Previously
Revamped
Example ]]></description>
        <link>https://nubela.co/blog/enhanced-employee-listing-match-rates-by-company-name-matching/</link>
        <guid isPermaLink="false">674d68ecb4546d00014e82b8</guid>
        <category><![CDATA[ changelog ]]></category>
        <dc:creator><![CDATA[ Zeha Irawan | Senior Marketing Dev ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/10/zz.jpeg"/>
        <pubDate>Thu, 12 Dec 2024 17:44:46 +0800</pubDate>
        <media:content url="" medium="image"/>
        <content:encoded><![CDATA[ <p>We are now able to match on average <code>107%</code> more employees of companies via the newly revamped <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#company-api-employee-listing-endpoint" rel="noreferrer">Employee Listing Endpoint</a>.</p><p>The endpoint now matches employees based on <strong>Professional Social Network company numerical ID</strong> and <strong>company name</strong>, not just the Professional Social Network company profile URL.</p><table>
<thead>
<tr>
<th>Match type</th>
<th>Previously</th>
<th>Revamped</th>
<th>Example</th>
</tr>
</thead>
<tbody>
<tr>
<td>Professional Social Network company profile URL</td>
<td>✅</td>
<td>✅</td>
<td><a href="https://www.professionalsocialnetwork.com/company/walmart/?ref=nubela.co">https://www.professionalsocialnetwork.com/company/walmart/</a></td>
</tr>
<tr>
<td>Professional Social Network company numerical ID</td>
<td>❌</td>
<td>✅</td>
<td><a href="https://www.professionalsocialnetwork.com/company/2646/?ref=nubela.co">https://www.professionalsocialnetwork.com/company/2646/</a></td>
</tr>
<tr>
<td>Company name</td>
<td>❌</td>
<td>✅</td>
<td>Walmart, Walmart USA</td>
</tr>
</tbody>
</table>
<p>Take for example, this is Walmart's employee count based on the previous vs newly-revamped matching algorithm:</p><ul><li>Previously: <code>378,164</code></li><li>Revamped: <code>456,819</code></li></ul><p>The results?</p><blockquote>A nice improvement of <code>78,655</code> count, or 20.8%.</blockquote><h2 id="the-previous-matching-algorithm">The previous matching algorithm</h2><p>Previously we only matched company employees by checking if a person listed a company in their work experiences, specifically we only considered them a match if the company profile URL was the same as the target company profile, i.e.:</p><ul><li><a href="https://www.professionalsocialnetwork.com/company/walmart/?ref=nubela.co">https://www.professionalsocialnetwork.com/company/walmart/</a> &amp; <a href="https://www.professionalsocialnetwork.com/company/walmart/?ref=nubela.co">https://www.professionalsocialnetwork.com/company/walmart/</a> = MATCHED</li></ul><p>This approach resulted in more qualified profiles, but fewer results, in most cases about 50% less. However, this is not always what our users need. Some of users prefer more results returned.</p><h2 id="new-coynamematch-parameter">New <code>coy_name_match</code> parameter</h2><p>Introducing the new <code>coy_name_match</code> parameter! With this parameter, you can specify the matching criteria, to return profiles that <strong>match the name</strong> of your target company instead of just matching the company profile URL. </p><p>The <code>coy_name_match</code> parameter also matches company name <strong>without</strong> case sensitivity, e.g. a user profile with <code>apple</code> in his work experience would match for the same company of <a href="https://www.professionalsocialnetwork.com/company/apple/?ref=nubela.co">https://www.professionalsocialnetwork.com/company/apple</a>. Previously that user won't be matched as an Apple employee.</p><p>We also improved the general employee listing matching algorithms with the following:</p><ul><li>Company Profile URL (vanity ID)</li><li>Company Profile URL (numerical ID)</li></ul><h2 id="lets-see-amazons-improvements">Let's see Amazon's improvements</h2><p>Taking another beloved company as example - Amazon, this is their main Professional Social Network company profile URL <a href="https://www.professionalsocialnetwork.com/company/amazon/?ref=nubela.co">https://www.professionalsocialnetwork.com/company/amazon/</a></p><p>Based on the old matching algorithm, the Employee Listing Endpoint would only match: </p><ul><li><code>553,560</code> employees</li></ul><p>With the newly-revamped algorithm and <code>coy_name_match</code> parameter, Amazon's other Professional Social Network profiles based on vanity ID <a href="https://www.professionalsocialnetwork.com/company/amazon-bestt-offers/?ref=nubela.co">https://www.professionalsocialnetwork.com/company/amazon-bestt-offers/</a> and numerical ID <a href="https://www.professionalsocialnetwork.com/company/88390279/?ref=nubela.co">https://www.professionalsocialnetwork.com/company/88390279/</a>, and users who input <code>Amazon</code>/<code>amazon</code> without the company's Professional Social Network URL would be considered in the same company. This brings the employee count to:</p><ul><li><code>579,472</code> employees</li></ul><p>An <code>25,912</code> increase in Amazon employees matched that would otherwise not be.</p><p>More data for you! </p> ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ Fresh Data Is Here for Person, Company &amp; Employee Search API Endpoints ]]></title>
        <description><![CDATA[ We&#39;ve heard this product feature request a few times, and we&#39;re glad to launch this! It&#39;ll give more data quality to your workflows using our API endpoints. To fresh data! ]]></description>
        <link>https://nubela.co/blog/fresh-data-for-person-company-employee-search-api-endpoints/</link>
        <guid isPermaLink="false">6757ec42b4546d00014e868d</guid>
        <category><![CDATA[ changelog ]]></category>
        <dc:creator><![CDATA[ Steven Goh | CEO ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2019/05/square.jpg"/>
        <pubDate>Tue, 10 Dec 2024 18:59:31 +0800</pubDate>
        <media:content url="" medium="image"/>
        <content:encoded><![CDATA[ <p>I am happy to share that you can now fetch fresh Search and Employee data from Proxycurl.</p>
<p>Since <a href="https://nubela.co/blog/product-update-search-api-v2/">the Search API revamp</a> that happened earlier this year, we've had many of our customers using the product and giving us valuable feedback, along with two of our existing products that are related to this update - the <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#company-api-employee-listing-endpoint">Employee Listing Endpoint</a> and <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#company-api-employee-search-endpoint">Employee Search Endpoint</a>.</p>
<p>And one recurring feedback is that it'd be good if users can <strong>decide the data freshness themselves</strong>.</p>
<p>And as always, we heard and we improved the products.</p>
<p>I'm glad to share that you can now use the same <code>use_cache</code> parameter - <em>the same one as our <a href="https://nubela.co/proxycurl/docs?python&ref=nubela.co#people-api-person-profile-endpoint">Person Profile Endpoint</a></em> - to determine the freshness of data returned.</p>
<h2 id="whats-our-current-state">What's our current state?</h2>
<p>Currently the API endpoints are powered by <a href="https://nubela.co/proxycurl/linkdb?ref=nubela.co">LinkDB</a>, our database of close to 500 million of public Professional Social Network profiles, i.e. when an API call is made, we sieve through the database and return the data from it.</p>
<p>However LinkDB is not always fresh, and thus results returned by these endpoints might not be all fresh <em>(related reading: <a href="https://nubela.co/blog/how-often-is-linkdb-updated/">How often is LinkDB updated?</a>)</em>.</p>
<p>With this revamp we will scrape the results real-time and return fresh data, if they are not already yet, and if you use the <code>use_cache=if-recent</code> parameter <em>(next section)</em>.</p>
<h2 id="so-what-are-the-new-updates">So what are the new updates?</h2>
<h3 id="usage">Usage</h3>
<p>Using the <code>use_cache</code> parameter,</p>
<ul>
<li><code>if-present</code> (default value) - returns results without any freshness guarantee</li>
<li><code>if-recent</code> - will make a best effort to return results of profiles &lt;=29 days</li>
</ul>
<p>For the <code>use_cache=if-recent</code> parameter, <code>page_size</code> value of your API call must not be more than <code>10</code>. If it is <code>&gt;10</code>, it'll return a 400 error.</p>
<h3 id="credit-cost">Credit cost</h3>
<p>The default value, <code>use_cache=if-present</code> will not consume any extra credit.</p>
<p>The <code>use_cache=if-recent</code> parameter is a premium parameter and will cost additional credits.</p>
<ul>
<li>Good news is if you're on a <a href="https://nubela.co/proxycurl/pricing?ref=nubela.co">Growth plan or larger</a>, it costs only <code>1</code> extra credit.</li>
<li>If you're <em>not</em> on the Growth plan or larger, it'll cost <code>2</code> extra credits.</li>
</ul>
<p>Don't worry about invalid profiles because we won't charge credits for those.</p>
<h2 id="happy-searching">Happy searching</h2>
<p>We recognized the importance the fresh data returned for API calls involving searches, because who would want to search for and get stale data returned?</p>
<p>I hope this revamp will give you more powers through Proxycurl API, and thus more success in what you're building.</p>
<p>As always, email us at <a href="mailto:hello@nubela.co">hello@nubela.co</a> if you've any questions, or drop us a text in the live chat.</p>
 ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ I Built a Diversity App to Pull Employee Composition of Any Company ]]></title>
        <description><![CDATA[ Celebrate diversity. Learn how to build a diversity app by pulling employee Composition through any company&#39;s Professional Social Network URL. ]]></description>
        <link>https://nubela.co/blog/built-app-that-pulls-company-employee-composition/</link>
        <guid isPermaLink="false">672a06ff1cb59d0001b17724</guid>
        <category><![CDATA[ employee composition ]]></category>
        <dc:creator><![CDATA[ Zeha Irawan | Senior Marketing Dev ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/10/zz.jpeg"/>
        <pubDate>Thu, 05 Dec 2024 12:40:58 +0800</pubDate>
        <media:content url="" medium="image"/>
        <content:encoded><![CDATA[ <p>At Proxycurl, we don’t just believe in the power of diverse talent; we proudly embrace it. For that cause, we wanted something visual, something that would celebrate diversity in the workplace while serving as a medium for meaningful company insights. </p><p>As a developer, I spearheaded that challenge and coded a full interactive widget that takes a company's Professional Social Network profile URL and instantly generates a vibrant pie-chart. This chart visually breaks down the company’s employee composition by country and job title, offering a clear picture of global representation. It’s a simple yet powerful tool to highlight what makes teams unique.</p><p>Here's the final product:</p><figure class="kg-card kg-image-card"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/11/Group-6.png" class="kg-image" alt="" loading="lazy" width="1160" height="917"></figure><p><em><strong>Note: </strong>Find the full code on our </em><a href="https://github.com/nubelaco/use-case-examples/tree/main/employee-composition?ref=nubela.co" rel="noreferrer"><em>GitHub repo</em></a><em>.</em></p><p>Today, in the spirit of celebrating diversity paired with functionality, I’ll guide you through how I developed this app, and how you can do the same using my source code.</p><p>The app will display your company's employee composition based on a company's Professional Social Network profile URL. Specifically, </p><ol><li> <strong>Composition by country</strong> <em>(such as 85% US, 15% UK)</em></li><li><strong>Composition by job titles</strong> <em>(such as software engineer, designer, and account executive)</em>.</li></ol><p>At Proxycurl, our dedication to fostering diversity inspired this project. But if you’re wondering how this app could serve you, the possibilities are huge:</p><p><em>Use case 1: for investment teams to identify investment signals </em></p><ul><li>Let's say you're an early-stage VC firm, you can track startups with &lt;10 employees and monitor for recent fast growth, which suggests that they're doing well and a potential for your investment.</li></ul><p><em>Use case 2: for sales teams to identify buying signals </em></p><ul><li>Let's say you're selling a service to optimize cloud cost in AWS, you can monitor for companies that are hiring lots of backend engineers and infer that they have heavy use of cloud server, potentially needing your service.</li></ul><p><em>Use case 3: for marketing teams to track competitors' growth strategies</em></p><ul><li>Let's say you're devising the marketing focus for the next quarter, and you observed that your competitor has been hiring aggressively for video content marketers, that would suggest that they're going after the video channel strongly. </li></ul><p>Still not convinced? Here's an app demo to give you a push. </p><figure class="kg-card kg-image-card"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/11/Nov-26-202412-43-14-ezgif.com-optimize.gif" class="kg-image" alt="" loading="lazy" width="594" height="590"></figure><h2 id="prerequisites">Prerequisites</h2><p>Here's what you'll need to get started:</p><ul><li>A basic aptitude for coding</li><li>Node v18+</li><li><a href="https://proxycurl.com/?ref=nubela.co" rel="noreferrer">Proxycurl API key</a> - this is where we will pull the employee data based on their company Professional Social Network profile URL</li><li>Basic knowledge of React.js &amp; Next.js</li><li>Basic understanding of Tailwind CSS</li></ul><h2 id="step-1-create-a-new-nextjs-project">Step 1: Create a new Next.js project</h2><p>To start, you’ll need to create the foundation and structure of your app. Set up a new Next.js project.</p><pre><code class="language-bash">npx create-next-app@latest employee-composition
cd employee-composition &amp;&amp; npm run dev
</code></pre><p>Next, we’ll install essential UI components.</p><pre><code class="language-bash">npx shadcn@latest add button card input</code></pre><p>Now that we've set up the core framework and basic UI components, time to build from the bottom up!</p><h2 id="step-2-pulling-employee-data-via-api">Step 2: Pulling employee data via API</h2><p>We will use Proxycurl to pull the entire employee list of a company input by the user. First, sign up for <a href="https://nubela.co/proxycurl/auth/register?ref=nubela.co" rel="noreferrer">Proxycurl</a> and get free credits. Under your dashboard, navigate to <strong>Company Endpoints</strong>, then find <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#company-api-employee-listing-endpoint" rel="noreferrer"><strong>Employee Listing Endpoint</strong></a>. Here’s an example request:</p><pre><code class="language-Python">import requests

api_key = 'YOUR_API_KEY'
headers = {'Authorization': 'Bearer ' + api_key}
api_endpoint = 'https://nubela.co/proxycurl/api/Professional Social Network/company/employees/'
params = {
    'url': 'https://www.professionalsocialnetwork.com/company/microsoft',
    'coy_name_match': 'include',
    'use_cache': 'if-present',
    'country': 'us',
    'enrich_profiles': 'enrich',
    'role_search': '(co)?-?founder',
    'page_size': '10',
    'employment_status': 'current',
    'sort_by': 'recently-joined',
    'resolve_numeric_id': 'false',
}
response = requests.get(api_endpoint,
                        params=params,
                        headers=headers)</code></pre><p>You can also choose to automatically enrich employee profiles with other data points using the <code>enrich_profiles = enrich</code> parameter.</p><h2 id="step-3-create-a-nextjs-api">Step 3: Create a Next.js API</h2><p>Directly exposing your API key in the client is a security risk. So let's take a detour and create a Next.js API route that serves as a proxy for API calls. Add the following code to <code>app/api/employeeListing/route.js</code>:</p><pre><code class="language-js">import { NextResponse } from "next/server";

export async function GET(req) {
  const { searchParams } = new URL(req.url);
  const company_url = searchParams.get("company_url");
  const next_page_url = searchParams.get("next_page_url")
  const after = searchParams.get("after");

  const finalUrl =
    next_page_url &amp;&amp; next_page_url !== 'undefined'
      ? `${next_page_url}&amp;after=${after}&amp;enrich_profiles=enrich`
      : `https://nubela.co/proxycurl/api/Professional Social Network/company/employees/?url=${company_url}&amp;enrich_profiles=enrich`;


  try {
    const response = await fetch(finalUrl, {
      headers: {
        Authorization: `Bearer ${process.env.PROXYCURL_API_KEY}`,
      },
    });

    const data = await response.json();
    return NextResponse.json(data);
  } catch (error) {
    return NextResponse.json({ error });
  }
}

</code></pre><h2 id="step-4-input-company-professional-social-network-url">Step 4: Input company Professional Social Network URL</h2><p>You need to input a Professional Social Network company URL to fetch employee data. For this, we’ll use the <code>Input</code> and <code>Button</code> components we installed earlier. </p><p>In <code>app/page.js</code> , add the input &amp; button components from <code>shadcn</code>.</p><pre><code class="language-jsx">"use client";
import { Input } from "@/components/ui/input";
import { Button } from "@/components/ui/button";

const [companyUrl, setCompanyUrl] = useState("");

const handleKeyPress = (e) =&gt; {
    if (e.key === "Enter") {
      handleSubmit();
    }
};

 return (
&lt;div className="mx-auto w-full max-w-2xl min-h-[100vh] flex flex-col p-4"&gt;
    &lt;div className="flex flex-col gap-4 mx-auto w-full sm:flex-row sm:w-auto"&gt;
      &lt;Input
        className="w-full sm:w-96"
        placeholder="Professional Social Network Company URL"
        value={companyUrl}
        onChange={(e) =&gt; setCompanyUrl(e.target.value)}
        onKeyPress={handleKeyPress}
      /&gt;
      &lt;Button className="w-full sm:w-auto" onClick={handleSubmit}&gt;
        Submit
      &lt;/Button&gt;
    &lt;/div&gt;
&lt;/div&gt;
</code></pre><p>This creates an input field and a button for submitting the Professional Social Network URL. It should look something like this:</p><figure class="kg-card kg-image-card"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/11/company-url-input.png" class="kg-image" alt="" loading="lazy" width="1190" height="424"></figure><p>Great! We are halfway there! </p><h2 id="step-5-fetching-employee-data-and-handling-pagination">Step 5: Fetching employee data and handling pagination</h2><p>Now let's define the <code>handleSubmit</code> in <code>app/page.js</code>. The <code>handleSubmit</code> function triggers the API call. Here’s how it’s implemented in <code>app/page.js</code>:</p><pre><code class="language-jsx">const handleSubmit = async (e) =&gt; {
    e.preventDefault();
    await fetchEmployeeListing();
};
</code></pre><p>API call done! But what about pagination? The logic here is if there's <code>next_page</code> URL in the response, we will call that URL until there isn't one, which is indicated by <code>next_page</code> being <code>null</code>.</p><p>The <code>fetchEmployeeListing</code> function handles API requests, including pagination. If <code>next_page</code> exists in the response, it fetches data until all pages are retrieved.</p><pre><code class="language-js">  const fetchEmployeeListing = async (next_page_url) =&gt; {
    try {
      setIsLoading(true);
      const res = await fetch(
        `/api/employeeListing?company_url=${companyUrl}&amp;next_page_url=${next_page_url}`,
        {
          method: "GET",
          headers: {
            "Content-Type": "application/json",
          },
        },
      );
      const data = await res.json();

      const cleanData = data.employees.filter(
        (employee) =&gt; employee.profile !== null,
      );

      const company_id = companyUrl.split("/company/")[1].replace("/", "");

      handleSaveQuery({
        company_id: company_id,
        employees: cleanData,
      });

      if (data.next_page !== null) {
        fetchEmployeeListing(data.next_page);
      } else {
        const employeeListing = JSON.parse(
          localStorage.getItem("employeeListing"),
        );

        const countryCount = {};

        employeeListing[company_id].employees.forEach((employee) =&gt; {
          const country = employee.profile.country_full_name;
          countryCount[country] = (countryCount[country] || 0) + 1;
        });

        const occupationCount = {};

        employeeListing[company_id].employees.forEach((employee) =&gt; {
          const occupation = employee.profile.occupation;
          occupationCount[occupation] = (occupationCount[occupation] || 0) + 1;
        });

        try {
          const res = await fetch(`/api/categorizeJobTitle`, {
            method: "POST",
            body: JSON.stringify({ job_title: occupationCount }),
          });

          const categorizedOccupationJSON = await res.json();
          const categorizedOccupationCount = JSON.parse(categorizedOccupationJSON);

          setCountryData({
            labels: Object.keys(countryCount),
            data: Object.values(countryCount),
          });

          setOccupationData({
            labels: Object.keys(categorizedOccupationCount),
            data: Object.values(categorizedOccupationCount),
          });
        } catch (error) {
          console.log(error);
        }

        setIsLoading(false);
        return;
      }
    } catch (error) {
      console.log(error);
    }
  };
</code></pre><p>Now, it's time to implement the functionality to store the results of the API calls in your local storage:</p><pre><code class="language-js"> const handleSaveQuery = ({ company_id, employees }) =&gt; {
    const storedEmployeeListing =
      JSON.parse(localStorage.getItem("employeeListing")) || [];

    if (storedEmployeeListing[company_id]?.employees?.length &gt; 0) {
      const updatedEmployees = [
        ...storedEmployeeListing[company_id].employees,
        ...employees,
      ];
      localStorage.setItem(
        "employeeListing",
        JSON.stringify({
          ...storedEmployeeListing,
          [company_id]: {
            employees: updatedEmployees,
          },
        }),
      );
    } else {
      localStorage.setItem(
        "employeeListing",
        JSON.stringify({
          ...storedEmployeeListing,
          [company_id]: {
            employees: employees,
          },
        }),
      );
    }
  };
</code></pre><h2 id="step-6-displaying-the-data-in-a-pie-chart">Step 6: Displaying the data in a pie chart</h2><p>Now the fun part. After getting all of data, we want to be able to easily understand them, the various countries and job titles of the employees in their proper percentages.</p><p>For this, we'll use a pie chart component from <a href="https://apexcharts.com/?ref=nubela.co" rel="noreferrer">ApexCharts</a>.</p><p>First, create <code>app/components/Pie.jsx</code>:</p><pre><code class="language-jsx">'use client';
import React from 'react';
import dynamic from 'next/dynamic';

const Chart = dynamic(() =&gt; import('react-apexcharts'), { ssr: false });

function PieChart({chartData}) {

  const { labels, data } = chartData;

  if (!data || !labels ) return null;

  const options = {
    chart: {
      type: 'pie',
      foreColor: 'hsl(var(--foreground))',
      fontFamily: 'var(--font-geist-sans)'
    },
    labels: labels,
    colors: [
      'hsl(var(--chart-1))',
      'hsl(var(--chart-2))',
      'hsl(var(--chart-3))',
      'hsl(var(--chart-4))',
      'hsl(var(--chart-5))',
    ],
    legend: {
      position: 'bottom',
      fontSize: '12px',
      fontFamily: 'var(--font-geist-sans)',
      height: 'auto',
      offsetY: 10,
      labels: {
        colors: 'hsl(var(--foreground))'
      },
      markers: {
        width: 8,
        height: 8,
      },
      itemMargin: {
        horizontal: 8,
        vertical: 3
      },
      containerMargin: {
        top: 12
      },
      formatter: function(seriesName, opts) {
        return seriesName.length &gt; 30 ? seriesName.substring(0, 30) + '...' : seriesName;
      }
    },
    tooltip: {
      style: {
        fontSize: '14px',
        fontFamily: 'var(--font-geist-sans)'
      }
    },
    responsive: [{
      breakpoint: 480,
      options: {
        chart: {
          width: 300
        },
        legend: {
          position: 'bottom'
        }
      }
    }]
  };

  return (
    &lt;div className="w-[500px]"&gt;
      &lt;Chart
        options={options}
        series={data}
        type="pie"
        width="500"
        height="500"
      /&gt;
    &lt;/div&gt;
  );
}

export default PieChart;
</code></pre><p>What you'll get is this beautiful pie chart displaying all the data you have, in a slick and visually-aesthetic manner.</p><figure class="kg-card kg-image-card"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/11/image-32.png" class="kg-image" alt="" loading="lazy" width="1218" height="2002"></figure><p></p><p>Congratulations! You now have a working employee composition App. </p><h2 id="wrapping-up">Wrapping Up</h2><p>This project was a fun little way to express our values and I sure had fun on this project. But remember, nothing is set in stone and don't fret to add your own twist along the way. </p><p>Beyond Proxycurl's commitment to diversity, this project also serves an excellent example to what our API can do in terms of real-world use cases. Proxycurl’s API capabilities surpass just enriching employee and company data; it serves as powerful tools for applications requiring detailed professional insights. </p><p>Take the first step. Sign up for <a href="https://nubela.co/proxycurl/auth/register?ref=nubela.co" rel="noreferrer">Proxycurl</a> today!</p><div class="kg-card kg-toggle-card" data-kg-toggle-state="close">
            <div class="kg-toggle-heading">
                <h4 class="kg-toggle-heading-text"><span style="white-space: pre-wrap;">What does diversity cover?</span></h4>
                <button class="kg-toggle-card-icon" aria-label="Expand toggle to read content">
                    <svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"></path>
                    </svg>
                </button>
            </div>
            <div class="kg-toggle-content"><p><span style="white-space: pre-wrap;">A diverse workforce represents the </span><b><strong style="white-space: pre-wrap;">a vast</strong></b> <b><strong style="white-space: pre-wrap;">range of people.</strong></b><span style="white-space: pre-wrap;"> People with different nationalities, ethnicities, religions, people with disabilities, and both men and women. It also means valuing and cherishing those differences.</span></p></div>
        </div><div class="kg-card kg-toggle-card" data-kg-toggle-state="close">
            <div class="kg-toggle-heading">
                <h4 class="kg-toggle-heading-text"><span style="white-space: pre-wrap;">How do you align yourself with workplace diversity?</span></h4>
                <button class="kg-toggle-card-icon" aria-label="Expand toggle to read content">
                    <svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"></path>
                    </svg>
                </button>
            </div>
            <div class="kg-toggle-content"><p><span style="white-space: pre-wrap;">The best way you can align yourself with diversity is to highlight your policies and initiatives to support the cause. Share stories and represent your commitment by integrating visual tools that highlight your team’s composition. It’s a simple yet impactful way to celebrate diversity and share your values with your audience. </span></p></div>
        </div><div class="kg-card kg-toggle-card" data-kg-toggle-state="close">
            <div class="kg-toggle-heading">
                <h4 class="kg-toggle-heading-text"><span style="white-space: pre-wrap;">Why do I need an employee composition app?</span></h4>
                <button class="kg-toggle-card-icon" aria-label="Expand toggle to read content">
                    <svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"></path>
                    </svg>
                </button>
            </div>
            <div class="kg-toggle-content"><p><span style="white-space: pre-wrap;">A commitment to celebrate and embrace diversity is a big reason enough. But if you are looking for more practical use cases:</span></p><ul><li value="1"><b><strong style="white-space: pre-wrap;">For investors</strong></b><span style="white-space: pre-wrap;">: Track companies with rapid growth as investment signals.</span></li><li value="2"><b><strong style="white-space: pre-wrap;">For sales teams</strong></b><span style="white-space: pre-wrap;">: Identify potential leads based on hiring trends.</span></li><li value="3"><b><strong style="white-space: pre-wrap;">For marketers</strong></b><span style="white-space: pre-wrap;">: Monitor competitor strategies based on hiring patterns.</span></li></ul></div>
        </div><div class="kg-card kg-toggle-card" data-kg-toggle-state="close">
            <div class="kg-toggle-heading">
                <h4 class="kg-toggle-heading-text"><b><strong style="white-space: pre-wrap;">Can the app handle large companies with thousands of employees?</strong></b></h4>
                <button class="kg-toggle-card-icon" aria-label="Expand toggle to read content">
                    <svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"></path>
                    </svg>
                </button>
            </div>
            <div class="kg-toggle-content"><p><span style="white-space: pre-wrap;">Yes, the app supports pagination and retrieves data in batches to manage large datasets efficiently.</span></p></div>
        </div> ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ 30 (+1) Top Professional Social Network Scrapers for 2025 with Pros &amp; Cons ]]></title>
        <description><![CDATA[ 30+ best Professional Social Network scraping tools in 2025 for your data needs. Unlock Professional Social Network&#39;s database with our guide towards your business success. ]]></description>
        <link>https://nubela.co/blog/reviewing-top-linkedin-scraping-api-services/</link>
        <guid isPermaLink="false">62cbf703382e1600017a4397</guid>
        <category><![CDATA[ scraping tools ]]></category>
        <dc:creator><![CDATA[ Sese | Technical Writer ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/10/IMG_4677.jpeg"/>
        <pubDate>Tue, 03 Dec 2024 11:20:00 +0800</pubDate>
        <media:content url="" medium="image"/>
        <content:encoded><![CDATA[ <p>If you think Professional Social Network scraping is tough, it's because you are not equipped with the right tool. Professional Social Network has their own paid API, but it's not as simple as paying and getting what you need. You have to apply for access, go through an unreasonably long approval process, and even then chances are you might get rejected. If you do manage to secure API access by a miracle, the data you get is limited.</p>
<p>Fortunately, there are plenty of B2B data providers and Professional Social Network scrapers available. But with so many options, it's easy to feel overwhelmed. I mean, where do you even start looking?</p>
<p>I understand the conundrum. What you need is a thoughtfully curated list of Professional Social Network scrapers, categorized to tailor your specific needs, so you can easily pick the right tool for you.</p>
<p>Welcome to the only guide on Professional Social Network Scrapers you will ever need. In this article, I will go through:</p>
<ul>
<li>
<p>30+1 of the best LikedIn Scraping Tools in 2025; categorized based on their nature.</p>
</li>
<li>
<p>Pros and Cons of each scraper.</p>
</li>
<li>
<p>How do I find the best Professional Social Network Scraper?</p>
</li>
<li>
<p>Is Professional Social Network Scraping Legal?</p>
</li>
<li>
<p>My Recommendation (with explanation)</p>
</li>
<li>
<p>Final thoughts</p>
</li>
</ul>
<p>I'll start with an overview of all the Professional Social Network scraper categories. This will give you a clear roadmap of what to expect and help you find out which category best suits your needs.</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/12/Table-1.png" class="kg-image" alt="Infographic on Professional Social Network Scrapers, categorized with features and suitability " loading="lazy" width="1040" height="1711"><figcaption><span style="white-space: pre-wrap;">Professional Social Network Scrapers Categories with features and suitability </span></figcaption></figure><p>Now, let's look at each of our 31 entrants in the list. Each of these Professional Social Network scrapers are categorized and are weighed based on their price and free version availability.</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/12/Full-list-of-31-Professional Social Network-scrapers-in-categories.webp" class="kg-image" alt="Full list of Professional Social Network scrapers in categories" loading="lazy" width="1040" height="2401"><figcaption><span style="white-space: pre-wrap;">List of all 31 Professional Social Network scrapers categorized based on six major groups </span></figcaption></figure><h2 id="full-scaleenterprise-professional-social-network-scrapers">Full Scale/Enterprise Professional Social Network Scrapers</h2>
<p>These scrapers are designed to serve large corporations that require high-scale data extraction. Most of them are focused on detailed analytics, integrations with CRMs, lead generations and much more; everything to be a complete data solution for organizations.</p>
<h3 id="1-proxycurl">1. <a href="http://nubela.co/proxycurl?ref=nubela.co">Proxycurl</a></h3>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfdd9ogdtkTgrnt6eOluswOWfM5BEhG5EQFcFIZdNdWlH-umE4l2kkD_WRYRj_JbQvT4Zmql2zVGjq8rGY49TCZNAG3IyhGr1VYPrKgr8eKvxnKNX-u9wtoQlNhFDFmJ_GTpO23?key=zOWCgs-RYSeIo6J5EF_RSGON" alt="Proxycurl Landing page" loading="lazy"></p>
<p>The biggest reason you'd want to use Proxycurl is because it's an incredibly versatile API that's designed to be built into your existing systems and workflow. You won't need any VPNs, proxies, a rotating index of Professional Social Network accounts, or anything else. Proxycurl gives you access to rich B2B data from more data sources than just Professional Social Network.</p>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdcuheRDbGNif66tyfLKgNg4OFWkL41Mb3mzrf7GHAROwS3nTD2g1Xjsb3SiZ4y3Czq9GR6Ll6-r0LnpTayCSaE7O1Y1qXe9M8zNaqwWeXVb_zLfs6HVJBwvKRjQ7KPv8Mg4QxSbQ?key=zOWCgs-RYSeIo6J5EF_RSGON" alt="Proxycurl Dashboard" loading="lazy"></p>
<p>It is a developer-friendly platform, but the vast number of API endpoints are easy to use and incorporate. Plus, you have <a href="https://nubela.co/proxycurl/docs?ref=nubela.co">detailed documentation on each API</a> as a reference. I mean, what is a few pages of documentation to get access to all the B2B data you could ever possibly need on people and companies?</p>
<p>With a <a href="https://nubela.co/blog/how-fresh-are-profiles-returned-by-proxycurl-api/">data freshness guarantee</a>, you can be rest assured, you get the freshest data available. Better yet, you can use the use_cache=if-recent parameter that's available on our profile scraping-related endpoints, such as our <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#people-api-person-profile-endpoint">Person Profile Endpoint</a> or our <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#company-api-company-profile-endpoint">Company Profile Endpoint</a>.</p>
<p>Let me show you how easy it is to pull a freshly scraped and accurate personal profile from Professional Social Network using a simple Python script and our Person Profile Endpoint:</p>
<pre><code class="language-python">import requests
import json
api_key = 'Your_API_Key_Here'
headers = {'Authorization': 'Bearer ' + api_key}
api_endpoint = 'https://nubela.co/proxycurl/api/v2/Professional Social Network'
params = {
 'Professional Social Network_profile_url': 'https://www.professionalsocialnetwork.com/in/vickygill/',
 'extra': 'include',
 'github_profile_id': 'include',
 'facebook_profile_id': 'include',
 'twitter_profile_id': 'include',
 'personal_contact_number': 'include',
 'personal_email': 'include',
 'inferred_salary': 'include',
 'skills': 'include',
 'use_cache': 'if-recent',
 'fallback_to_cache': 'on-error',
}
response = requests.get(api_endpoint,
params=params,
headers=headers)

# Check if the request was successful
if response.status_code == 200:

 # Parse and print the content of the response in a formatted manner
    data = response.json()
    print(json.dumps(data, indent=4))
else:
    print(f"Error: {response.status_code}")
</code></pre>
<p>The script returns a scraped and enriched profile, that's fresh, and includes data points like:</p>
<ul>
<li>
<p>Full name</p>
</li>
<li>
<p>Work history</p>
</li>
<li>
<p>Salary expectations</p>
</li>
<li>
<p>Similar profiles</p>
</li>
<li>
<p>Education</p>
</li>
<li>
<p>A summary of the individual</p>
</li>
<li>
<p>Email</p>
</li>
<li>
<p>Phone number</p>
</li>
<li>
<p>And more.</p>
</li>
</ul>
<p>In fact, here's a full demo of using a few Proxycurl APIs with real-life use-cases (including one using ChatGPT to build personalized email), by our very own CEO, Steven.</p>
<figure class="kg-card kg-embed-card kg-card-hascaption"><iframe width="200" height="113" src="https://www.youtube.com/embed/koKwm1o6jUI?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen="" title="Proxycurl Demo - B2B data enrichment API and dataset"></iframe><figcaption><p><span style="white-space: pre-wrap;">Proxycurl APIs full demo</span></p></figcaption></figure><p>Alternatively, we also hold a publicly scraped Professional Social Network dataset, <a href="https://nubela.co/proxycurl/linkdb?ref=nubela.co">LinkDB</a>, a collection of over 492,805,659 (and increasing) Professional Social Network profiles (however, these profiles will not be as fresh as profiles enriched via our API - <a href="https://nubela.co/blog/how-often-is-linkdb-updated/">see how often is LinkDB updated</a>).</p>
<h4 id="proxycurl-pros">Proxycurl Pros</h4>
<ul>
<li>
<p>A plethora of B2B data, everything you could possibly need.</p>
</li>
<li>
<p>API crawls are dispatched on-demand and are made in real-time for the latest data.</p>
</li>
<li>
<p>Flexibility in data freshness.</p>
</li>
<li>
<p>High scale crawl, scraping about a million pages per day.</p>
</li>
<li>
<p>Affordable price plans.</p>
</li>
</ul>
<h4 id="proxycurl-cons">Proxycurl Cons</h4>
<ul>
<li>
<p>The API endpoints can be a bit intimidating for non-developers, and there might be a bit of a learning curve involved.</p>
</li>
<li>
<p>Businesses requiring extensive hands-on customization might need additional support.</p>
</li>
</ul>
<h4 id="proxycurl-pricing"><a href="http://nubela.co/proxycurl/pricing?ref=nubela.co">Proxycurl Pricing</a></h4>
<table>
<thead>
<tr>
<th style="text-align:center">Plans</th>
<th style="text-align:center">Details</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:center">Free</td>
<td style="text-align:center">10 credits on sign-up (100 credits on work email)</td>
</tr>
<tr>
<td style="text-align:center">Basic Paid</td>
<td style="text-align:center">$49/mo</td>
</tr>
<tr>
<td style="text-align:center">High-end Paid</td>
<td style="text-align:center">Starts from $2000/mo</td>
</tr>
</tbody>
</table>
<h3 id="2-a-hrefhttpphantombustercom-relnofollowphantombustera">2. <a href="http://phantombuster.com/?ref=nubela.co" rel="nofollow">PhantomBuster</a></h3>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdeKRwVXi3hz4a20AhSpu1JVH2pwFF2w9y7OpJq531L8qicZLd-v36pd9oeKaFZlRlw7er3M8xm56CgqsQh8xxtUbKdCfzSwQu6YokboEx02GYi8Te-kRs7xy60-mRvHt4U5d9kqw?key=zOWCgs-RYSeIo6J5EF_RSGON" alt="PhantomBuster Landing Page" loading="lazy"></p>
<p>A cloud-based scraping and automation tool that supports Professional Social Network among other platforms. PhantomBuster advertises itself as the platform for all things lead generation, without the need for any coding skills.</p>
<p>PhantomBuster allows scraping for both public and private data, but you have to use your own accounts to scrape for private data. Private profiles return additional data that you can't get from public profiles, but with its own limitations: Low rate limit and legal risk. Customers can only scrape 80 profiles per day before their account gets blocked by Professional Social Network.</p>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfPje7pxzVJY0gEve_e0B68DpfCpo2xo3ScxMsCitO_yr5ySxzRCEVtaCJKukwpmEGEgW_9DEwrqe1F1o5dcOYxzwx03flsIhMw0GtCohqsppQBRefDbaZ3UJLw3KqwdM0gcX4w?key=zOWCgs-RYSeIo6J5EF_RSGON" alt="PhantomBuster Dashboard" loading="lazy"></p>
<p>You get 5 'Phantom slots' on your free trial and for the starter plan, which can be bumped up to 50 if you subscribe to their highest tiered plan. A Phantom is a single automated action for a specific lead generation objective. A Flow is a set of these Phantoms that allow integrated lead generation sequences that save you time.</p>
<p>One of them is the Professional Social Network profile scraper:</p>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfWuI_J9CdqsUQb0Phryn9v4uWfur2C7xLavXzOyzsZb6GDwLr3D2tbryvJDmeXM44126R0RTNwsCPsxqOBt3v0aSZHcMDZeuHnaEAl9E9qQw4kf3uKmSPDL4cwnk7B8xTP0RaFaw?key=zOWCgs-RYSeIo6J5EF_RSGON" alt="PhantomBuster's Professional Social Network Profile Scraper" loading="lazy"></p>
<p>On it, you can submit a Professional Social Network profile or a desired list of profile URLs. The data it exports includes things like name, Professional Social Network profile URL, company, and beyond, but you'll have to use a separate Phantom, the email extractor, to get an email address.</p>
<h4 id="phantombuster-pros">PhantomBuster Pros</h4>
<ul>
<li>
<p>Supports automation on repetitive tasks.</p>
</li>
<li>
<p>Supports business scaling by providing valuable insights through data analysis.</p>
</li>
<li>
<p>Supports integration with multiple platforms.</p>
</li>
</ul>
<h4 id="phantombuster-cons">PhantomBuster Cons</h4>
<ul>
<li>
<p>Overcompensating UI; it can get super confusing.</p>
</li>
<li>
<p>Only supports Hubspot, and limited options for other CRMs.</p>
</li>
<li>
<p>Rate-limiting issues for high-volume operations</p>
</li>
<li>
<p>Unable to bypass Professional Social Network's limit or connection invite restrictions.</p>
</li>
<li>
<p>Safety concerns as Phantom Buster requires you to download a Chrome extension and access your cookies to enter Professional Social Network.</p>
</li>
</ul>
<h4 id="a-hrefhttpphantombustercompricing-relnofollowphantombuster-pricinga"><a href="http://phantombuster.com/pricing?ref=nubela.co" rel="nofollow">PhantomBuster Pricing</a></h4>
<table>
<thead>
<tr>
<th style="text-align:center">Plans</th>
<th style="text-align:center">Details</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:center">Free Trial</td>
<td style="text-align:center">2hrs execution time, 1k AI credits</td>
</tr>
<tr>
<td style="text-align:center">Basic Paid</td>
<td style="text-align:center">$56/mo</td>
</tr>
<tr>
<td style="text-align:center">High-End Paid</td>
<td style="text-align:center">$352/mo</td>
</tr>
</tbody>
</table>
<h3 id="3-a-hrefhttpswwwpeopledatalabscom-relnofollowpeople-data-labsa">3. <a href="https://www.peopledatalabs.com/?ref=nubela.co" rel="nofollow">People Data Labs</a></h3>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfPTAw8bHvo9TzGcMO7HBOYm2Gzs63aUEP7UC8QR3rAJi37DIh_nh0iw1BDq_pUYFC6Uud2jvbnAYMyW4q9c8mF5bRauJtuTIQPEwjftXjhBY-kbL7jpiMhdVf3jFMW8n76edcu?key=zOWCgs-RYSeIo6J5EF_RSGON" alt="People Data Labs Landing Page" loading="lazy"></p>
<p>A big player in the data solutions market, People Data Labs (PDL) is geared toward large-scale businesses that require enriched data for analytics, hiring, or marketing. It scrapes public Professional Social Network data and works with third-party partners to get private data. Then it packages this data into datasets that customers can call using APIs.</p>
<h4 id="people-data-labs-pros">People Data Labs Pros</h4>
<ul>
<li>
<p>Large datasets on multiple data points.</p>
</li>
<li>
<p>Tier based scalable solutions for different levels of enterprises.</p>
</li>
<li>
<p>Plug-and-play model allows for immediate consumption.</p>
</li>
</ul>
<h4 id="people-data-labs-cons">People Data Labs Cons</h4>
<ul>
<li>
<p>Even if there are different tiers, it's hardly affordable for small businesses and startups.</p>
</li>
<li>
<p>Data freshness is a big issue, as they offer pre-collected data updated monthly by default.</p>
</li>
</ul>
<h4 id="a-hrefhttpswwwpeopledatalabscompricingperson-relnofollowpeople-data-labs-pricinga"><a href="https://www.peopledatalabs.com/pricing/person?ref=nubela.co" rel="nofollow">People Data Labs Pricing</a></h4>
<table>
<thead>
<tr>
<th style="text-align:center">Plans</th>
<th style="text-align:center">Details</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:center">Free</td>
<td style="text-align:center">Up to 100 records</td>
</tr>
<tr>
<td style="text-align:center">Basic Paid</td>
<td style="text-align:center">$98/mo</td>
</tr>
<tr>
<td style="text-align:center">High-end Paid</td>
<td style="text-align:center">Custom Pricing</td>
</tr>
</tbody>
</table>
<p><em><strong>Note:</strong> You cannot sign up with a personal email. Signups are only validated using work emails, making it tough to get a free trial.</em></p>
<h3 id="4-a-hrefhttpswwwzoominfocom-relnofollowzoominfoa">4. <a href="https://www.zoominfo.com/?ref=nubela.co" rel="nofollow">ZoomInfo</a></h3>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfBubNEwBKTbCAyBjMCa24IS04oE5GbKSWzLiryKlm8VE5zA-0vt2m_JLmejsjFTX6KgtHqq4aHDmefmZ1LXz9Wtyt4X5EIfWpSDzXH58C-B_nLk-u5R7-T_Ox9Jx-MdMcgccHkgA?key=zOWCgs-RYSeIo6J5EF_RSGON" alt="ZoomInfo Landing Page" loading="lazy"></p>
<p>While not exactly a Professional Social Network Scraper, Zoominfo leverages data from Professional Social Network to provide company and individual data. Like most in this list, it deals with B2B data; extensive company and contact information, and is equipped with advanced search capabilities and integration options.</p>
<h4 id="zoominfo-pros">ZoomInfo Pros</h4>
<ul>
<li>
<p>Supports integration with CRM platforms and workflow automation.</p>
</li>
<li>
<p>Provides a granular view with advanced search options, along with intent data.</p>
</li>
</ul>
<h4 id="zoominfo-cons">ZoomInfo Cons</h4>
<ul>
<li>
<p>Not ideal for developers looking for customizable scraping solutions.</p>
</li>
<li>
<p>Expensive plans, suitable for organizations with larger budgets.</p>
</li>
</ul>
<h4 id="a-hrefhttpswwwzoominfocompricing-relnofollowzoominfo-pricinga"><a href="https://www.zoominfo.com/pricing?ref=nubela.co" rel="nofollow">ZoomInfo Pricing</a></h4>
<p>Their pricing information is not publicly available. It is a trend for some data solution providers, even though I personally feel it's more of a bother. After some research, I found out their plan starts from $14,995/ year.</p>
<h3 id="5-a-hrefhttpsbusinessprofessionalsocialnetworkcomsales-solutionssales-navigator-relnofollow-professional-social-network-sales-navigator-apia">5. <a href="https://business.professionalsocialnetwork.com/sales-solutions/sales-navigator?ref=nubela.co" rel="nofollow"> Professional Social Network Sales Navigator API</a></h3>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXc_IH90NAif6vrxSiOU6gY3mK27cacHHoi6X2EOhFt6YaV8gKQ87CRWbKseLBm8B39RYSNX1B60-9v_sRN32psVdWdMQZj6TR4vIMDCIMhqUZZWVPiExqc5sN3mH8YRW1M-dRncqQ?key=zOWCgs-RYSeIo6J5EF_RSGON" alt="Professional Social Network Sales Navigator Landing Page" loading="lazy"></p>
<p>Like I prefaced earlier, Professional Social Network has their very own paid API that grants access to Professional Social Network's network and professional data.</p>
<p>So why not just use that? You can't! You have to file an application for access with details on how you're going to use the data. Once you have applied, it goes through an approval process. Professional Social Network carefully reviews API access applications to ensure they align with their guidelines and terms of service. The approval process can take several weeks, and there is no guarantee you will be approved.</p>
<div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">💡</div><div class="kg-callout-text">If you want to learn more, check out this article on <a href="https://nubela.co/blog/access-Professional%20Social%20Network-sales-navigator-api-guide/">How I Accessed Professional Social Network Sales Navigator API</a>.</div></div><h4 id="professional-social-network-sales-navigator-api-pros">Professional Social Network Sales Navigator API Pros</h4>
<ul>
<li>
<p>Allows fetching real-time data and enrich your platform.</p>
</li>
<li>
<p>Supports data syncing of newly fetched data with your existing customer information.</p>
</li>
<li>
<p>Advanced search options with numerous fields filters.</p>
</li>
</ul>
<h4 id="professional-social-network-sales-navigator-api-cons">Professional Social Network Sales Navigator API Cons</h4>
<ul>
<li>
<p>Lengthy approval process, hard to get access</p>
</li>
<li>
<p>Harsh rate limits.</p>
</li>
<li>
<p>Expensive venture, need an active subscription to access.</p>
</li>
</ul>
<h4 id="a-hrefhttpsbusinessprofessionalsocialnetworkcomsales-solutionscompare-plans-relnofollowprofessional-social-network-sales-navigator-api-pricinga"><a href="https://business.professionalsocialnetwork.com/sales-solutions/compare-plans?ref=nubela.co" rel="nofollow">Professional Social Network Sales Navigator API Pricing</a></h4>
<p>Pricing for the API is not publicly disclosed and requires direct negotiation with Professional Social Network, depending on the intended use case and volume of data access. The most common pricing reference you can get online is $99/person/mo.</p>
<h3 id="6-a-href-httpszoptocom-relnofollowzoptoa">6. <a href="https://zopto.com/?ref=nubela.co" rel="nofollow">Zopto</a></h3>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfd_CfTbFBv7FXxgSObDnO1kTwjuHMSQBAcJsSGTmYRMbElGRxAab2-6AdzLF-c9Jir-ckmY4LROaJm9gfK4GmDfrOFZqA9GSO5jmCAXPBSv1cdH72Rn9GsmcvJ1jvwo3vNG-SeNA?key=zOWCgs-RYSeIo6J5EF_RSGON" alt="Zopto Landing Page" loading="lazy"></p>
<p>A Professional Social Network automation and scraping tool designed for omni-channel outreach, Zopto is everything they advertise. With Zopto you can create multi-step campaigns with automated connection requests, follow-up messages, and InMail responses to nurture leads over time.</p>
<p>It is the perfect tool if you're looking to scale your Professional Social Network outreach while maintaining a degree of personalization.</p>
<h4 id="zopto-pros">Zopto Pros</h4>
<ul>
<li>
<p>Supports integration with Professional Social Network Sales Navigator</p>
</li>
<li>
<p>Simple and easy to follow UI</p>
</li>
<li>
<p>Supports integration with GPT</p>
</li>
</ul>
<h4 id="zopto-cons">Zopto Cons</h4>
<ul>
<li>
<p>Automated campaigns pose risk triggering Professional Social Network's anti-automation policies</p>
</li>
<li>
<p>Steep pricing for small businesses or individual users.</p>
</li>
</ul>
<h4 id="a-hrefhttpszoptocompricing-relnofollowzopto-pricinga"><a href="https://zopto.com/pricing/?ref=nubela.co" rel="nofollow">Zopto Pricing</a></h4>
<table>
<thead>
<tr>
<th style="text-align:center">Plans</th>
<th style="text-align:center">Details</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:center">Free</td>
<td style="text-align:center">No Free Trials ❌</td>
</tr>
<tr>
<td style="text-align:center">Basic Paid</td>
<td style="text-align:center">$197/person/mo</td>
</tr>
<tr>
<td style="text-align:center">High-end Paid</td>
<td style="text-align:center">$237/person/mo</td>
</tr>
</tbody>
</table>
<h2 id="open-source-professional-social-network-scrapers">Open-Source Professional Social Network Scrapers</h2>
<p>If you are a developer, this might be your category of choice. The public projects in Github are an excellent choice to look for sources that are free to use and customizable. These are ready-to-use tools usually built by independent developers and come with varying levels of documentation and community support.</p>
<p>But 'free' is not truly free. Open source Professional Social Network Scrapers offer flexible modifications and are free, but it demands a lot of your time and requires technical expertise.</p>
<p>Those who are up for the challenge, I present to you a list of some projects that I deem are perfect for Professional Social Network scraping.</p>
<h3 id="7-professional-social-networkscraper-by-joeyism">7. <a href="https://github.com/joeyism/Professional%20Social%20Network_scraper?ref=nubela.co"><code>Professional Social Network_Scraper</code> by joeyism</a></h3>
<p>[Professional Social Network_Scraper](<a href="https://github.com/joeyism/Professional?ref=nubela.co">https://github.com/joeyism/Professional</a> Social Network_scraper?ref=nubela.co) is designed to automate the extraction of data from Professional Social Network user and company profiles. It is proudly sponsored by <a href="http://nubela.co/proxycurl/?ref=nubela.co">Proxycurl</a>, as a tip of the hat to the developers' spirit and ingenuity. It is one of the reasons the repository is still free.</p>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfpC18ILCwANRJC5xbAOmZCpYo-bKOxBqaXni-_5Xi5sdDk5FahcNdx_UgI3MB4LKnDPyNQxuCTWF1FwdpQMsxQcfrQQc2da9yANkFhrSfuFYQQOt0J_RF8ed_BUgIkaSU8S5AV?key=zOWCgs-RYSeIo6J5EF_RSGON" alt="Professional Social Network_Scraper Github Repository" loading="lazy"></p>
<p>Professional Social Network_Scraper makes the process of scraping Professional Social Network with Python so much easier. How?</p>
<p>Let me show you.</p>
<p>Install the Python library by running the following command:</p>
<p><code>pip3 install --user Professional Social Network_scraper</code></p>
<p>After installing the library, here's an example of how you can scrape a person's profile:</p>
<pre><code class="language-python">from Professional Social Network_scraper import Person, actions
from selenium import webdriver
driver = webdriver.Chrome()
email = "some-email@email.address"
password = "password123"
actions.login(driver, email, password) # if email and password isnt given, it'll prompt in terminal
person = Person("https://www.professionalsocialnetwork.com/in/joey-sham-aa2a50122", driver=driver)
</code></pre>
<p>And that's how you do it! Be advised, you still have to circumvent Professional Social Network's blocking policies. I could tell you how we do it here at Proxycurl but then I'll have to silence you, and I want us to be friends so..... good luck on that!</p>
<h4 id="professional-social-networkscraper-pros">Professional Social Network_Scraper Pros</h4>
<ul>
<li>
<p>Absolutely Free.</p>
</li>
<li>
<p>Doesn't require a Professional Social Network login or API access.</p>
</li>
</ul>
<h4 id="professional-social-networkscraper-cons">Professional Social Network_Scraper Cons</h4>
<ul>
<li>
<p>It's not a one time setup. It is continuous work and you'll need to frequently update the scraper if Professional Social Network changes its page structure.</p>
</li>
<li>
<p>You have to parse HTML manually and navigate the complexities of DOM trees.</p>
</li>
</ul>
<h3 id="8-professional-social-network-api-by-tomquirk">8. <a href="https://github.com/tomquirk/Professional%20Social%20Network-api?ref=nubela.co"><code>Professional Social Network-API</code> by tomquirk</a></h3>
<p>Another feature scraper brought to you by yours truly is the Professional Social Network-API by Tomquirk. A highly favored tool among developers for its flexible, code-based approach to scraping Professional Social Network profiles, job listings, and more.</p>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXeGGuwV3m6d7Qc7RmfPE9dX-0oM6bOEj2jd6RBNjyTn7f7_NXI-8lm9II0hrBKAog456iC2OtZah0IrCuj0uWxyxnVuto-lwlp6VoauCTsttUOskmpXUmIOMtipxX0snZeMuN-A?key=zOWCgs-RYSeIo6J5EF_RSGON" alt="Professional Social Network-API Github Repository" loading="lazy"></p>
<p>Let me show you how you can pull up a Professional Social Network profile through this tool using Python.</p>
<p>First, install the Professional Social Network API package.<br>
<code>pip install Professional Social Network-api</code></p>
<p>Then, authenticate your Professional Social Network account using email and password (use this responsibly to comply with Professional Social Network's terms of service).</p>
<pre><code class="language-python">from Professional Social Network_api import Professional Social Network
# Authenticate with your Professional Social Network credentials
api = Professional Social Network('your_email@example.com', 'your_password')

</code></pre>
<p>Fetch a person's Professional Social Network profile data using their public profile URL or unique identifier.</p>
<pre><code class="language-python"># Example of extracting a profile
profile = api.get_profile('Sese-Limbu-12345')&nbsp; # Replace with the Professional Social Network username or profile ID
print(profile)

</code></pre>
<p>What you get is a clean and structured output in JSON format.</p>
<pre><code class="language-json">{
    "firstName": "Sese",
    "lastName": "Limbu",
    "headline": "Technical Writer at Proxycurl",
    "location": "Vancouver, BC",
    "industry": "Information Technology",
    "summary": "Super cool guy with an innate hunger for personal growth.",
    "experience": [
        {
            "title": "Technical Writer",
            "company": "XYZ Corp",
            "duration": "3 years"
        },
        {
            "title": "Intern",
            "company": "ABC Inc.",
            "duration": "6 months"
        }
    ],
    "education": [
        {
            "degree": "Bachelors in Business Administration",
            "institution": "Kathmandu University School of Management",
            "year": "2021"
        }
    ]
}
</code></pre>
<p>By the way, <a href="http://nubela.co/proxycurl/?ref=nubela.co">Proxycurl</a> is sponsoring this one too! As a developer-focused company, we are just trying to look after the community. Enjoy!</p>
<h4 id="professional-social-network-api-pros">Professional Social Network-API Pros</h4>
<ul>
<li>
<p>Clean and structured JSON output.</p>
</li>
<li>
<p>No parsing required.</p>
</li>
</ul>
<h4 id="professional-social-network-api-cons">Professional Social Network-API Cons</h4>
<ul>
<li>
<p>Requires Professional Social Network credentials, risking account suspension.</p>
</li>
<li>
<p>Limited to what the API endpoints provide access to.</p>
</li>
</ul>
<h3 id="9-a-hrefhttpsgithubcomrosstripilinkscrape-relnofollowlinkscrape-by-rosstripia">9. <a href="https://github.com/rosstripi/linkScrape?ref=nubela.co" rel="nofollow"><code>LinkScrape</code> by rosstripi</a></h3>
<p>LinkScrape is another open source Professional Social Network scraper, designed to scrape employee names from Professional Social Network using company search results. It operates entirely on the command line, leveraging Python libraries like <code>beautifulsoup4</code> and <code>lxml</code> to parse Professional Social Network's front-end, without using the official API.</p>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfB1sN2prWTkRj8KsSKgAfV8ARVh9FEbvk3CbVCxiBfy3oHBb2heG1wTsvWkyKKbGpJohU9mE5ywZXda65Jv_2wwAeae0OPB6xjR02E3VLD0okybbhLEaPB1emOe_9FZxm3V4eF_g?key=zOWCgs-RYSeIo6J5EF_RSGON" alt="LinkScrape GitHub Repository" loading="lazy"></p>
<p>Here's <strong>how you can scrape Professional Social Network using LinkScrape</strong>.</p>
<p>Since the tool is primarily focused on employee enumeration, let's go ahead and see how we can pull that data.</p>
<p>Start by cloning the LinkScrape repository from GitHub to your local environment.</p>
<pre><code class="language-python">git clone https://github.com/rosstripi/LinkScrape.git
cd LinkScrape
</code></pre>
<p>Then, install the necessary Python libraries specified in the <code>requirements.txt</code> file in the repository.</p>
<p><code>pip install -r requirements.txt</code><br>
Remember, you will need valid Professional Social Network session cookies. Obtain your session cookie <code>li_at</code> from your browser and configure it in the script.</p>
<p>Now, get your target's Professional Social Network company profile URL and run the script.</p>
<pre><code class="language-python">from linkscrape import Professional Social NetworkScraper
# Initialize scraper with your Professional Social Network cookie
scraper = Professional Social NetworkScraper("your_li_at_cookie")
# Extract employee data
company_url = "https://www.professionalsocialnetwork.com/company/apple/"
employee_data = scraper.scrape_employees(company_url)
# Print results
for employee in employee_data:
    print(f"Name: {employee['name']}, Position: {employee['position']}")
</code></pre>
<p>What you get is a structured output in JSON format.</p>
<pre><code class="language-json">[
    {
        "name": "Claire Spencer",
        "position": "Marketing Manager"
    },
    {
    "name": "Ahmed Mansoor",
    "position": "Software Engineer"
    },
    {
        "name": "Carla Jensen",
        "position": "HR Specialist"
    }
    ]
</code></pre>
<h4 id="linkscrape-pros">LinkScrape Pros</h4>
<ul>
<li>Targeted scraping; Designed for company-based scraping rather than broad profile searches.</li>
</ul>
<h4 id="linkscrape-cons">LinkScrape Cons</h4>
<ul>
<li>
<p>Targeted scraping yes, so it makes the tool limited.</p>
</li>
<li>
<p>LinkScrape lacks the extensive session handling of other tools, which might result in faster session expirations.</p>
</li>
<li>
<p>With fewer users and contributors, troubleshooting and enhancements may take longer compared to more established open-source projects like Professional Social NetworkScraper.</p>
</li>
</ul>
<h3 id="10-a-hrefhttpsgithubcomtufayellusprofessional-social-network-scraper-relnofollowprofessional-social-network-scraper-by-tufayellusa">10. <a href="https://github.com/TufayelLUS/Professional%20Social%20Network-Scraper?ref=nubela.co" rel="nofollow"><code>Professional Social Network-Scraper</code> by TufayelLUS</a></h3>
<p>The last entry for this category is Professional Social Network-Scraper by TufayelLUS. A scraper designed for extracting detailed Professional Social Network profile data. Unlike tools like LinkScrape or Professional Social Network-API by TomQuirk, TufayelLUS Scraper excels at extracting specific skill details and endorsements. This makes it ideal for talent acquisition or workforce skill analysis.</p>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdzLPufcsL2AY8JzyyAr0q0TLkNo-hYZ0wgjCA77cQotA0irY1kxj6urLv0Odt5J-pOI-Pf7Ks2cjiuLXMeczGKWdBDFT6HiaoQLkKn-CofjuRaaicWkPbZdaeiLKdI0_EYyj2iQQ?key=zOWCgs-RYSeIo6J5EF_RSGON" alt="LikedIn-Scraper GitHub Repository" loading="lazy"></p>
<p>Let's go through how you can extract data using this scraper.</p>
<p>First, clone the GitHub repository and install the required dependencies via <code>pip install -r requirements.txt.</code></p>
<p>Then, log into Professional Social Network and retrieve the <code>li_at</code> cookie from your browser's developer tools. Update the configuration file or pass the cookie directly when running the script.</p>
<p>Now, use the command line to specify the type of data you want to scrape. For today, I will show you how to scrape an individual profile.</p>
<pre><code class="language-python">from tufayel_scraper import Professional Social NetworkScraper
# Initialize the scraper
scraper = Professional Social NetworkScraper(li_at="your_li_at_cookie")
# Scrape a specific profile
profile_data = scraper.get_profile("https://www.professionalsocialnetwork.com/in/example-profile/")
print(profile_data)
</code></pre>
<p>The output generated is in JSON and containing fields like</p>
<ul>
<li>
<p>Full name</p>
</li>
<li>
<p>Job title and company</p>
</li>
<li>
<p>Education history</p>
</li>
<li>
<p>Skills and endorsements</p>
</li>
</ul>
<h4 id="professional-social-network-scraper-pros">Professional Social Network-Scraper Pros</h4>
<ul>
<li>
<p>Supports scraping jobs and company pages in addition to individual profiles, offering more functionality than narrower tools like LinkScrape.</p>
</li>
<li>
<p>Robust HTML parsing techniques, minimizing errors in capturing structured data.</p>
</li>
</ul>
<h4 id="professional-social-network-scraper-cons">Professional Social Network-Scraper Cons</h4>
<ul>
<li>
<p>Depends heavily on the li_at cookie; frequent session expirations can be expected.</p>
</li>
<li>
<p>TufayelLUS Scraper has a smaller community resulting in slow troubleshooting or enhancement requests.</p>
</li>
<li>
<p>No built-in rotation for proxies or accounts; scraping larger volumes of data may lead to faster bans.</p>
</li>
</ul>
<h2 id="browser-extension-professional-social-network-scrapers">Browser Extension Professional Social Network Scrapers</h2>
<p>Browser extension Professional Social Network scrapers are an ideal option if you're working alone or in a small team. They're lightweight, easy to set up, require no advanced technical skills, and deliver quick results.</p>
<h3 id="11-a-hrefhttpsevabootcom-relnofollowevaboota">11. <a href="https://evaboot.com/?ref=nubela.co" rel="nofollow">Evaboot</a></h3>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXc9mrMlhQvh0xwxkXfvjwKVQafXhb3AbpZ_4f4LuIqocTao_fSixr8pvNgzzlBzl1VflLQ52wvdOU_AaNbmPE7f4bWHeUGBE4P_XbD3Jgf-I_pzSEHkGgtsZZVLGYAPdlxK9RnI8A?key=zOWCgs-RYSeIo6J5EF_RSGON" alt="Evaboot Lnading Page" loading="lazy"></p>
<p>Evaboot is an extension based Professional Social Network scraper that requires a [Professional Social Network Sales Navigator](<a href="https://nubela.co/blog/what-is-the-Professional">https://nubela.co/blog/what-is-the-Professional</a> Social Network-sales-navigator/) subscription.</p>
<p>Once you install the extension, you can perform Sales Navigator searches and then export the data back to Evaboot.</p>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcOc_ERBuL0Sgj90erKd5xSRcUgZQP5PPAvRDDQQRP26OHM7_znHwMM0joK1EdoPaqkgwGrtY9aCQjgiIHf6Uzw9sut5ViHJToynO07PCl2WwthuPxL9_vP-VIBQseBF8beQRiBIA?key=zOWCgs-RYSeIo6J5EF_RSGON" alt="Evaboot Dashboard" loading="lazy"></p>
<p>They export data points like full name, company, role, Professional Social Network profile URL, and then they have an additional feature to obtain email addresses.</p>
<h4 id="evaboot-pros">Evaboot Pros</h4>
<ul>
<li>Great documentation and tutorials to assist new users.</li>
</ul>
<h4 id="evaboot-cons">Evaboot Cons</h4>
<ul>
<li>
<p>Requires Professional Social Network Sales Navigator access.</p>
</li>
<li>
<p>Credit-based system for emails and exporting data.</p>
</li>
<li>
<p>Restricted to data scraping only, with no additional automation features.</p>
</li>
</ul>
<h4 id="a-hrefhttpsevabootcompricing-relnofollowevaboot-pricinga"><a href="https://evaboot.com/pricing?ref=nubela.co" rel="nofollow">Evaboot Pricing</a></h4>
<p>Evaboot has both subscription and one time payment plans.</p>
<p>They also have a credit system, in which:</p>
<ul>
<li>
<p>1 export credit = Professional Social Network profile + company data</p>
</li>
<li>
<p>1 email credit = email search + verification</p>
</li>
</ul>
<p>You can opt for buying as low as 100 credits for just $9. Or go up to 50,000 credits at $499.</p>
<h3 id="12-a-hrefhttpsmeetalfredcom-relnofollowmeetalfreda">12. <a href="https://meetalfred.com/?ref=nubela.co" rel="nofollow">MeetAlfred</a></h3>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdMaWLNyl8Pj0yZ6185xtQRosuAVL7i-EE1nWS9JFnL1zO6K2c16wFMGbmsh05jKR22on7A8YDov-8yiBCjYBUn_DvYhB9a7rCuit3ZuG9L9sSPN3stYOJ-9OSA4pBTMkpHWDfb?key=zOWCgs-RYSeIo6J5EF_RSGON" alt="MeetAlfred Landing Page" loading="lazy"></p>
<p>For whatever reason, Meet Alfred refused to successfully link with my Professional Social Network. Not a great first impression.</p>
<p>The silver lining is Meet Alfred doesn't require a Google Chrome plugin like the others. It just relies on one central dashboard and offers a couple of options for scraping Professional Social Network:</p>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXetCC_oHwWYaUfe86ln9AKHKuXC3Akkr_j1GAdx0_Oyl9HP5VRCQo85aB7PakNXmvjTaALLmtOTVxPkURINItFrQ3Pr5VU2pm65AdVpqEYYI2UACMTSu6So9DQgk-iH_4Tq3QHinw?key=zOWCgs-RYSeIo6J5EF_RSGON" alt="MeetAlfred's Professional Social Network Scraper" loading="lazy"></p>
<p>So, for example, you could specify a search URL, or input your own specified search query:</p>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXePAlJfolCcW0fJFXrbrCqkpPB1BMNzfag1VYngUSkMsyWuxqSoizn3SorbxkyGxycqMUqg-UbYWqElPcyCGjzcSxlCSkwkuDiokfRpv8lTD2hh-c5BU1DJf9r3biKJTjECfk-M-A?key=zOWCgs-RYSeIo6J5EF_RSGON" alt="MeetAlfred Extention" loading="lazy"></p>
<p>Afterwards you could conduct outreach campaigns or export the scraped profiles which includes data points like name, phone number, and email.</p>
<h4 id="meet-alfred-pros">Meet Alfred Pros</h4>
<ul>
<li>
<p>Provides a variety of ways to search for Professional Social Network profiles.</p>
</li>
<li>
<p>Pretty simple UI.</p>
</li>
</ul>
<h4 id="meet-alfred-cons">Meet Alfred Cons</h4>
<ul>
<li>Focus more on omnichannel outreach rather than scraping Professional Social Network profiles (it wants you to keep the data in-house).</li>
</ul>
<h4 id="a-hrefhttpsmeetalfredcompricing-relnofollowmeet-alfred-pricinga"><a href="https://meetalfred.com/pricing?ref=nubela.co" rel="nofollow">Meet Alfred Pricing</a></h4>
<table>
<thead>
<tr>
<th style="text-align:center">Plans</th>
<th style="text-align:center">Details</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:center">Free</td>
<td style="text-align:center">14 Days Free Trial ✅</td>
</tr>
<tr>
<td style="text-align:center">Basic Paid</td>
<td style="text-align:center">$59/person/mo</td>
</tr>
<tr>
<td style="text-align:center">High-end Paid</td>
<td style="text-align:center">$99/person/mo</td>
</tr>
</tbody>
</table>
<h3 id="13-a-hrefhttpsoctopuscrmio-relnofollowoctopus-crma">13. <a href="https://octopuscrm.io/?ref=nubela.co" rel="nofollow">Octopus CRM</a></h3>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdPw2SML6Yq58nKw7I7QEUqyHu_sFI436lnStt2s7WYQU1NxJ2Orv5tFy3Xw4vohob06MruiMhHPIH7SOZnRtyXZLQiIHOdU9cxfoGU-MW5gUmRuR8BJmJ_6Mlnicj0i_cn_QSaAg?key=zOWCgs-RYSeIo6J5EF_RSGON" alt="Octopus CRM Landing Page" loading="lazy"></p>
<p>Octopus CRM advertise themselves as "the all-in-one Professional Social Network automation tool". Bold claim for a Professional Social Network scraper operating using Google extension. But on closer inspection, it's actually not very hard to extract data.</p>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdK0JbQ684cUYtwQ0ZYaS23du4IVY-BOpZRsrTTNu7H2h28sbpooWf0wguFBdg0oBLE9dun12tBYgFSjEvYTvWeeDH_m2-sWyuP7fG3Z0OEyNhvpuTMHCC9GjJ0CXTuHz5kexrM?key=zOWCgs-RYSeIo6J5EF_RSGON" alt="Octopus CRM extention" loading="lazy"></p>
<p>But like with other extension based scrapers, the primary purpose seems to be more on Professional Social Network marketing and outreach than Professional Social Network scraping. That said, there is a provision to export emails and phone numbers into a .CSV file.</p>
<h4 id="octopus-crm-pros">Octopus CRM Pros</h4>
<ul>
<li>
<p>Supports integration with just about any tool.</p>
</li>
<li>
<p>Pricing is on the cheaper side.</p>
</li>
</ul>
<h4 id="octopus-crm-cons">Octopus CRM Cons</h4>
<ul>
<li>
<p>Hyper-simplistic UI.</p>
</li>
<li>
<p>Higher priority towards outreach than scraping or exporting data.</p>
</li>
</ul>
<h4 id="a-hrefhttpsoctopuscrmio-relnofollowoctopus-crm-pricinga"><a href="https://octopuscrm.io/?ref=nubela.co" rel="nofollow">Octopus CRM Pricing</a></h4>
<table>
<thead>
<tr>
<th style="text-align:center">Plans</th>
<th style="text-align:center">Details</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:center">Free</td>
<td style="text-align:center">7 Day Free Trial ✅</td>
</tr>
<tr>
<td style="text-align:center">Basic Paid</td>
<td style="text-align:center">$9.99/mo</td>
</tr>
<tr>
<td style="text-align:center">High-end Paid</td>
<td style="text-align:center">$39.99/mo</td>
</tr>
</tbody>
</table>
<h3 id="14-a-hrefhttpswwwwaalaxycom-relnofollowwaalaxya">14. <a href="https://www.waalaxy.com/?ref=nubela.co" rel="nofollow">Waalaxy</a></h3>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXf2CVSOwY6YjFFIilde9bM30S0kxDTTgGnI_Y9zkuK6qtSx4c0Yj-NOChWdoW1viVcyWzekIlyr7r1VGfrE089bS2Gv9CAnLQ5tL0url1jds4Iukd9S9aKBSyKSmfhkQ3B1vt5P-g?key=zOWCgs-RYSeIo6J5EF_RSGON" alt="Waalaxy Landing Page" loading="lazy"></p>
<p>Waalaxy is a freely downloadable Professional Social Network scraper that works through Google Chrome extension. The free version allows you to send 80 invitations per week, but that means 80 messages, 80 visits, 80 follows and 80 message requests.</p>
<p>After enabling, all you have to do is perform a person search on Professional Social Network, so, for example, I searched "SaaS founders" and then exported the data:</p>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdZE-0hce_HrpSeY9pBw5WNFdZ6Bi9eMIQqmcPNV-hNs6CKDWp9begqqFt8AB8QytThhQe0m1p8nEdDwX2hUCw7Zi2o8hAu016DCg81hrhTL4CzgDBlBIkUQS8X-gGs09oRqkOf?key=zOWCgs-RYSeIo6J5EF_RSGON" alt="Waalaxy Browser Extention" loading="lazy"></p>
<p>The data then goes over to the Waalaxy dashboard through the chrome extension:</p>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdKDXS2ne5PxPdTAGS2v4A1BO7mTm77o2PK54aezOPWO2GLGYCCMm5piPK-V0vx8SWScB1nTBL0qsTFx-yT30qGzrdsvuRT3DKw3kQ4TC9lXwyCYC7FlGmfmgMuHz3AKLTBKCHXiA?key=zOWCgs-RYSeIo6J5EF_RSGON" alt="Waalaxy Dashboard" loading="lazy"></p>
<p>After that, you can export the desired profiles in a similar fashion to Evaboot. However, I will admit the data isn't very rich. It's mostly just name, role, Professional Social Network profile URL, and then some contact information.</p>
<h4 id="waalaxy-pros">Waalaxy Pros</h4>
<ul>
<li>
<p>Beginner friendly UI, almost too simple.</p>
</li>
<li>
<p>Inbox management system</p>
</li>
<li>
<p>Affordable pricing tiers</p>
</li>
</ul>
<h4 id="waalaxy-cons">Waalaxy Cons</h4>
<ul>
<li>
<p>Hardly any useful data is extracted. More for outreach rather than extracting data from Professional Social Network.</p>
</li>
<li>
<p>Simple yes, but too simple. Barely basic scraping functionalities compared to dedicated scrapers.</p>
</li>
</ul>
<h4 id="a-hrefhttpswwwwaalaxycompricing-relnofollowwaalaxy-pricinga"><strong><a href="https://www.waalaxy.com/pricing/?ref=nubela.co" rel="nofollow">Waalaxy pricing</a></strong></h4>
<table>
<thead>
<tr>
<th style="text-align:center">Plans</th>
<th style="text-align:center">Details</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:center">Free</td>
<td style="text-align:center">Free Trial (80 invites/mo)</td>
</tr>
<tr>
<td style="text-align:center">Basic paid</td>
<td style="text-align:center">$59/mo</td>
</tr>
<tr>
<td style="text-align:center">High-end paid</td>
<td style="text-align:center">$179/mo</td>
</tr>
</tbody>
</table>
<h3 id="15-a-hrefhttpswwwdux-soupcom-relnofollowdux-soupa">15. <a href="https://www.dux-soup.com/?ref=nubela.co" rel="nofollow">Dux-Soup</a></h3>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfdxZxqZiXYcoC0BVOcuFxEpgRrzC86izIDtvJcvLOJxI4RffO-g9gfwyi3R0xZW0j_1N7WzT2CtA1kmwD_6kdtvA1JrULXk5UP0c-u7L9nYr5jw_jxbk6D3us8mu6Lw5p21XPEzA?key=zOWCgs-RYSeIo6J5EF_RSGON" alt="Dux-Soup Landing Page" loading="lazy"></p>
<p>The final extension based Professional Social Network scraper, Dux-Soup is a great shout if you're looking to optimize your outreach, without using complex tools. You have the option to choose if you want to work with your Professional Social Network account, Sales Navigator or Recruiter account.</p>
<p>Once downloaded, you can create 'Drip' campaigns to automate Professional Social Network connection invitations, follow and endorse profiles, send InMails, and messages.</p>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfDIWVbCL8ioDyU4gIkE_tHTa5qvdd9_G3W8supwP-pv5XighNo-eJ75RD0utlYWC3h4IAsADTimiyB_UqmBAaf0uU8GRXHYbNcAXJVimquqEpYDJsykCrsdlUy0mDHoYq875nQ8w?key=zOWCgs-RYSeIo6J5EF_RSGON" alt="Dux-Soup campaigns" loading="lazy"></p>
<p>If a prospect responds, they are moved from your campaign into your pipeline for you to close. The Dux-Dash campaign statistics provide a clear overview of areas that need improvement to optimize your Professional Social Network lead generation efforts.</p>
<h4 id="dux-soup-pros">Dux-Soup Pros</h4>
<ul>
<li>
<p>Short yet detailed tutorial upon using the platform for the first time.</p>
</li>
<li>
<p>On the more affordable side of pricing.</p>
</li>
</ul>
<h4 id="dux-soup-cons">Dux-Soup Cons</h4>
<ul>
<li>
<p>Weirdly enough, the extension doesn't work if the browser is closed.</p>
</li>
<li>
<p>They guarantee safety of your Professional Social Network account, but it is open to restrictions if usage limits are exceeded.</p>
</li>
<li>
<p>More about outreach than scraping.</p>
</li>
</ul>
<h4 id="a-hrefhttpswwwdux-soupcompricingplans-relnofollowdux-soup-pricinga"><a href="https://www.dux-soup.com/pricing/plans?ref=nubela.co" rel="nofollow">Dux-Soup Pricing</a></h4>
<table>
<thead>
<tr>
<th style="text-align:center">Plans</th>
<th style="text-align:center">Details</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:center">Free</td>
<td style="text-align:center">14 Days Free Trial ✅</td>
</tr>
<tr>
<td style="text-align:center">Basic Paid</td>
<td style="text-align:center">$11.25/mo</td>
</tr>
<tr>
<td style="text-align:center">High-end Paid</td>
<td style="text-align:center">$74.17/mo</td>
</tr>
</tbody>
</table>
<h2 id="lead-generation-and-email-discovery-professional-social-network-scrapers">Lead Generation and Email Discovery Professional Social Network Scrapers</h2>
<p>By now, it's clear that not all Professional Social Network scraping tools are made for a single purpose. The scrapers in this category are for generating leads and discovering verified contact details, indispensable for sales and marketing professionals.</p>
<h3 id="16-a-hrefhttpshunterio-relnofollowhunterioa">16. <a href="https://hunter.io/?ref=nubela.co" rel="nofollow">Hunter.io</a></h3>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcXep-fBrWQHCi5Iw4SVlowYLlCTJ1sujcV23DQDh2rvu8tni5bFEAjqQmjuUtqrxbiY6IXkAongXWm51pmUZxVYBa_GS6JMk3iXD1GhJ5mmwbepfFATnMHGEDZRRo9QwjFXfw3?key=zOWCgs-RYSeIo6J5EF_RSGON" alt="Hunter.io Landing Page" loading="lazy"></p>
<p>Hunter.io is made to find and verify emails, to support email campaigns, making it an essential resource for marketers, recruiters, and sales teams looking to connect with key decision-makers and prospects.</p>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXeBNGo_iPnAjxpcMKzeXxmX3N6GveF5yrzaN-IME3WDVh98nteVxm8pl7ptA-acTXgan4WdbpZY-oWsMcNTl0AQ-k227zBvyQgnxJJKEmyQuOASvE_HT8lPW5EQdcP-4YQGvDL9?key=zOWCgs-RYSeIo6J5EF_RSGON" alt="Hunter.io Email Campaign" loading="lazy"></p>
<p>You are greeted with a quick tutorial link as soon as you create a free account. It's simple to follow and you can extract email addresses associated with a certain domain, build a targeted contact list, automate your outreach message and scale your campaign.</p>
<h4 id="hunterio-pros">Hunter.io Pros</h4>
<ul>
<li>
<p>Easy-to-follow tutorial and simple enough UI.</p>
</li>
<li>
<p>Email verification is excellent in dodging bounce rates.</p>
</li>
</ul>
<h4 id="hunterio-cons">Hunter.io Cons</h4>
<ul>
<li>
<p>Massive priority on email discovery and outreach, better tools available for dedicated scraping.</p>
</li>
<li>
<p>Can match false positives on email verifications.</p>
</li>
</ul>
<h4 id="a-hrefhttpshunteriopricing-relnofollowhunterio-pricinga"><a href="https://hunter.io/pricing?ref=nubela.co" rel="nofollow">Hunter.io Pricing</a></h4>
<table>
<thead>
<tr>
<th style="text-align:center">Plans</th>
<th style="text-align:center">Details</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:center">Free</td>
<td style="text-align:center">Free Plan Available ✅</td>
</tr>
<tr>
<td style="text-align:center">Basic Paid</td>
<td style="text-align:center">$34/mo</td>
</tr>
<tr>
<td style="text-align:center">High-end Paid</td>
<td style="text-align:center">$349/mo</td>
</tr>
</tbody>
</table>
<h3 id="17-a-hrefhttpswwwlushacom-relnofollowlushaa">17. <a href="https://www.lusha.com/?ref=nubela.co" rel="nofollow">Lusha</a></h3>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfOu4bof4xeDMgHE9hs_lH4sPwIMH4MEabGbsLy2BFmKSxjVkJuPryVaHcRxb_xEqR4dreguugz0Vpvq3bhZMd9ry4NSEba8q5Gvzp36S04nWTiqZNiDzHcyeBdtQqIaibMWFYk?key=zOWCgs-RYSeIo6J5EF_RSGON" alt="Lusha Landing Page" loading="lazy"></p>
<p>Lusha sells access to its huge B2B database where businesses can find verified contact details. It works as both a Chrome extension and through an API, so you can extract professional data directly from Professional Social Network or integrate it into your CRM systems like Salesforce and HubSpot.</p>
<h4 id="lusha-pros">Lusha Pros</h4>
<ul>
<li>
<p>Reasonable pricing for the quality of data it provides.</p>
</li>
<li>
<p>Interactive dashboard and supports integrations with popular CRM platforms.</p>
</li>
<li>
<p>Has a chrome extension where you can extract contact data directly from Professional Social Network profiles while browsing.</p>
</li>
</ul>
<h4 id="lusha-cons">Lusha Cons</h4>
<ul>
<li>
<p>Instances of wrong information being served; posing trust issues.</p>
</li>
<li>
<p>Professional Social Network's data access limitations, especially with frequent scraping.</p>
</li>
</ul>
<h4 id="a-hrefhttplushacompricing-relnofollowlusha-pricinga"><a href="http://lusha.com/pricing?ref=nubela.co" rel="nofollow">Lusha Pricing</a></h4>
<table>
<thead>
<tr>
<th style="text-align:center">Plans</th>
<th style="text-align:center">Details</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:center">Free</td>
<td style="text-align:center">Free Plan Available ✅ (50 emails/5 phone numbers)</td>
</tr>
<tr>
<td style="text-align:center">Basic Paid</td>
<td style="text-align:center">$49/person/mo</td>
</tr>
<tr>
<td style="text-align:center">High-end paid</td>
<td style="text-align:center">Customizable usage and price</td>
</tr>
</tbody>
</table>
<p><em><strong>Note:</strong> You cannot sign up with a personal email. Signups are only validated using work emails.</em></p>
<h3 id="18-a-hrefhttpswwwapolloio-relnofollowapolloioa">18. <a href="https://www.apollo.io/?ref=nubela.co" rel="nofollow">Apollo.io</a></h3>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfSXO9B1HbHflqDa9j5VDm6ZWYNDfP6KxFMdhKThwCstAnPPHJvnsIQiHtPLp5UEdIj2T8PjgPUAK2FSkMPyi0FSwd5gqKRb0A4i3h98Lm4F_4-oPBfemSTGgx_8CCx6kN0d3V3?key=zOWCgs-RYSeIo6J5EF_RSGON" alt="Apollo.io Landing Page" loading="lazy"></p>
<p>With a database of 270M contacts, Apollo.io has one sole purpose; boost sales engagement to the max. It gathers verified emails and contact numbers from Professional Social Network, trying to scan and suggest potential leads. Automation is another strength of Apollo.io, as the platform automates emails, marketing and sales processes, sequences touchpoints, and sales call dialing.</p>
<h4 id="apolloio-pros">Apollo.io Pros</h4>
<ul>
<li>
<p>65+ advanced search filters.</p>
</li>
<li>
<p>Serious automation features; Almost every repetitive sales and marketing tasks can be automated.</p>
</li>
<li>
<p>Seamless integration with CRMs like Salesforce for workflow efficiency.</p>
</li>
</ul>
<h4 id="apolloio-cons">Apollo.io Cons</h4>
<ul>
<li>
<p>Full-on automation poses a risk of losing personal touch.</p>
</li>
<li>
<p>High tier pricing, hard to access for small businesses and startups.</p>
</li>
<li>
<p>Instances of outdated or incorrect data despite regular updates.</p>
</li>
</ul>
<h4 id="a-hrefhttpswwwapolloiopricing-relnofollowapolloio-pricinga"><a href="https://www.apollo.io/pricing?ref=nubela.co" rel="nofollow">Apollo.io Pricing</a></h4>
<table>
<thead>
<tr>
<th style="text-align:center">Plans</th>
<th style="text-align:center">Details</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:center">Free</td>
<td style="text-align:center">Free Plan Available ✅<br> 1,200 credits/year</td>
</tr>
<tr>
<td style="text-align:center">Basic Paid</td>
<td style="text-align:center">$59/person/mo</td>
</tr>
<tr>
<td style="text-align:center">High-end Paid</td>
<td style="text-align:center">$149/person/mo</td>
</tr>
</tbody>
</table>
<p><em><strong>Note:</strong> You cannot sign up with a personal email. Signups are only validated using work emails.</em></p>
<h3 id="19-a-hrefhttpswwwupleadcom-relnofollowupleada">19. <a href="https://www.uplead.com/?ref=nubela.co" rel="nofollow">UpLead</a></h3>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcZTkNfpu9Jaaoq1MRptrcys57UAYVOgRG_qY4fE2FL6oSRhXprqA36_BfoOQMS4Q5WTzFM9v1NKttwlws5C5g70e2ppo_kaXI42Z_jVlS-ztrJJP68aXDdjH0psYlfDqrma4s1CQ?key=zOWCgs-RYSeIo6J5EF_RSGON" alt="UpLead Landing Page" loading="lazy"></p>
<p>A people's favorite, UpLead is the top-rated B2B data provider on G2. Instead of providing raw web scraped datasets, they provide a clean prospecting list, which you can then plug into your CRM. Uplead prides itself with its dedication to providing accurate data, backed up by real-time verified emails, mobile numbers and intent data.</p>
<h4 id="uplead-pros">UpLead Pros</h4>
<ul>
<li>
<p>Excellent tracking of lookups.</p>
</li>
<li>
<p>Credits are only charged for verified email addresses.</p>
</li>
<li>
<p>One stop solution; enriches profiles with important fields that cut down the need for prospecting.</p>
</li>
</ul>
<h4 id="uplead-cons">UpLead Cons</h4>
<ul>
<li>
<p>The number of "valid" leads cuts down the amount of total leads. Even if a large amount of leads are generated, only a small % of them are pursuable "valid" leads.</p>
</li>
<li>
<p>The database lacks in volume in contrast to its cost.</p>
</li>
</ul>
<h4 id="a-hrefhttpswwwupleadcompricing-relnofollowuplead-pricinga"><a href="https://www.uplead.com/pricing/?ref=nubela.co" rel="nofollow">UpLead Pricing</a></h4>
<table>
<thead>
<tr>
<th style="text-align:center">Pricing</th>
<th style="text-align:center">Details</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:center">Free</td>
<td style="text-align:center">7 day free trial available ✅ <br> 5 credits</td>
</tr>
<tr>
<td style="text-align:center">Basic Paid</td>
<td style="text-align:center">$99/mo</td>
</tr>
<tr>
<td style="text-align:center">High-end Paid</td>
<td style="text-align:center">Customizable usage and pricing</td>
</tr>
</tbody>
</table>
<p><em><strong>Note:</strong> Free trials require credit card information to activate.</em></p>
<h3 id="20-a-href-httpswwwlemlistcom-relnofollowlemlista">20. <a href="https://www.lemlist.com/?ref=nubela.co" rel="nofollow">Lemlist</a></h3>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXc2rDibWvdShj8nbGF-nfTbkdJQzlb8llc_rGJFcKF8nuvIP9yDGNe1OnxXsXpa_yw9yltVAgRnvK2dZxoV_wsHfCqS4AbzhQT0Dy6RvWIUC7Tew_wnecSLaOu7_rYbc_0Cy3FZuQ?key=zOWCgs-RYSeIo6J5EF_RSGON" alt="Lemlist Landing Page" loading="lazy"></p>
<p>A platform renowned for its exemplary interface, Lemlist is an email outreach and sales engagement platform, revolutionizing personalized outreach, deliverability, and multi-channel prospecting.</p>
<p>Lemlist has a cockpit management feature, which serves as a single dashboard, where you can manage your team accounts. Lemwarm, a free add-on specialized email deliverability service, is another standout feature that allows you to improve and maintain a high deliverability score as you reach out to your target audience.</p>
<div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">💻</div><div class="kg-callout-text">We built a Lemlist Clone App, with the full source code, check it out here:<br><a href="https://nubela.co/blog/build-lemlist-clone-app-personalize-email-list/" rel="noreferrer"><i><b><strong class="italic" style="white-space: pre-wrap;">I Built a Lemlist Clone App That Personalizes My Email List at Scale</strong></b></i></a></div></div><h4 id="lemlist-pros">Lemlist Pros</h4>
<ul>
<li>
<p>A complete email solution with email templates, personalization options, automation and sequencing features with A/B testing.</p>
</li>
<li>
<p>Platform specific features like Lemwarm and cockpit management make it unique.</p>
</li>
</ul>
<h4 id="lemlist-cons">Lemlist Cons</h4>
<ul>
<li>
<p>Customer reviews are mixed; grievances about online customer support, billing, refunds, software crashes and bugs.</p>
</li>
<li>
<p>The platform lacks tagging features and inaccurate email tracking.</p>
</li>
</ul>
<h4 id="a-hrefhttpswwwlemlistcompricing-relnofollow-lemlist-pricinga"><a href="https://www.lemlist.com/pricing?ref=nubela.co" rel="nofollow"> Lemlist Pricing</a></h4>
<table>
<thead>
<tr>
<th style="text-align:center">Pricing</th>
<th style="text-align:center">Details</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:center">Free</td>
<td style="text-align:center">14 Day Free Trial ✅<br> 100 free verified emails</td>
</tr>
<tr>
<td style="text-align:center">Basic Plan</td>
<td style="text-align:center">$39/person/mo</td>
</tr>
<tr>
<td style="text-align:center">High-end Plan</td>
<td style="text-align:center">$159/person/mo</td>
</tr>
</tbody>
</table>
<p><em><strong>Note:</strong> You cannot sign up with a personal email. Signups are only validated using work emails.</em></p>
<h3 id="21-a-hrefhttpssnovio-relnofollowsnovioa">21. <a href="https://snov.io/?ref=nubela.co" rel="nofollow">Snov.io</a></h3>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfgudxkOBnUvHlWkSzNaniNs9cPVI_ThH4pDSferU4Gzb2_cTWV_N42g9t4v2Tk16jktDB3-e7wCV_82yIjlT0-H5mKCZupe54eD7qqI9j4Jwt3MKl5tSpOkSsbgDp9kRBaFtoOHg?key=zOWCgs-RYSeIo6J5EF_RSGON" alt="Snov.io Landing Page" loading="lazy"></p>
<p>My final entry for the lead generation and email discovery Professional Social Network scraper, is Snov.io. It is an outreach tool that allows you to collect leads, store them in your CRM platform and send out targeted cold emails. There is an email finder extension where you can hop on Professional Social Network and find your prospects, their email addresses, and make lead generation seamless.</p>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfnrMQLeKFEJOxO_wHwJ_z2dXV2_7YaagX-sEehQkYpURxJA8wXDj7i-28PZTn7Cv9EVXFKtSz3kTcBUL5XU06SWlpEv233gI0PZlFMl6nT8hQR0eZiSgJsFfZkRHZPqRC2nFCPtw?key=zOWCgs-RYSeIo6J5EF_RSGON" alt="Snov.io Dashboard and Extention" loading="lazy"></p>
<p>A quick look, and the app is geared for lead generation and GETTING YOUR MESSAGE OUT. The Snov.io is a great sales automation tool, small-scale CRM, email marketing tool, and lead generation tool.</p>
<p>The email finder feature in the platform is acclaimed among users, and I can see why. Combine that with the plugin, lead generation becomes easy.</p>
<h4 id="snovio-pros">Snov.io Pros</h4>
<ul>
<li>
<p>In-platform guides and tutorials are easy to follow through</p>
</li>
<li>
<p>Efficient lead generation process (Platform + Extension)</p>
</li>
</ul>
<h4 id="snovio-cons">Snov.io Cons</h4>
<ul>
<li>
<p>No refunds.</p>
</li>
<li>
<p>For a Professional Social Network scraper, it is weird the email finder doesn't work on Professional Social Network.</p>
</li>
</ul>
<h4 id="a-hrefhttpssnoviopricing-relnofollowsnovio-pricinga"><a href="https://snov.io/pricing?ref=nubela.co" rel="nofollow">Snov.io Pricing</a></h4>
<table>
<thead>
<tr>
<th style="text-align:center">Plans</th>
<th style="text-align:center">Details</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:center">Free</td>
<td style="text-align:center">Free Plan Available ✅ <br> 50 credits &amp; 100 email receipts</td>
</tr>
<tr>
<td style="text-align:center">Basic Paid</td>
<td style="text-align:center">$39/mo</td>
</tr>
<tr>
<td style="text-align:center">High-end Paid</td>
<td style="text-align:center">Customizable usage and pricing</td>
</tr>
</tbody>
</table>
<h2 id="data-aggregation-and-analytics-professional-social-network-scrapers">Data Aggregation and Analytics Professional Social Network Scrapers</h2>
<p>Moving away from singular developer solutions, we are now talking large-scale. Data aggregation and analytics scrapers cater to professionals and businesses that need more than just what Professional Social Network has to provide up front. These scrapers go beyond extracting individual data points and provide enriched datasets, trends, and predictive insights for market research, talent analytics, workforce planning, and competitive analysis.</p>
<p>If you are in human resources or market research for a firm, this category of Professional Social Network scrapers might appeal to you.</p>
<h3 id="22-a-hrefhttpswwwreveliolabscom-relnofollowrevelio-labsa">22. <a href="https://www.reveliolabs.com/?ref=nubela.co" rel="nofollow">Revelio Labs</a></h3>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXei27Y8U2ReCtw966KWegSjH-JGwgPEixX2UBYrvOxN_TlaLPZ6LW-5LZyzZ1X2kelLz0hq5nFVFMG7ff6UpjvNiNG-lYbRcywEJx_hqekEGkxelgHcBPKmRM-OgyCtef242o1OLQ?key=zOWCgs-RYSeIo6J5EF_RSGON" alt="Revelio Labs Landing Page" loading="lazy"></p>
<p>A tool that standardizes public employment records to create a comprehensive HR database, Revelio Labs is perfect for HR analytics and the data services industry. It provides workforce intelligence by analyzing publicly available workforce data. You also get predictive analytics that anticipate layoffs, growth, and role-specific demand, making it ideal for corporate strategy and workforce planning.</p>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfsGyZXji9m-KvcZWKIYnXaJQizXIHw31wY5nMdW43me7TwP0T9NVwPimbzaI94EMhCwVnn_Y-MOg3qZRJK4NpHOK7577ZB4T0H2OwtYx6auunlxkxAQzxG2CH8jHOTdf97eh7pQw?key=zOWCgs-RYSeIo6J5EF_RSGON" alt="Revelio Labs Dashboard" loading="lazy"></p>
<p>The platform is easy to navigate, and there were no hiccups signing up for a free trial either. The best thing here is definitely the workforce dynamics (aggregated workforce statistics). An overview of everything you need to know about the company and their employees. The filters are awesome and have a variety of fields where you can tune your search results.</p>
<h4 id="revelio-labs-pros">Revelio Labs Pros</h4>
<ul>
<li>
<p>Comprehensive workforce analytics, tailored for enterprise needs.</p>
</li>
<li>
<p>Predictive insights give a competitive edge in talent acquisition.</p>
</li>
<li>
<p>Detailed historical data for benchmarking and trend analysis.</p>
</li>
</ul>
<h4 id="revelio-labs-cons">Revelio Labs Cons</h4>
<ul>
<li>
<p>No transparent pricing details available.</p>
</li>
<li>
<p>Limited to only providing workforce data and lacks broader B2B data.</p>
</li>
</ul>
<h4 id="revelio-labs-pricing">Revelio Labs Pricing</h4>
<p>The pricing is not publicly available. However, they provide a 7 day free trial on signup and their pricing roughly starts from $85,000 a year. That is a tall pricing point, not a number every firm can afford.</p>
<h3 id="23-a-hrefhttpswwwxverumcom-relnofollowxveruma">23. <a href="https://www.xverum.com/?ref=nubela.co" rel="nofollow">Xverum</a></h3>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfQejjpGJWTAFey_vhw6_m66Cu7HIhTvRb7s2VzLDE-bXcE-LNpdSWZZ30IbZXtj7BC_ZZ8rk2v46ovt1Tm3HV9ZQGAuQ69gwERug2OTZ8NoAzSP4V5ASP1HHCb0scPvNsbXzPG4Q?key=zOWCgs-RYSeIo6J5EF_RSGON" alt="Xverum Landing Page" loading="lazy"></p>
<p>Xverum provides paid access to its massive-scale open web data with an aim to empower ML and SaaS platforms. Their datasets they extract are focused on firmographic data (information about companies), individual profiles, and other relevant public data.</p>
<p>Not much data is available on Xverum. Customer reviews online are not large enough to hold as reference.</p>
<h4 id="xverum-pros">Xverum Pros</h4>
<ul>
<li>
<p>They offer robust API options, enabling smooth integration into marketing and sales tools.</p>
</li>
<li>
<p>Extensive targeting options, supporting businesses in building segmented, tailored lists.</p>
</li>
</ul>
<h4 id="xverum-cons">Xverum Cons</h4>
<ul>
<li>
<p>Xverum does not publish its pricing structure openly, which can make budgeting and cost comparison challenging.</p>
</li>
<li>
<p>Data update periods are not transparent; businesses that rely on highly current data might need a provider with <a href="https://nubela.co/blog/how-fresh-are-profiles-returned-by-proxycurl-api/">data freshness guarantee</a>.</p>
</li>
</ul>
<h4 id="xverum-pricing">Xverum Pricing</h4>
<p>No free trials and no public pricing available. Their pricing roughly starts from $5,000/year.</p>
<h3 id="24-a-hrefhttpscoresignalcom-relnofollowcoresignala">24. <a href="https://coresignal.com/?ref=nubela.co" rel="nofollow">Coresignal</a></h3>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdqaxfJbl4hEsBR5vh1uSzPTTH3AJVeikpeYPlRxChTMc0Y4MXNRr-bBhZ82HAcC6t237OleD2-eEIUanLnq93RROyyYU1g5TUCLhkEm7b_gpAN_e3x6m9OlU72qcY5HwUsIF-L?key=zOWCgs-RYSeIo6J5EF_RSGON" alt="Coresignal Landing Page" loading="lazy"></p>
<p>Coresignal might not be your typical scraper, but it does sell scraped data. They're a major player in the industry and there's a reason why customers prefer their service for their data solutions. Their datasets also consist of public and private data from Professional Social Network, which they either scraped themselves or acquired through third-party means.</p>
<h4 id="coresignal-pros">Coresignal Pros</h4>
<ul>
<li>
<p>Large dataset, aggregates data from a significant number of sources.</p>
</li>
<li>
<p>Provides a lot of data formats: JSON, Parquet, CSV, Other (upon request).</p>
</li>
</ul>
<h4 id="coresignal-cons">Coresignal Cons</h4>
<ul>
<li>
<p>Reports of customers receiving out-dated data. See <a href="https://nubela.co/blog/proxycurl-api-vs-coresignal/#proxycurl-api-vs-coresignal">Proxycurl vs. Coresignal</a>.</p>
</li>
<li>
<p>"Real-time" API does not return data immediately.</p>
</li>
</ul>
<h4 id="a-hrefhttpscoresignalcompricing-relnofollowcoresignal-pricinga"><a href="https://coresignal.com/pricing/?ref=nubela.co" rel="nofollow">Coresignal Pricing</a></h4>
<table>
<thead>
<tr>
<th style="text-align:center">Plans</th>
<th style="text-align:center">Details</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:center">Free</td>
<td style="text-align:center">Free Plan Available ✅<br> 200 Collect credits &amp; 400 Search credits</td>
</tr>
<tr>
<td style="text-align:center">Basic Paid</td>
<td style="text-align:center">$49/mo</td>
</tr>
<tr>
<td style="text-align:center">High-end Paid</td>
<td style="text-align:center">$1,500/mo</td>
</tr>
</tbody>
</table>
<h3 id="25-a-hrefhttpswwwtalentneuroncom-relnofollowtalentneurona">25. <a href="https://www.talentneuron.com/?ref=nubela.co" rel="nofollow">TalentNeuron</a></h3>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcij1pCY4YBdglOzGtXo1pi6bzYwHo4_nHEElkLotNnM2GxMFsPSjnmcZhHUwDXRH1eczG4JmWFnv10zppmTnM5kM9bukoL3rUbvbAD8T0sBUtd2blv9cKljYh0g6RnRhnaevQIHQ?key=zOWCgs-RYSeIo6J5EF_RSGON" alt="TalentNeuron Landing Page" loading="lazy"></p>
<p>TalentNeuron is another workforce analytics platform that offers insights into labor market trends, talent availability, and workforce planning. It combines Professional Social Network data with other proprietary sources to provide global workforce intelligence. Assessing hiring approaches, site selection to evaluate locations, benchmarking against competitors, diversity tracking, and remote work strategy development are all features provided by TalentNeuron.</p>
<h4 id="talentneuron-pros">TalentNeuron Pros</h4>
<ul>
<li>
<p>Combines Professional Social Network data with third-party sources for deeper insights.</p>
</li>
<li>
<p>Great for teams/departments planning workforce expansions and recruitment strategies.</p>
</li>
</ul>
<h4 id="talentneuroncons">TalentNeuronCons</h4>
<ul>
<li>Lacks direct data download options like other competing tools.</li>
</ul>
<h4 id="talentneuron-pricing">TalentNeuron Pricing</h4>
<p>The pricing information is not publicly available and you need to contact their sales team to sign up. No free trials either.</p>
<h3 id="26-a-hrefhttpswwwseekoutcom-relnofollowseekouta">26. <a href="https://www.seekout.com/?ref=nubela.co" rel="nofollow">SeekOut</a></h3>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXctucCgAftlkPKAR7sBNx0ajvmNAgSTwPWEr4r2J_LZNqauAFZ05D5-qNyNZSxHOvjwb8lwtpCk-C4HFHsvGQMYL9jK7QncJvMRzJBcfsBRY9MOtk27NYV2H8M2XEcPIEyyLYUF5w?key=zOWCgs-RYSeIo6J5EF_RSGON" alt="SeekOut Landing Page" loading="lazy"></p>
<p>SeekOut combines Professional Social Network data with other sources to offer a robust platform for diversity hiring, talent sourcing, and analytics. It is an AI powered talent search engine built to help sources find and hire the right talent, fast.</p>
<p>A lot of standout features in this tool, starting with the Boolean search, which allows you to combine keywords with modifiers like and, not, and or to get more relevant results. The platform also has an AI robot that can work on your behalf and search for potential candidates that qualify for a job.</p>
<h4 id="seekout-pros">SeekOut Pros</h4>
<ul>
<li>
<p>Advanced diversity filters make it stand out in hiring analytics; it can find talent even among your existing team.</p>
</li>
<li>
<p>AI powered search-engine like platform.</p>
</li>
</ul>
<h4 id="seekout-cons">SeekOut Cons</h4>
<ul>
<li>
<p>Data heavily leaning towards the US and Canada.</p>
</li>
<li>
<p>Limited use cases beyond recruitment.</p>
</li>
</ul>
<h4 id="a-hrefhttpswwwseekoutcompricing-relnofollowseekout-pricinga"><a href="https://www.seekout.com/pricing?ref=nubela.co" rel="nofollow">SeekOut Pricing</a></h4>
<p>They have their plans drawn out on their website but to get the pricing details, you will have to contact them. Their plans roughly start from $499/mo. No free trails available.</p>
<h3 id="27-a-hrefhttpsrival-hrcomentelo-recruit-relnofollowenteloa">27. <a href="https://rival-hr.com/entelo-recruit/?ref=nubela.co" rel="nofollow">Entelo</a></h3>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfia2mIZapWiHHWsatqfemjXojk5RcC3eA9wa3cnkHU9LSOVGpKlQhJrMV4zz8DjdOsKUSYLlRegJDYHCCO0e7dUN1NR7dXLEN1i59K210Lm16QHLkKcIRktDKZxPzlpddOopEENA?key=zOWCgs-RYSeIo6J5EF_RSGON" alt="Entelo Landing Page" loading="lazy"></p>
<p>Entelo is my last rendition of data analytics Professional Social Network scraper. Similar to Revelio Labs, Entelo provides predictive recruiting and workforce diversity analysis. It's interesting as the software uses predictive analytics by identifying candidates who are more likely to change jobs. You can identify high-potential candidates, particularly those open to new opportunities or with specific skill sets.</p>
<h4 id="entelo-pros">Entelo Pros</h4>
<ul>
<li>
<p>Predictive recruiting tools streamline proactive hiring efforts.</p>
</li>
<li>
<p>Simple UI and strong ATS integration simplifies recruitment workflows.</p>
</li>
</ul>
<h4 id="entelo-cons">Entelo Cons</h4>
<ul>
<li>Limited in scalability compared to tools like Revelio Labs or Xverum.</li>
</ul>
<h4 id="entelo-pricing">Entelo Pricing</h4>
<p>The pricing information and plans are not available on Entelo's website. But I have it in good authority that their pricing starts from $149/mo. No free trial available.</p>
<h2 id="no-code-professional-social-network-scrapers">No-Code Professional Social Network Scrapers</h2>
<p>I'm here to let you know, anyone can scrape Professional Social Network. Yes, even if you have 0 coding experience.</p>
<p>No-code Professional Social Network scrapers are ideal for individuals and businesses that need data extraction without programming knowledge. These tools provide intuitive interfaces and pre-built workflows that help you to scrape Professional Social Network efficiently.</p>
<h3 id="28-a-hrefhttpswwwoctoparsecom-relnofollowoctoparsea">28. <a href="https://www.octoparse.com/?ref=nubela.co" rel="nofollow">OctoParse</a></h3>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXc8m-LAz3XsBld0Gn4yxh-lzAstdlZh9yfnIZ4_BEZHMw8JYjAifPZKV1X8CYbwUTHK5g-G8hiCL1iCqFwL3d3zu0Bzg7hKiKTRTKxF9IKvvFaVBh-LmorooXcy0V9R-cGDHoXIuA?key=zOWCgs-RYSeIo6J5EF_RSGON" alt="OctoParse Landing Page" loading="lazy"></p>
<p>Behold, the first no-code Professional Social Network scraper on the list, Octoparse. A multi-purpose tool that can scrape Professional Social Network along with various other websites. The platform can handle tasks like extracting public profiles, job postings, or company information. The cloud-based platform also supports integration with apps like Slack via Zapier.</p>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcnS7hsXmQZtjk5i76h5idcqMCwZ_RZjpDWKHNeGB7Huk_vD3lIFuy4_nIVqZHMGAS_lgJxuPdP1b6-OD8Rzz1OJXL6FiPgv2VSXNt51RuFhZsf7F1PpOxbBVg26LKxVdIu3zbn?key=zOWCgs-RYSeIo6J5EF_RSGON" alt="OctoParse's Professional Social Network Job Scraper" loading="lazy"></p>
<p>I am a fan of the website's point-and-click interface. It is super simple and easy-to-follow. You can choose from a selection of templates they have available. Each template is associated with a website and is designed to do one specific task; for instance, the Professional Social Network Job Scraper template allows you to pull job information like job title and description from a URL.</p>
<h4 id="octoparse-pros">Octoparse Pros</h4>
<ul>
<li>
<p>An all in one web scraping tool.</p>
</li>
<li>
<p>Cloud scraping allows tasks to run even when offline.</p>
</li>
</ul>
<h4 id="octoparse-cons">Octoparse Cons</h4>
<ul>
<li>
<p>Limited scraping capabilities on dynamic Professional Social Network data due to platform anti-scraping measures.</p>
</li>
<li>
<p>Advanced features are primarily available to enterprise-level users.</p>
</li>
</ul>
<h4 id="a-hrefhttpswwwoctoparsecompricing-relnofollowoctoparse-pricinga"><a href="https://www.octoparse.com/pricing?ref=nubela.co" rel="nofollow">Octoparse Pricing</a></h4>
<table>
<thead>
<tr>
<th style="text-align:center">Plans</th>
<th style="text-align:center">Details</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:center">Free</td>
<td style="text-align:center">Free Plan Available ✅<br> 10 tasks, 10K data per export.</td>
</tr>
<tr>
<td style="text-align:center">Basic Paid</td>
<td style="text-align:center">$77/mo</td>
</tr>
<tr>
<td style="text-align:center">High-end Paid</td>
<td style="text-align:center">Customizable usage and pricing</td>
</tr>
</tbody>
</table>
<h3 id="29-a-hrefhttpsbrightdatacom-relnofollowbright-dataa">29. <a href="https://brightdata.com/?ref=nubela.co" rel="nofollow">Bright Data</a></h3>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcoe33Jx4QuyHdNHDs6HpLclP_2EdM1Y03o7DGY9zfO9zUp3uJue-jIpB4OUjE1NZ0vnUwFJZBO8sc5fFnE1dKfT_G25cr0BXWyN2SzVnnS_sNjELCjD_U1HGoT2tBEUUkceOpqig?key=zOWCgs-RYSeIo6J5EF_RSGON" alt="Bright Data Landing Page" loading="lazy"></p>
<p>Bright Data is kind of unique, in the sense, it does not scrape data for you but provides proxies for your own scrapers. Its no-code data collector even allows users to bypass restrictions like CAPTCHAs and IP bans. In 2022, they launched a new line of dataset products, with variety that rivals or even exceeds that of Coresignal's datasets.</p>
<h4 id="bright-data-pros">Bright Data Pros</h4>
<ul>
<li>
<p>Reliable and a variety of proxy services: residential proxies, ISP proxies, data center proxies, and mobile proxies.</p>
</li>
<li>
<p>Data collector and SERP API tools enable you to collect public data in real-time.</p>
</li>
<li>
<p>You get to build your own scraper!</p>
</li>
</ul>
<h4 id="bright-data-cons">Bright Data Cons</h4>
<ul>
<li>
<p>Setting and implementation can take weeks for everything to function properly.</p>
</li>
<li>
<p>Some proxies are quite expensive and might be beyond budget for startups and small businesses.</p>
</li>
</ul>
<h4 id="a-hrefhttpsbrightdatacompricingproxy-networkplanmonthlytyperesrotating-relnofollowbright-data-pricinga"><a href="https://brightdata.com/pricing/proxy-network?plan=monthly&type=res_rotating&ref=nubela.co" rel="nofollow">Bright Data Pricing</a></h4>
<table>
<thead>
<tr>
<th style="text-align:center">Plans</th>
<th style="text-align:center">Tier</th>
<th style="text-align:center">Details</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:center">Free</td>
<td style="text-align:center">Free</td>
<td style="text-align:center">7 Days Free Trial Available ✅<br></td>
</tr>
<tr>
<td style="text-align:center">Proxy Infrastructure</td>
<td style="text-align:center">Basic Paid<br>High-end Paid</td>
<td style="text-align:center">$499/mo<br>$1999/mo</td>
</tr>
<tr>
<td style="text-align:center">Scraping Automation</td>
<td style="text-align:center">Basic Paid<br>High-end Paid</td>
<td style="text-align:center">$499/mo<br>$1999/mo</td>
</tr>
<tr>
<td style="text-align:center">Data and Insights</td>
<td style="text-align:center">Basic Paid<br>High-end Paid</td>
<td style="text-align:center">$500/mo<br>Customizable</td>
</tr>
</tbody>
</table>
<p><em><strong>Note:</strong> The pricing plans are anything but simple. There are a lot of subcategories and different pricing points. I suggest you visit the <a href="<https://brightdata.com/pricing/proxy-network?plan=monthly&amp;type=res_rotating>" rel="nofollow">Bright Data Pricing</a> page to get a better look. Be advised, you cannot sign up without a work email.</em></p>
<h3 id="30-a-hrefhttpswwwparsehubcom-relnofollowparsehuba">30. <a href="https://www.parsehub.com/?ref=nubela.co" rel="nofollow">ParseHub</a></h3>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXeh4mXBpDE0G1N1qqqWN64C-d11MBQR5G3cKLv3nCosfbaIRFAA5vRDRk-hSG4j1KD7cU4dZYZpr0mFBzLvYfrUgRBWfGRSj19zFnoWLvsaj1nWCwJHQyDMScAVPZNGpHYbaf59GQ?key=zOWCgs-RYSeIo6J5EF_RSGON" alt="ParseHub Landing Page" loading="lazy"></p>
<p>ParseHub is a versatile no-code that uses machine learning to identify page elements, making it easier to set up scraping tasks. The platform navigates and extracts data from sites using Ajax, JavaScript, cookies, sessions, and redirects.</p>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfOycjWdawbJskvff821tzVab9BYe-L3-tYNEb-j4hEZrwpFvXH5xWfEKse_tjRiyMGq1rsFsTg8OgZSI2X_Q8KXc2DMBkRpR5oMnf9NBT3LWQNbbdZja5MeRyl-bOpfreIWXG5Gg?key=zOWCgs-RYSeIo6J5EF_RSGON" alt="ParseHub Professional Social Network Scraper" loading="lazy"></p>
<p>I found ParseHub intuitive and powerful. The point-and-click interface is easy to figure out even if you don't have any instructions or tutorials. Just copy the URL you want to scrape from, and then use the browser interface inside the platform to point and click. All the data scraped is displayed below and you can even choose the format.</p>
<p>What's astonishing is this is all from the free version. I am quite impressed with what you can do with just the free version. ParseHub claims that the free version is worth $99, and I don't doubt it. You get 200 pages of data in 40 minutes and you'll be able to launch your projects without spending any time writing scraping scripts by yourself.</p>
<h4 id="parsehub-pros">ParseHub Pros</h4>
<ul>
<li>
<p>Extract data from any website and create custom Excel files.</p>
</li>
<li>
<p>Smooth and user-friendly interface through a point-and-click method.</p>
</li>
<li>
<p>Supports cloud storage integration with popular cloud storage services like Dropbox and Amazon S3.</p>
</li>
</ul>
<h4 id="parsehub-cons">ParseHub Cons</h4>
<ul>
<li>
<p>Struggles with Professional Social Network's anti-bot measures, leading to potential data gaps.</p>
</li>
<li>
<p>Difficulties in troubleshooting extraction failures or making necessary project adjustments.</p>
</li>
<li>
<p>Consumes a significant amount of system resources, particularly in the free version.</p>
</li>
</ul>
<h4 id="a-hrefhttpswwwparsehubcompricing-relnofollowparsehub-pricinga"><a href="https://www.parsehub.com/pricing?ref=nubela.co" rel="nofollow">ParseHub Pricing</a></h4>
<table>
<thead>
<tr>
<th style="text-align:center">Plans</th>
<th style="text-align:center">Details</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:center">Free</td>
<td style="text-align:center">Free Plan Available ✅<br>200 pages of data in 40 mins</td>
</tr>
<tr>
<td style="text-align:center">Basic Paid</td>
<td style="text-align:center">$189/mo</td>
</tr>
<tr>
<td style="text-align:center">High-end Paid</td>
<td style="text-align:center">Customizable usage and pricing</td>
</tr>
</tbody>
</table>
<h3 id="31-a-hrefhttpswwwimportio-relnofollowimportioa">31. <a href="https://www.import.io/?ref=nubela.co" rel="nofollow">Import.io</a></h3>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXchwUIPWruxa_w565I9PPJHQRFr9VVJJ1ZK0A9BZbOv4z968fMTVMoANbRZdPFXEyuGVf6rFi4qrkfhtanF3iRRyi0L0HYq8_aLAxa_g1NKVAhl3Hk_wiXjB_9m_82F_Ysa_-c-?key=zOWCgs-RYSeIo6J5EF_RSGON" alt="Import.io Landing Page" loading="lazy"></p>
<p>Import.io allows you to pull data from Professional Social Network or any website and have this data updated in real time. Just map the data on a page and the platform's algorithm will do the rest. What you get is an API that gives you real time access to the data on that website.</p>
<p>While it is a no-code scraper, it provides the option for tech savvy users to use their data extraction features to make custom crawlers, get data from behind a login, and combine multiple data sources and query them all at once with a single API call.</p>
<h4 id="importio-pros">Import.io Pros</h4>
<ul>
<li>
<p>Supports scheduled scraping for regular data updates.</p>
</li>
<li>
<p>Integrates with data analysis tools like Tableau and Google Sheets.</p>
</li>
<li>
<p>Strong customer support for troubleshooting issues.</p>
</li>
</ul>
<h4 id="importio-cons">Import.io Cons</h4>
<ul>
<li>
<p>Limited Professional Social Network-specific workflows.</p>
</li>
<li>
<p>Requires manual intervention for highly dynamic Professional Social Network pages.</p>
</li>
</ul>
<h4 id="a-hrefhttpswwwimportiopricing-relnofollowimportio-pricinga"><a href="https://www.import.io/pricing?ref=nubela.co" rel="nofollow">Import.io Pricing</a></h4>
<p>Their website has plans and the details outlined in their pricing page, but weirdly enough their corresponding pricing is not displayed. You do get a 14 day free trial upon signup.</p>
<h2 id="how-do-i-find-the-best-professional-social-network-scraper-for-me">How do I find the best Professional Social Network Scraper for me?</h2>
<p>30+ different options to choose from, no wonder you might feel overwhelmed! To make it simpler, I've already categorized the scrapers. Now, let me break it down even further by highlighting key factors you should consider when selecting the right Professional Social Network scraper.</p>
<h3 id="technical-proficiency">Technical proficiency</h3>
<p>If you're a developer or have a technical background, tools like <a href="https://nubela.co/proxycurl/?ref=nubela.co">Proxycurl</a> or Professional Social Network Scraper might be more up your alley. Depending on the volume of data and the time you are willing to invest, you would want to work with an enterprise level solution like Proxycurl or work by yourself on an open-source solution.</p>
<p>For those less technically inclined, no-code scrapers like ParseHub or Octoparse and browser extension-based tools like Waalaxy, Evaboot, or Octopus CRM might be more suitable.</p>
<h3 id="data-depth-and-freshness">Data depth and freshness</h3>
<p>If you're looking for the most recent and in-depth data, <a href="https://nubela.co/proxycurl/?ref=nubela.co">Proxycurl</a> stands out. Especially with its use_cache=if-recent parameter and a <a href="https://nubela.co/blog/how-fresh-are-profiles-returned-by-proxycurl-api/">data freshness guarantee</a> for your peace of mind.</p>
<p>For more basic data, tools like Dux-Soup and Waalxy might suffice.</p>
<h3 id="purpose">Purpose</h3>
<p>Each category of Professional Social Network scrapers serve a different purpose.</p>
<p>If your focus is on data extraction and enrichment, <a href="https://nubela.co/proxycurl/?ref=nubela.co">Proxycurl</a> offers a comprehensive solution.</p>
<p>For outreach campaigns, Waalaxy and Octopus CRM are designed with this primary function in mind.</p>
<p>If email maximization and lead generation is your game, go with Hunter.io or UpLead.</p>
<h3 id="budget">Budget</h3>
<p>If you're on a tight budget, the open-source options like Professional Social Network_Scraper and Professional Social Network-API are free.</p>
<p>For those willing to invest for more features and ease of use, Proxycurl and PhantomBuster offer tiered pricing options.</p>
<h3 id="ease-of-use">Ease of Use</h3>
<p>For a straightforward, user-friendly experience, Waalaxy, Lemlist and ParseHub are designed with simplicity in mind.</p>
<p>Tools like PhantomBuster and Coresignal might have a steeper learning curve due to their extensive features.</p>
<h3 id="scalability">Scalability</h3>
<p>If you're looking for a tool that can grow with your business, <a href="https://nubela.co/proxycurl/?ref=nubela.co">Proxycurl</a> offers a scalable API that can be integrated into various systems.</p>
<h2 id="is-professional-social-network-scraping-legal">Is Professional Social Network Scraping legal?</h2>
<p>Let me preface by saying web scraping is legal. The legality of scraping is based on different factors like the type of data, the website's terms of service, data protection laws like GDPR, and much more.</p>
<p>As per Professional Social Network's policy, it is very clear that scraping isn't allowed. Using third-party software is strictly prohibited to scrape Professional Social Network.</p>
<p>So, are we working beyond the law?</p>
<p>Absolutely not. The <a href="https://www.cantorcolburn.com/news-newsletters-330.html?ref=nubela.co#:~:text=Sign%20Up-,Computer%20Fraud%20and%20Abuse%20Act%20%E2%80%9CScraping%E2%80%9D%20public%20data,probably%20doesn't%20violate%20CFAA&text=The%20U.S.%20Court%20of%20Appeals,and%20Abuse%20Act%20(CFAA)" rel="nofollow">CFAA (Computer Fraud and Abuse Act)</a> clearly mentions, scraping publicly available data isn't considered hacking. It is <strong>LEGAL</strong> to scrape publicly available data in Professional Social Network, if you are doing it ethically.</p>
<p><strong>Bottomline:</strong> Scraping data is against Professional Social Network's terms of service, but it is NOT illegal.</p>
<p>Just make sure you operate under their policy limitations:</p>
<ul>
<li>
<p>Free Account: Extract 80 profiles/day.</p>
</li>
<li>
<p>Professional Social Network Premium Account: Extract 150 profiles/day</p>
</li>
<li>
<p>Sales Navigator Account: Extract 1000 profiles/day</p>
</li>
</ul>
<p>Or better yet, sign up for a third party Professional Social Network scraper (data provider like <a href="https://nubela.co/proxycurl/?ref=nubela.co">Proxycurl</a>!, and transfer the liability completely.</p>
<h2 id="my-recommendation">My Recommendation</h2>
<p>I've opened the playing field up, so everything is out in the open. My personal recommendation is <a href="https://proxycurl.com/?ref=nubela.co">Proxycurl</a>. It stands out (yes out of all these tools) for its versatility, depth of data, and developer-friendly features.</p>
<p>Obviously, I might be a bit biased, but I back my words with facts.</p>
<p>With Proxycurl, you won't need any VPNs, proxies, a rotating index of Professional Social Network accounts, or anything else. Zero Professional Social Network scraping headaches involved!</p>
<p>You get access to rich B2B data from more data sources than just Professional Social Network. We always link it back to a Professional Social Network identifier, so it may seem like our API only relies on Professional Social Network, but it doesn't.</p>
<p>That's just a part of the equation and is what often makes our data richer than our competitors.</p>
<p>Proxycurl will provide you with a simple and scalable API that you can build into whatever you need it to be, or into your existing systems. It easily solves the need of having to scrape Professional Social Network profiles, and you gain access to even richer data than you could obtain by scraping Professional Social Network alone.</p>
<p>You start off with 100 free credits upon <a href="https://nubela.co/proxycurl/auth/register?ref=nubela.co">signup</a>, so test it out, have a look around. See if I am truly biased or just talking off of facts.</p>
<h2 id="final-thoughts">Final Thoughts</h2>
<p>With this list, now you're equipped with the power of identifiable options. Weigh your needs and make an informed decision, because no one wants to change their providers midway. It's just too much hassle, takes too much energy, money and messes up with your datasets.</p>
<p>Your ideal Professional Social Network scraper is there to support your purpose. With so many choices available, don't settle for anything less.</p>
<p>Ready to opt for a scraper without compromises? Sign up with <a href="https://nubela.co/proxycurl/?ref=nubela.co">Proxycurl</a> today!</p>
<h2 id="faqs">FAQs</h2>
<div class="kg-card kg-toggle-card" data-kg-toggle-state="close">
            <div class="kg-toggle-heading">
                <h4 class="kg-toggle-heading-text"><span style="white-space: pre-wrap;">Is it possible to scrape data from Professional Social Network?</span></h4>
                <button class="kg-toggle-card-icon" aria-label="Expand toggle to read content">
                    <svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"></path>
                    </svg>
                </button>
            </div>
            <div class="kg-toggle-content"><p><span style="white-space: pre-wrap;">Professional Social Network Scrapers exist for this purpose. The smart thing to do is to opt for a tool that automates the process. You don’t want to be stuck manually pulling or attempting to pull data from Professional Social Network.</span></p></div>
        </div><div class="kg-card kg-toggle-card" data-kg-toggle-state="close">
            <div class="kg-toggle-heading">
                <h4 class="kg-toggle-heading-text"><span style="white-space: pre-wrap;">How to scrape leads from Professional Social Network for free?</span></h4>
                <button class="kg-toggle-card-icon" aria-label="Expand toggle to read content">
                    <svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"></path>
                    </svg>
                </button>
            </div>
            <div class="kg-toggle-content"><p><span style="white-space: pre-wrap;">Go with open source Professional Social Network scrapers if you have a coding background. If not, there are a lot of free plans or credits offered by many tools like Octoparse, Import.io, and Proxycurl. You can get to scraping straight away, although the service might be limited and might need a paid subscription to fully unlock all the features.&nbsp;</span></p></div>
        </div><div class="kg-card kg-toggle-card" data-kg-toggle-state="close">
            <div class="kg-toggle-heading">
                <h4 class="kg-toggle-heading-text"><span style="white-space: pre-wrap;">What is the limit of scraping on Professional Social Network?</span></h4>
                <button class="kg-toggle-card-icon" aria-label="Expand toggle to read content">
                    <svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"></path>
                    </svg>
                </button>
            </div>
            <div class="kg-toggle-content"><p><span style="white-space: pre-wrap;">Professional Social Network imposes the following scraping limitations:</span></p><ul><li value="1"><span style="white-space: pre-wrap;">80 profiles/day with a free account</span></li><li value="2"><span style="white-space: pre-wrap;">150 profiles/day with a Professional Social Network Premium account.&nbsp;</span></li><li value="3"><span style="white-space: pre-wrap;">1000 profiles/day with a Professional Social Network Sales Navigator account.&nbsp;</span></li></ul></div>
        </div><div class="kg-card kg-toggle-card" data-kg-toggle-state="close">
            <div class="kg-toggle-heading">
                <h4 class="kg-toggle-heading-text"><span style="white-space: pre-wrap;">How does Professional Social Network detect scrapers?</span></h4>
                <button class="kg-toggle-card-icon" aria-label="Expand toggle to read content">
                    <svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"></path>
                    </svg>
                </button>
            </div>
            <div class="kg-toggle-content"><p><span style="white-space: pre-wrap;">Activities that don’t seem “human” are flagged by Professional Social Network’s algorithm. Keep in mind that Professional Social Network is against unauthorized scraping, so say an account is browsing loads of profiles in a short amount of time, the activity is flagged by the automation detector.&nbsp;</span></p></div>
        </div><div class="kg-card kg-toggle-card" data-kg-toggle-state="close">
            <div class="kg-toggle-heading">
                <h4 class="kg-toggle-heading-text"><span style="white-space: pre-wrap;">Can I scrape Professional Social Network data without being detected?</span></h4>
                <button class="kg-toggle-card-icon" aria-label="Expand toggle to read content">
                    <svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"></path>
                    </svg>
                </button>
            </div>
            <div class="kg-toggle-content"><p><span style="white-space: pre-wrap;">Most tools implement techniques like random delays or IP rotation to reduce detection risk. However, no scraper guarantees 100% undetectability, and Professional Social Network actively works to detect and block scraping.</span></p></div>
        </div><div class="kg-card kg-toggle-card" data-kg-toggle-state="close">
            <div class="kg-toggle-heading">
                <h4 class="kg-toggle-heading-text"><b><strong style="white-space: pre-wrap;">What should I do if my Professional Social Network account gets banned?</strong></b></h4>
                <button class="kg-toggle-card-icon" aria-label="Expand toggle to read content">
                    <svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"></path>
                    </svg>
                </button>
            </div>
            <div class="kg-toggle-content"><p><span style="white-space: pre-wrap;">If in case your account is banned, contact Professional Social Network and plead for reinstatement. Be wary of Professional Social Network’s Terms of use and use scrapers with moderation.</span></p></div>
        </div> ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ I Built a Lemlist Clone App That Personalizes My Email List at Scale ]]></title>
        <description><![CDATA[ Find out how I created a Lemlist clone for bulk email personalization in 8 steps. Generate automated personalized emails at scale. ]]></description>
        <link>https://nubela.co/blog/build-lemlist-clone-app-personalize-email-list/</link>
        <guid isPermaLink="false">671080cab52061000188ad57</guid>
        <category><![CDATA[ personalized email lists ]]></category>
        <dc:creator><![CDATA[ Zeha Irawan | Senior Marketing Dev ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/10/zz.jpeg"/>
        <pubDate>Tue, 19 Nov 2024 12:35:03 +0800</pubDate>
        <media:content url="" medium="image"/>
        <content:encoded><![CDATA[ <p>Generic emails are a one way ticket to the spam folder. But let’s face it, personalizing hundreds, or even thousands, of emails manually is tough work.</p><p>As a developer, I love solving problems like this. Instead of relying on pre-built tools like Lemlist, I will build my own Lemlist clone; a fully customizable app that automates outreach while crafting personalized emails. And better yet, I will show you how I did it, step-by-step.&nbsp;</p><p>This guide is perfect for fellow developers with a knack for coding. If you're up for the challenge, dive right in, though fair warning, it might get a little technical along the way. And for the seasoned pros out there, the <a href="https://github.com/nubelaco/use-case-examples/tree/main/email-personalization?ref=nubela.co"><u>full source code</u></a> is ready and waiting for you to build your Lemlist clone app!</p><p>In this tutorial, we’ll cover:</p><ul><li>A quick video demo</li><li>App Features</li><li>Prerequisites</li><li>Creating the app (with guided code snippets)</li><li>Using OpenAI for personalized email generation (including code walkthroughs)</li></ul><p>The final result result looks something like this:&nbsp;</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/10/Oct-31-202415-13-521-ezgif.com-optimize.gif" class="kg-image" alt="Quick Demo for the Lemlist like App" loading="lazy" width="1210" height="748"><figcaption><span style="white-space: pre-wrap;">Application Demo </span></figcaption></figure><h2 id="application-features">Application Features </h2><h2 id="application-features-1">Application Features </h2><p>The app has more functionality than what meets the eye. With this Lemlist Clone app, you can:</p><ul><li><strong>Identify and Track Leads:</strong> Manage and track multiple Professional Social Network profiles for targeted lead generation.</li><li><strong>Enrich Lead Data:</strong> Enhance lead profiles using Proxycurl’s API for deeper insights.</li><li><strong>Generate Personalized Emails:</strong> Create unique, personalized emails for multiple leads with one click.</li><li><strong>Review and Copy Easily</strong>: Quickly view and copy generated emails in a gallery layout.</li><li><strong>Save Leads in Local Storage:</strong> Preserve leads in local storage to avoid data loss on refresh.</li><li><strong>Potential for Direct Integration with Email Platforms</strong>: While this isn’t fully implemented, the app could be extended to integrate with the Gmail API or another email provider, allowing users to directly create drafts without needing to copy-paste.</li></ul><h2 id="prerequisites">Prerequisites</h2><p>To get started, make sure you have:</p><ul><li>Node v18+</li><li>A <a href="http://nubela.co/?ref=nubela.co"><u>Proxycurl API</u></a> key&nbsp;</li><li>An <a href="https://openai.com/index/openai-api/?ref=nubela.co"><u>OpenAI API</u></a> key for generating email content that’s unique and engaging.</li><li>Familiarity with <a href="https://react.dev/?ref=nubela.co"><u>React.js</u></a> &amp; <a href="https://nextjs.org/?ref=nubela.co"><u>Next.js</u></a>.</li><li>Familiarity with Tailwind CSS.</li></ul><p>Now that we've discussed the basics, let's get straight to it. </p><h2 id="how-to-build-a-lemlist-clone-app">How to Build a Lemlist Clone App</h2><h3 id="step-1-register-for-a-proxycurl-account"><strong>Step 1: Register for a </strong><a href="https://nubela.co/proxycurl/?ref=nubela.co" rel="noreferrer"><strong>Proxycurl</strong></a><strong> account</strong></h3><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/11/Screenshot-2024-11-13-at-18.08.37.png" class="kg-image" alt="Proxycurl Landing Page" loading="lazy" width="2000" height="1133"><figcaption><span style="white-space: pre-wrap;">Proxycurl Landing Page</span></figcaption></figure><p>Proxycurl is a data enrichment company offering APIs that pull various data such as person data, company data, contact info, and more. You will need a <a href="https://nubela.co/proxycurl/auth/register?ref=nubela.co"><u>Proxycurl account</u></a> to get your hands on a unique API key.&nbsp; Its role here is to pull data from Professional Social Network profiles to inform your personalized emails. Simply sign up and access your <a href="https://nubela.co/proxycurl/dashboard/proxycurl-api/api-key/?ref=nubela.co"><u>Dashboard</u></a> to get the bearer token.</p><p>What’s more, you get free credits upon <a href="https://nubela.co/proxycurl/auth/register?ref=nubela.co" rel="noreferrer">signing up</a>.</p><ul><li>100 free credits if you sign up with a work email</li><li>10 credits for personal email</li></ul><h3 id="step-2-create-a-new-nextjs-project">Step 2: Create a New Next.js Project</h3><p>Start by setting up a new project in Next.js.</p><pre><code>npx create-next-app@latest personalize-email
cd personalize-email &amp;&amp; npm run dev
</code></pre><p>Then, add the following packages:</p><pre><code>npx shadcn@latest add table input button checkbox sheet textarea dropdown-menu dialog card     
npm install @tanstack/react-table openai
</code></pre><p>If you encounter an error, try using these specific versions:</p><pre><code class="language-json">    "next": "14.2.13",
    "react": "^18",
    "react-dom": "^18",
</code></pre>
<h3 id="step-3-build-a-lead-management-table">Step 3: Build a Lead Management Table</h3><p>To make things efficient, we’ll use the Data Table from shadcn to create a structured view for displaying leads. The table will be configured to show each lead’s full name, occupation, country, and Professional Social Network profile URL.</p><pre><code class="language-js">export const columns = [
  {
    id: "select",
    header: ({ table }) =&gt; (
      &lt;Checkbox
        checked={
          table.getIsAllPageRowsSelected() ||
          (table.getIsSomePageRowsSelected() &amp;&amp; "indeterminate")
        }
        onCheckedChange={(value) =&gt; table.toggleAllPageRowsSelected(!!value)}
        aria-label="Select all"
      /&gt;
    ),
    cell: ({ row }) =&gt; (
      &lt;Checkbox
        checked={row.getIsSelected()}
        onCheckedChange={(value) =&gt; row.toggleSelected(!!value)}
        aria-label="Select row"
      /&gt;
    ),
    enableSorting: false,
    enableHiding: false,
  },
  {
    accessorKey: "full_name",
    header: "Full Name",
    cell: ({ row }) =&gt; (
      &lt;div className="capitalize"&gt;{row.getValue("full_name")}&lt;/div&gt;
    ),
  },
  {
    accessorKey: "occupation",
    header: "Occupation",
    cell: ({ row }) =&gt; (
      &lt;div className="capitalize"&gt;{row.getValue("occupation")}&lt;/div&gt;
    ),
  },
  {
    accessorKey: "country_full_name",
    header: "Country",
    cell: ({ row }) =&gt; (
      &lt;div className="capitalize"&gt;{row.getValue("country_full_name")}&lt;/div&gt;
    ),
  },
  {
    accessorKey: "public_identifier",
    header: "Professional Social Network URL",
    cell: ({ row }) =&gt; (
      &lt;div&gt;{`https://www.professionalsocialnetwork.com/in/${row.getValue(
        "public_identifier",
      )}`}&lt;/div&gt;
    ),
  },
  {
    id: "actions",
    enableHiding: false,
    cell: ({ row, table }) =&gt; {
      return (
        &lt;DropdownMenu&gt;
          &lt;DropdownMenuTrigger asChild&gt;
            &lt;Button variant="ghost" className="p-0 w-8 h-8"&gt;
              &lt;span className="sr-only"&gt;Open menu&lt;/span&gt;
              &lt;MoreHorizontal className="w-4 h-4" /&gt;
            &lt;/Button&gt;
          &lt;/DropdownMenuTrigger&gt;
          &lt;DropdownMenuContent align="end"&gt;
            &lt;DropdownMenuLabel&gt;Actions&lt;/DropdownMenuLabel&gt;
            &lt;DropdownMenuItem&gt;&lt;/DropdownMenuItem&gt;
            &lt;DropdownMenuSeparator /&gt;
          &lt;/DropdownMenuContent&gt;
        &lt;/DropdownMenu&gt;
      );
    },
  },
];
</code></pre>
<p>Then create <code>app/components/Leads.jsx</code> and import the column there. We will also hold the state of the app in this component.</p><pre><code class="language-jsx">"use client";

import Image from "next/image";
import React, { useState, useEffect } from "react";
import {
  flexRender,
  getCoreRowModel,
  getFilteredRowModel,
  getPaginationRowModel,
  getSortedRowModel,
  useReactTable,
} from "@tanstack/react-table";
import {  Mail, Plus, } from "lucide-react";
import { Button } from "@/components/ui/button";
import { columns } from './columns';


function Leads() {
  const [data, setData] = useState([]);
  const [sorting, setSorting] = useState([]);
  const [columnFilters, setColumnFilters] = useState([]);
  const [columnVisibility, setColumnVisibility] = useState({});
  const [rowSelection, setRowSelection] = useState({});

  const table = useReactTable({
    data,
    columns,
    onSortingChange: setSorting,
    onColumnFiltersChange: setColumnFilters,
    getCoreRowModel: getCoreRowModel(),
    getPaginationRowModel: getPaginationRowModel(),
    getSortedRowModel: getSortedRowModel(),
    getFilteredRowModel: getFilteredRowModel(),
    onColumnVisibilityChange: setColumnVisibility,
    onRowSelectionChange: setRowSelection,
    state: {
      sorting,
      columnFilters,
      columnVisibility,
      rowSelection,
    },
  });

  return (
    &lt;div className="w-full max-w-5xl"&gt;
      &lt;div className="flex flex-col justify-between items-start py-4 space-y-4 pt-md-8 sm:flex-row sm:items-center sm:space-y-0"&gt;
        &lt;div className="flex gap-2 items-start"&gt;
          &lt;div className="flex items-center"&gt;
            &lt;Image
              src="/email-logo-dummy.svg"
              alt="Email logo"
              width={24}
              height={24}
              className="text-blue-600"
            /&gt;
          &lt;/div&gt;
          &lt;div className="flex flex-col items-start"&gt;
            &lt;span className="font-semibold text-blue-600"&gt;
              Email Personalization
            &lt;/span&gt;
            &lt;span className="text-xs text-gray-500"&gt;
              By
              &lt;a
                href="https://nubela.co/proxycurl"
                target="_blank"
                rel="noopener noreferrer"
                className="underline ms-1"
              &gt;
                Proxycurl
              &lt;/a&gt;
            &lt;/span&gt;
          &lt;/div&gt;
        &lt;/div&gt;
        &lt;div className="flex flex-col gap-2 w-full sm:flex-row sm:gap-4 sm:w-auto"&gt;
          &lt;Button variant="outline" className="w-full sm:w-auto"&gt;
            &lt;Plus className="mr-2 w-4 h-4" /&gt; Add Leads
          &lt;/Button&gt;
          &lt;Button className="w-full sm:w-auto"&gt;
            &lt;Mail className="mr-2 w-4 h-4" /&gt; Generate all personalized email
          &lt;/Button&gt;
        &lt;/div&gt;
      &lt;/div&gt;
      &lt;div className="rounded-md border"&gt;
        &lt;div className="overflow-x-auto"&gt;
          &lt;Table className="w-full whitespace-nowrap"&gt;
            &lt;TableHeader&gt;
              {table.getHeaderGroups().map((headerGroup) =&gt; (
                &lt;TableRow key={headerGroup.id}&gt;
                  {headerGroup.headers.map((header) =&gt; {
                    return (
                      &lt;TableHead key={header.id} className="px-2"&gt;
                        {header.isPlaceholder
                          ? null
                          : flexRender(
                              header.column.columnDef.header,
                              header.getContext(),
                            )}
                      &lt;/TableHead&gt;
                    );
                  })}
                &lt;/TableRow&gt;
              ))}
            &lt;/TableHeader&gt;
            &lt;TableBody&gt;
              {table.getRowModel().rows?.length ? (
                table.getRowModel().rows.map((row) =&gt; (
                  &lt;TableRow
                    key={row.id}
                    data-state={row.getIsSelected() &amp;&amp; "selected"}
                  &gt;
                    {row.getVisibleCells().map((cell) =&gt; (
                      &lt;TableCell key={cell.id} className="px-2"&gt;
                        {flexRender(
                          cell.column.columnDef.cell,
                          cell.getContext(),
                        )}
                      &lt;/TableCell&gt;
                    ))}
                  &lt;/TableRow&gt;
                ))
              ) : (
                &lt;TableRow&gt;
                  &lt;TableCell
                    colSpan={columns.length}
                    className="h-24 text-center"
                  &gt;
                    &lt;div className="flex flex-col justify-center items-center py-16 h-full"&gt;
                      &lt;p className="text-gray-500"&gt;
                        No leads found. Add Professional Social Network profile URLs to start
                        personalizing emails.
                      &lt;/p&gt;

                      &lt;Button variant="outline" className="mt-4"&gt;
                        &lt;Plus className="w-4 h-4" /&gt; Add Leads
                      &lt;/Button&gt;
                    &lt;/div&gt;
                  &lt;/TableCell&gt;
                &lt;/TableRow&gt;
              )}
            &lt;/TableBody&gt;
          &lt;/Table&gt;
        &lt;/div&gt;
      &lt;/div&gt;
      &lt;div className="flex justify-end items-center py-4 space-x-2"&gt;
        &lt;div className="flex-1 text-sm text-muted-foreground"&gt;
          {table.getFilteredSelectedRowModel().rows.length} of{" "}
          {table.getFilteredRowModel().rows.length} row(s) selected.
        &lt;/div&gt;
        &lt;div className="space-x-2"&gt;
          &lt;Button
            variant="outline"
            size="sm"
            onClick={() =&gt; table.previousPage()}
            disabled={!table.getCanPreviousPage()}
          &gt;
            Previous
          &lt;/Button&gt;
          &lt;span className="text-sm text-gray-500"&gt;
            Page {table.getState().pagination.pageIndex + 1} of{" "}
            {table.getPageCount()}
          &lt;/span&gt;
          &lt;Button
            variant="outline"
            size="sm"
            onClick={() =&gt; table.nextPage()}
            disabled={!table.getCanNextPage()}
          &gt;
            Next
          &lt;/Button&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  );
}

export default Leads;
</code></pre><p>The result should look something like this:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/10/empty-lead--1-.png" class="kg-image" alt="A created Lead Management Table" loading="lazy" width="2152" height="804"><figcaption><span style="white-space: pre-wrap;">Lead Management Table</span></figcaption></figure><h3 id="step-4-adding-and-enriching-leads">Step 4: Adding and Enriching Leads</h3><p>For ease of input, let’s create a modal to allow users to enter multiple Professional Social Network profile URLs at once.</p><p>Create <code>email-personalization/app/components/Modal.jsx</code></p><pre><code class="language-jsx">import {
  Dialog,
  DialogContent,
  DialogTitle,
} from "@/components/ui/dialog";
import { Textarea } from "@/components/ui/textarea";
import { Button } from "@/components/ui/button";
import { cn } from "@/lib/utils";

const Modal = ({ isOpen, setIsOpen, leadsProfile, setLeadsProfile, handleSubmit, isLoading }) =&gt; {
  const hasInput = leadsProfile.trim().length &gt; 0;

  return (
    &lt;Dialog open={isOpen} onOpenChange={setIsOpen}&gt;
      &lt;DialogContent className="p-6 max-w-xl"&gt;
        &lt;DialogTitle className="text-xl font-bold text-gray-800"&gt;
          Import Leads by Professional Social Network Profile URL
        &lt;/DialogTitle&gt;
        &lt;p className="mb-0 text-sm text-gray-500"&gt;
          Accepted format is https://www.professionalsocialnetwork.com/in/[username]
        &lt;/p&gt;
        &lt;p className="mb-0 text-sm text-gray-500"&gt;
          For example &lt;span className="px-2 py-1 bg-gray-100 rounded-md border border-gray-200"&gt;https://www.professionalsocialnetwork.com/in/williamhgates/&lt;/span&gt;
        &lt;/p&gt;

        &lt;div className={cn("space-y-2", "mt-0")}&gt;
          &lt;h2 className="text-base font-semibold text-gray-600"&gt;
            Enter one Professional Social Network Profile URL per line
          &lt;/h2&gt;
          &lt;div className="flex"&gt;
            {hasInput &amp;&amp; (
              &lt;div className="mr-2"&gt;
                {leadsProfile.split("\n").map((_, index) =&gt; (
                  &lt;div key={index} className="py-1 text-xs text-gray-500"&gt;
                    {index + 1}
                  &lt;/div&gt;
                ))}
              &lt;/div&gt;
            )}
            &lt;Textarea
              placeholder="Type your message here."
              value={leadsProfile}
              onChange={(e) =&gt; setLeadsProfile(e.target.value)}
              className="p-2 w-full placeholder-gray-400 text-gray-700 rounded-md border"
            /&gt;
          &lt;/div&gt;
        &lt;/div&gt;

        &lt;div className="flex justify-end items-center space-x-2"&gt;
          &lt;Button variant="outline" onClick={() =&gt; setIsOpen(false)}&gt;
            Cancel
          &lt;/Button&gt;
          &lt;Button className="transition duration-200" onClick={handleSubmit}&gt;
            {isLoading ? "Loading..." : "Submit"}
          &lt;/Button&gt;
        &lt;/div&gt;
      &lt;/DialogContent&gt;
    &lt;/Dialog&gt;
  );
};

export default Modal;

</code></pre><p>Then add these to the <code>app/components/Leads.jsx</code></p><pre><code class="language-jsx">import Modal from "./Modal";

//...rest of code
const [isModalOpen, setIsModalOpen] = useState(false);
const [isLoading, setIsLoading] = useState(false);
const [leadsProfile, setLeadsProfile] = useState("");

const handleSubmit = () =&gt; {};
// function above is a placeholder
const handleAddLeads = () =&gt; {
    setIsModalOpen(true);
};
// add handleAddLeads function to both of the add lead button as an onClick handler
//...existing code

// add this above the last div
    &lt;Modal
        isOpen={isModalOpen}
        setIsOpen={setIsModalOpen}
        leadsProfile={leadsProfile}
        setLeadsProfile={setLeadsProfile}
        handleSubmit={handleSubmit}
        isLoading={isLoading}
    /&gt;
&lt;/div&gt;
</code></pre><p>Then, integrate the modal into Leads.jsx to make it accessible when users click “Add Leads.”</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/10/profile-modal--1-.png" class="kg-image" alt="Image showing a pop-up in the app for import leads through Professional Social Network Profile URL" loading="lazy" width="1640" height="1062"><figcaption><span style="white-space: pre-wrap;">Importing Leads</span></figcaption></figure><p>The modal allows bulk entry and streamlines data gathering by opening instantly on button click.</p><h3 id="step-5-connecting-api-to-the-user-input">Step 5: Connecting API to the user input</h3><p>Time for Proxycurl to shine. We will use the API to enrich Professional Social Network profiles with minimal effort. Pull relevant details directly from Professional Social Network profiles, adding more context to each lead. </p><p>Add function below to <code>app/components/Leads.jsx</code></p><pre><code class="language-jsx">const handleSaveRecentLeads = (profiles) =&gt; {
    const existingLeads =
      JSON.parse(localStorage.getItem("existingLeads")) || [];

    profiles.forEach((profile) =&gt; {
      existingLeads.push({ ...profile, isEmailGenerated: false });
    });
    localStorage.setItem("existingLeads", JSON.stringify(existingLeads));
  };
</code></pre><p>Now, replace <code>handleSubmit</code> function in <code>app/components/Leads.jsx</code> with:</p><pre><code class="language-jsx">  const handleSubmit = async () =&gt; {
    setIsLoading(true);
    const lines = leadsProfile.split("\n");

    try {
      const responses = await Promise.all(
        lines.map((line) =&gt;
          fetch(`/api/personProfile?Professional Social Network_profile_url=${line}`),
        ),
      );

      const parsedResponses = await Promise.all(
        responses.map(async (res) =&gt; {
          if (!res.ok) {
            throw new Error(`Error fetching profile: ${res.statusText}`);
          }
          return res.json();
        }),
      );
      setIsLoading(false);
      setData((prev) =&gt; [...prev, ...parsedResponses]);
      handleSaveRecentLeads(parsedResponses);
    } catch (error) {
      console.error("Failed to fetch profiles:", error);
    } finally {
      setIsModalOpen(false);
    }
  };
</code></pre><p>Then create <code>app/api/personProfile/route.js</code></p><pre><code class="language-jsx">import { NextResponse } from "next/server";

export async function GET(request) {
  const params = request.url.split("?")[1];

  try {
    const response = await fetch(
      `https://nubela.co/proxycurl/api/v2/Professional Social Network?${
       params
      }`,
      {
        headers: {
          Authorization:`Bearer ${process.env.PROXYCURL_API_KEY}`,
        },
      },
    );

    const data = await response.json();
    return NextResponse.json(data);
  } catch (error) {
    console.log(error);
    return NextResponse.json({ error }); 
  }
}
</code></pre>
<p>Once connected, Professional Social Network profile data will be enriched with a single click. Something like this:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/10/enrich.gif" class="kg-image" alt="Enrich profiles by connecting with Proxycurl API" loading="lazy" width="1034" height="742"><figcaption><span style="white-space: pre-wrap;">Data Enrichment using Proxycurl</span></figcaption></figure><h3 id="step-6-creating-a-drawer-component-for-prompting">Step 6:&nbsp;Creating a Drawer component for prompting</h3><p>Now, let’s generate custom email content. Start by creating a Drawer component to prompt the user for email customizations.</p><p>For that, we will create <code>app/components/EmailDrawer.jsx</code></p><pre><code class="language-jsx">import { Button } from "@/components/ui/button";
import { Textarea } from "@/components/ui/textarea";
import {
  Sheet,
  SheetContent,
  SheetHeader,
  SheetTitle,
} from "@/components/ui/sheet";
import { useEffect, useState } from "react";
import Link from "next/link";
import { Mail } from "lucide-react";

function EmailDrawer({
  isOpen,
  setIsOpen,
  setSelectedLead,
  data,
  setGeneratedEmails,
}) {
  const [isLoading, setIsLoading] = useState(false);

  useEffect(() =&gt; {
    setGeneratedEmails(
      JSON.parse(localStorage.getItem("generatedEmails")) || [],
    );
  }, []);

  const initialPrompt = `You are professional sales with skills in cold outreach.

  Please customize the following email template with the attached Professional Social Network profile data. Please be consise and return the populated email template only.

Hi &lt;FIRST_NAME&gt;

&lt;SOMETHING INTERESTING FROM PROFILE DATA AT LEAST 2 SENTENCES&gt; Will a Professional Social Network Scraping API be useful for your  needs?`;

  const [prompt, setPrompt] = useState(initialPrompt);

  const handleSavePersonalizedEmail = (personalizedEmail, profile) =&gt; {
    const generatedEmails =
      JSON.parse(localStorage.getItem("generatedEmails")) || [];

    localStorage.setItem(
      "generatedEmails",
      JSON.stringify([
        ...generatedEmails,
        {
          email: personalizedEmail,
          public_identifier: profile.public_identifier,
        },
      ]),
    );

    setGeneratedEmails((prev) =&gt; [
      ...prev,
      {
        email: personalizedEmail,
        public_identifier: profile.public_identifier,
      },
    ]);
  };

  const handleSubmit = async () =&gt; {
    try {
      setIsLoading(true);
      const responses = await Promise.all(
        data.map((profile) =&gt;
          fetch(`/api/generateEmail`, {
            method: "POST",
            headers: {
              "Content-Type": "application/json",
            },
            body: JSON.stringify({ prompt, profileJSON: profile }),
          }),
        ),
      );

      const results = await Promise.all(
        responses.map((response) =&gt; response.json()),
      );
      results.forEach((email, index) =&gt; {
        handleSavePersonalizedEmail(email, data[index]);
      });
    } catch (error) {
      console.error("Error fetching email:", error);
    } finally {
      setIsLoading(false);
    }
  };

  const handleOpenChange = (open) =&gt; {
    setIsOpen(open);
    if (!open) {
      setSelectedLead(null);
    }
  };

  return (
    &lt;Sheet open={isOpen} onOpenChange={handleOpenChange}&gt;
      &lt;SheetContent className="overflow-auto"&gt;
        &lt;SheetHeader&gt;
          &lt;SheetTitle&gt;Bulk generate personalized emails&lt;/SheetTitle&gt;
        &lt;/SheetHeader&gt;
        &lt;div className="grid gap-4 py-4"&gt;
          &lt;span className="text-sm text-gray-500"&gt;
            Variables reference:{" "}
            &lt;i className="font-bold"&gt;
              first_name, last_name, full_name, headline, summary, company,
              company_url, city, state, country, experiences, educations, skills
              and many more.
            &lt;/i&gt;
          &lt;/span&gt;
          &lt;Link
            className="text-sm text-blue-500 underline hover:text-blue-600"
            href="https://nubela.co/proxycurl/docs#people-api-person-profile-endpoint"
            target="_blank"
          &gt;
            Read more
          &lt;/Link&gt;
          &lt;Textarea
            placeholder="Type your prompt here."
            value={prompt}
            onChange={(e) =&gt; setPrompt(e.target.value)}
            className="h-[300px] overflow-y-auto"
          /&gt;

          &lt;div&gt;
            &lt;span className="whitespace-nowrap"&gt;Generate email for &lt;/span&gt;
            {data.map((profile, index) =&gt; (
              &lt;span className="font-bold" key={profile.public_identifier}&gt;
                {profile.full_name}
                {index &lt; data.length - 1 &amp;&amp; ", "}
              &lt;/span&gt;
            ))}
          &lt;/div&gt;

          &lt;Button onClick={handleSubmit}&gt;
            {isLoading ? (
              "Generating..."
            ) : (
              &lt;&gt;
                &lt;Mail className="w-4 h-4" /&gt;

                &lt;span&gt;Bulk generate emails&lt;/span&gt;
              &lt;/&gt;
            )}
          &lt;/Button&gt;
        &lt;/div&gt;
      &lt;/SheetContent&gt;
    &lt;/Sheet&gt;
  );
}

export default EmailDrawer;
</code></pre><p>And then add it to <code>app/components/Leads.jsx</code></p><pre><code class="language-jsx">import EmailDrawer from "./EmailDrawer";
// ...existing codes
  const [isEmailDrawerOpen, setIsEmailDrawerOpen] = useState(false);
  const [generatedEmails, setGeneratedEmails] = useState([]);
  const [selectedLead, setSelectedLead] = useState(null);

 const handleBulkGenerateEmail = () =&gt; {
    setIsLoading(true);
    setIsEmailDrawerOpen(true);
  };

// and then add it as onClick to "Generate all personalized" button

&lt;EmailDrawer
    data={data}
    selectedLead={selectedLead}
    setSelectedLead={setSelectedLead}
    isOpen={isEmailDrawerOpen}
    setIsOpen={setIsEmailDrawerOpen}
    setGeneratedEmails={setGeneratedEmails}
/&gt;
</code></pre><p>This opens a side drawer when a user clicks the "Generate all personalized" button. It looks like this:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/11/Side-Drawer-.png" class="kg-image" alt="Side drawer display in app for generating personalized emails" loading="lazy" width="1492" height="1592"><figcaption><span style="white-space: pre-wrap;">Side Drawer feature</span></figcaption></figure><p>With this interface, it is easier to prompt OpenAI with your exact requirements.</p><h3 id="step-7-set-up-openai-api-route-for-email-generation">Step 7: Set Up OpenAI API Route for Email Generation</h3><p>To generate emails, we’ll need an API route to connect to OpenAI. </p><p>Create <code>app/api/generateEmail/route.js</code> and set this code up:</p><pre><code class="language-js">import { NextResponse } from "next/server";
import OpenAI from "openai";

export async function POST(request) {
  const openai = new OpenAI({
    apiKey: process.env.OPENAI_API_KEY,
  });

  const { prompt, profileJSON } = await request.json();

  try {
    const basePrompt = `
      ${prompt}
  
      Instructions: 
      Replace every variable that is in &lt;&gt; format with value from with the first_name from the profileJSON below.
      Replace &lt;SOMETHING INTERESTING FROM PROFILE DATA&gt; with something interesting from the profileJSON below.

      profileJSON:
      ${JSON.stringify(profileJSON)}
    `;

    const baseCompletion = await openai.chat.completions.create({
      model: "gpt-3.5-turbo",
      temperature: 0.65,
      messages: [{ role: "user", content: basePrompt }],
    });

    const promptOutput = baseCompletion.choices[0].message.content;
    return NextResponse.json(promptOutput);
  } catch (error) {
    console.log(error);
    return NextResponse.json({ error });
  }
}
</code></pre><p>This will call OpenAI’s API to generate personalized email copy for each lead.</p><h3 id="step-8-displaying-generated-emails">Step 8: Displaying generated emails</h3><p>To easily review and copy the generated emails, create a simple card component with a copy button.</p><p>Create <code>app/components/GeneratedEmailsGallery.jsx</code> and add the following code:</p><pre><code class="language-jsx">import { useState } from "react";
import { Button } from "@/components/ui/button";
import { Card } from "@/components/ui/card";

function GeneratedEmailsGallery({ generatedEmails }) {
  const [copiedIndex, setCopiedIndex] = useState(null);
  const [currentPage, setCurrentPage] = useState(1);
  const emailsPerPage = 9;

  const handleCopy = (index) =&gt; {
    navigator.clipboard.writeText(generatedEmails[index]);
    setCopiedIndex(index);
    setTimeout(() =&gt; {
      setCopiedIndex(null);
    }, 2000);
  };

  if (!generatedEmails.length) return null;

  const totalPages = Math.ceil(generatedEmails.length / emailsPerPage);
  const startIndex = (currentPage - 1) * emailsPerPage;
  const displayedEmails = generatedEmails.slice(startIndex, startIndex + emailsPerPage);

  return (
    &lt;div className="mt-8"&gt;
      &lt;h2 className="mb-4 text-xl font-semibold"&gt;Generated Emails&lt;/h2&gt;
      &lt;div className="grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3"&gt;
        {displayedEmails.map((email, index) =&gt; (
          &lt;Card key={startIndex + index} className="flex flex-col p-4 shadow-none"&gt;
            &lt;p className="mb-2 text-sm text-gray-600"&gt;Generated email for {email.public_identifier}&lt;/p&gt;
            &lt;div className="mb-2 h-[200px] overflow-y-auto bg-gray-50 p-4 rounded-md border"&gt;
              &lt;p className="text-sm whitespace-pre-wrap"&gt;{email.email}&lt;/p&gt;
            &lt;/div&gt;
            &lt;Button
              className="ml-auto w-16"
              variant="outline"
              size="sm"
              onClick={() =&gt; handleCopy(startIndex + index)}
            &gt;
              {(startIndex + index) === copiedIndex ? "Copied" : "Copy"}
            &lt;/Button&gt;
          &lt;/Card&gt;
        ))}
      &lt;/div&gt;
      {generatedEmails.length &gt; emailsPerPage &amp;&amp; (
        &lt;div className="flex justify-end items-center mt-4 space-x-2"&gt;
          &lt;Button
            variant="outline"
            size="sm"
            onClick={() =&gt; setCurrentPage(prev =&gt; Math.max(1, prev - 1))}
            disabled={currentPage === 1}
          &gt;
            Previous
          &lt;/Button&gt;
          &lt;span className="text-sm text-gray-500"&gt;
            Page {currentPage} of {totalPages}
          &lt;/span&gt;
          &lt;Button
            variant="outline"
            size="sm"
            onClick={() =&gt; setCurrentPage(prev =&gt; Math.min(totalPages, prev + 1))}
            disabled={currentPage === totalPages}
          &gt;
            Next
          &lt;/Button&gt;
        &lt;/div&gt;
      )}
    &lt;/div&gt;
  );
}

export default GeneratedEmailsGallery;
</code></pre><p>Finally, integrate this gallery in Leads.jsx:</p><pre><code class="language-jsx">import GeneratedEmailsGallery from "./GeneratedEmailsGallery";

//...existing codes
&lt;GeneratedEmailsGallery generatedEmails={generatedEmails} /&gt;
</code></pre><p>And that’s it! With Proxycurl and OpenAI at the core, now you’ve got your own Lemlist clone app. Goodbye to uninspiring generic emails and hello to bulk personalized emails, all with minimal manual work.&nbsp;</p><p>This is what you would've built - a fully functional email personalization tool, just like Lemlist's own. Here's the <a href="https://github.com/nubelaco/use-case-examples/tree/main/email-personalization?ref=nubela.co"><u>full source code</u></a> in our GitHub repository again.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/10/Oct-31-202415-13-521-ezgif.com-optimize.gif" class="kg-image" alt="Quick Demo for the Lemlist like App" loading="lazy" width="1210" height="748"><figcaption><span style="white-space: pre-wrap;">Application Demo </span></figcaption></figure><h2 id="application-features-2">Application Features </h2><p>Don’t forget to have fun and add your own twist wherever you want. If you come across any problems, feel free to reach out to us <a href="mailto:hello@nubela.co"><u>via email</u></a> or live chat.</p><h2 id="power-your-innovation-with-proxycurl"><strong>Power your innovation with Proxycurl&nbsp;</strong></h2><p>Building something meaningful takes a lot, and as a developer, I know the drill. Proxycurl understands this journey. Our tools are crafted with your unique challenges in mind. We host <a href="https://nubela.co/proxycurl/people-api?ref=nubela.co" rel="noreferrer">a suite of APIs</a> and <a href="https://nubela.co/proxycurl/linkdb?ref=nubela.co" rel="noreferrer">a database of over 500 million profiles</a>. The possibilities to empower this data is endless, just like your potential. Let us handle the data heavy-lifting so you can do what you do best: create, build, and innovate.</p><p>Ready to turn your ideas into reality? Let us give you a push. Get free credits upon <a href="https://nubela.co/proxycurl/auth/register?ref=nubela.co"><u>sign up</u></a> with Proxycurl!<br></p><h2 id="faqs">FAQs</h2><div class="kg-card kg-toggle-card" data-kg-toggle-state="close">
            <div class="kg-toggle-heading">
                <h4 class="kg-toggle-heading-text"><b><strong style="white-space: pre-wrap;">What is Lemlist?</strong></b></h4>
                <button class="kg-toggle-card-icon" aria-label="Expand toggle to read content">
                    <svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"></path>
                    </svg>
                </button>
            </div>
            <div class="kg-toggle-content"><p><span style="white-space: pre-wrap;">Lemlist is a popular email outreach platform that helps businesses send personalized cold emails at scale. It enables users to customize their emails, automate follow-ups, and track engagement, all while aiming to improve deliverability and response rates. The platform is particularly valued for its ability to create hyper-personalized email campaigns to stand out in crowded inboxes.</span></p></div>
        </div><div class="kg-card kg-toggle-card" data-kg-toggle-state="close">
            <div class="kg-toggle-heading">
                <h4 class="kg-toggle-heading-text"><b><strong style="white-space: pre-wrap;">Why should I build a Lemlist clone instead of using Lemlist directly?</strong></b></h4>
                <button class="kg-toggle-card-icon" aria-label="Expand toggle to read content">
                    <svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"></path>
                    </svg>
                </button>
            </div>
            <div class="kg-toggle-content"><p><span style="white-space: pre-wrap;">Building your own app offers flexibility, customization, and ownership. You can tailor the app to your specific needs, integrate additional features, and avoid subscription costs associated with pre-built tools.</span></p></div>
        </div><div class="kg-card kg-toggle-card" data-kg-toggle-state="close">
            <div class="kg-toggle-heading">
                <h4 class="kg-toggle-heading-text"><b><strong style="white-space: pre-wrap;">Is it cost-effective to build this app compared to using Lemlist?</strong></b></h4>
                <button class="kg-toggle-card-icon" aria-label="Expand toggle to read content">
                    <svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"></path>
                    </svg>
                </button>
            </div>
            <div class="kg-toggle-content"><p><span style="white-space: pre-wrap;">Yes, while there may be initial development costs, building your app eliminates ongoing subscription fees and gives you complete control over the tool.</span></p></div>
        </div><div class="kg-card kg-toggle-card" data-kg-toggle-state="close">
            <div class="kg-toggle-heading">
                <h4 class="kg-toggle-heading-text"><b><strong style="white-space: pre-wrap;">Can I customize the features of my Lemlist clone app?</strong></b></h4>
                <button class="kg-toggle-card-icon" aria-label="Expand toggle to read content">
                    <svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"></path>
                    </svg>
                </button>
            </div>
            <div class="kg-toggle-content"><p><span style="white-space: pre-wrap;">Absolutely! This guide offers a base implementation, but you can expand its functionality based on your requirements. For instance, you can add email scheduling, advanced analytics, or A/B testing capabilities.</span></p></div>
        </div> ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ This Is How I Accessed Professional Social Network Sales Navigator API: A Guide ]]></title>
        <description><![CDATA[ Unlock Professional Social Network Sales Navigator API&#39;s potential. Steps, Features, pricing, and benefits for boosting your sales strategy. ]]></description>
        <link>https://nubela.co/blog/access-linkedin-sales-navigator-api-guide/</link>
        <guid isPermaLink="false">672e65ea1cb59d0001b1787f</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Sese | Technical Writer ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/10/IMG_4677.jpeg"/>
        <pubDate>Thu, 14 Nov 2024 10:14:59 +0800</pubDate>
        <media:content url="" medium="image"/>
        <content:encoded><![CDATA[ <p>So you want to rank up your lead generation game. Cut through the noise towards prospects and ideal candidates. Well, Professional Social Network Sales Navigator API does just that, and much more.</p>
<p>Today, I will share how I accessed the Professional Social Network Sales Navigator API and everything you will need to know about it. From set ups with actual code snippets, to the challenges you might face, we will get through each aspect one by one. Lastly, I will introduce you to an alternative, Proxycurl. A paid API that covers those limitations and offers you more. Intrigued? Let's get right into it.</p>
<p>I'll kick this off with a quick demo on how you can start pulling sales data using Professional Social Network Sales Navigator API.</p>
<pre><code class="language-python">import requests

headers = {
	'Authorization': 'Bearer your_access_token',
}

response = requests.get('https://api.professionalsocialnetwork.com/v2/salesNavigatorData', headers=headers)

print(response.json())
</code></pre>
<p>By the end of this article, you will be able to leverage Professional Social Network's professional network (like I did!) and discover a new game changing tool, Proxycurl.</p>
<h2 id="what-is-the-professional-social-network-sales-navigator-api">What is the Professional Social Network Sales Navigator API?</h2>
<p>In a sentence, Professional Social Network Sales Navigator API is an advanced tool that grants access to Professional Social Network's network and professional data. Tapping into that data means you get valuable insights for sales intelligence, lead generation, and market research.</p>
<p>Here's a simple use case. Let's say you're tracking a few candidates for a Chief Marketing Officer (CMO) role at your company. With Professional Social Network Sales Navigator API, you can create a custom dashboard to keep an eye on these individuals. The dashboard will automatically update whenever someone on your list changes jobs or updates their profile, so you're always in the loop.</p>
<p>With this API, you can:</p>
<h3 id="fetch-detailed-personal-and-company-data"><strong>Fetch detailed personal and company data</strong></h3>
<p>Personally, this was the reason why I tried the Professional Social Network Sales Navigator API. The API allows you to fetch personal and company data from Professional Social Network and enrich your platform by integrating these profiles into your platform. Everything from work history, skills, endorsements, mutual connections, will help you understand your prospect clients or possible networks.</p>
<h3 id="data-recency-and-sync"><strong>Data Recency and Sync</strong></h3>
<p>Professional Social Network Sales Navigator API allows you to <a href="https://www.professionalsocialnetwork.com/help/sales-navigator/answer/a106005sync?ref=nubela.co" rel="nofollow">sync</a> the pulled data with your existing customer information. Plus, you can directly create contact records from these search results and build a robust contact database in no time. Now you've got a better market view to draw your strategies and make decisions.</p>
<p>What's better, using the real-time data sync feature of Professional Social Network Sales Navigator API and synchronizing data directly from search queries, you can always pull the most current and accurate information on your platform.</p>
<h3 id="advanced-search-option"><strong>Advanced Search Option</strong></h3>
<p>With Professional Social Network Sales Navigator, you can filter your search based on criterias like industry, location, company, job title, experience, etc. Pair that with its data syncing capabilities, and you now have a custom contact record of potential leads in your database.</p>
<h2 id="how-to-access-professional-social-network-sales-navigator-api">How to Access Professional Social Network Sales Navigator API</h2>
<p>Accessing the Professional Social Network Sales Navigator API was not as straightforward as I thought. I went in with the assumption that you could just create an account and call an endpoint. There are a lot of restrictions and costs involved with the tool.</p>
<p>Follow these steps to access the tool:</p>
<h3 id="step-1-get-the-sales-navigator-subscription"><strong>Step 1: Get the Sales Navigator Subscription</strong></h3>
<p>The first step is to have an active Sales Navigator subscription. Head on over to <a href="https://business.professionalsocialnetwork.com/sales-solutions/compare-plans?ref=nubela.co" rel="nofollow">Sales Navigator Subscriptions</a> and choose one of their paid plans. You need to pay your way to a premium plan for access advanced features for lead generation, prospecting, and sales engagement.</p>
<h3 id="step-2-apply-for-api-access"><strong>Step 2: Apply for API Access</strong></h3>
<p>With a Sales Navigator subscription, you can now apply for API access through Professional Social Network's <a href="https://developer.professionalsocialnetwork.com/?ref=nubela.co" rel="nofollow">developer platform</a>. Here, you must provide a detailed explanation of your use case and how you plan to utilize the API.</p>
<h3 id="step-3-wait-for-the-approval-process"><strong>Step 3: Wait for the Approval Process</strong></h3>
<p>Once you have applied for the access, it goes through an approval process. Professional Social Network carefully reviews API access applications to ensure they align with their guidelines and terms of service. The approval process can take several weeks, so you have to be patient.</p>
<h2 id="how-to-authenticate-with-professional-social-network-sales-navigator-api">How to Authenticate with Professional Social Network Sales Navigator API</h2>
<p>Here's how to authenticate with the Sales Navigator API.</p>
<pre><code class="language-python">import requests

#Function to authenticate and get access token\
def  get_access_token(client_id, client_secret, redirect_uri, auth_code):\
url = "https://www.professionalsocialnetwork.com/oauth/v2/accessToken"\
params = {\
 'grant_type': 'authorization_code',\
 'code': auth_code,\
 'redirect_uri': redirect_uri,\
 'client_id': client_id,\
 'client_secret': client_secret\
}

response = requests.post(url, data=params)\
return response.json()

# Example usage\
client_id = 'your_client_id'\
client_secret = 'your_client_secret'\
redirect_uri = 'your_redirect_uri'\
auth_code = 'your_auth_code'

access_token = get_access_token(client_id, client_secret, redirect_uri, auth_code)\
print(access_token)
</code></pre>
<h2 id="pulling-data-from-professional-social-network-sales-navigator-apia-guide">Pulling Data from Professional Social Network Sales Navigator API - A Guide</h2>
<p>Due to the access restrictions and limitations, fetching data directly from Professional Social Network Sales Navigator requires a more complex approach. The approval process in itself is a headache. Once you're approved, you can use the API to fetch data.</p>
<p>Take a look at this instance, a snippet for retrieving a person profile.</p>
<pre><code class="language-python">import Professional Social Network_sales_navigator # Assuming a library exists for the API

#Replace with your access token and person ID\
access_token = 'your_Professional Social Network_sales_navigator_access_token'\
person_id = 'john-doe-123456'

client = Professional Social Network_sales_navigator.Client(access_token)\
profile_data = client.get_profile(person_id)

# Returned data may include limited fields based on your access level\
print(profile_data) # This might only contain basic information like name, headline, etc.
</code></pre>
<p>The person profile returned by your request can have basic fields like the person's name, job title, location, and industry, or a greater number of fields including experience and education, depending on your subscription. Here’s what your output should look like:</p>
<pre><code class="language-python">{
  "name": "John Doe",
  "headline": "Senior Software Engineer at TechCorp",
  "Professional Social Network_url": "https://professionalsocialnetwork.com/in/john-doe-123456/",
  "profile_picture_url": "https://media.licdn.com/profile-pic.jpg",
  "current_position": {
    "title": "Senior Software Engineer",
    "company_name": "TechCorp",
    "start_date": "2019-06"
  },
  "location": "San Francisco Bay Area",
  "connections_count": 500,
  "summary": "Passionate software engineer with over 7 years of experience in building scalable web applications and AI solutions.",
  "skills": ["Java", "Spring Boot", "Cloud Computing", "Machine Learning"]
}
</code></pre>
<p>Be advised the data returned might be limited by your access level (basic details) and could take longer to obtain due to the application process.</p>
<p>But that's not all. Here are a few major things to keep in mind while trying to pull data using Professional Social Network Sales Navigator API:</p>
<h3 id="define-the-scope"><strong>Define the Scope</strong></h3>
<p>Determine what kind of data you want to extract. Is it lead data, company profiles, or job postings? Choose the fields you want so you know the right API endpoints to call.</p>
<h3 id="api-documentation"><strong>API Documentation</strong></h3>
<p>Help yourself to the <a href="https://www.professionalsocialnetwork.com/help/sales-navigator/answer/a526048?ref=nubela.co" rel="nofollow">Professional Social Network Sales Navigator API documentation</a> to understand the API structure, endpoints, parameters, and best practices.</p>
<h3 id="rate-limits"><strong>Rate Limits</strong></h3>
<p>Be mindful of the <a href="https://learn.microsoft.com/en-us/Professional%20Social%20Network/shared/api-guide/concepts/rate-limits?ref=nubela.co" rel="nofollow">API rate limits</a>. Don't fall for the same thing I did. You can only make a limited number of API calls within a certain time frame (e.g., per day). For instance, you may be limited to 1000 API requests per day, depending on your subscription tier. Go over and your application will stop functioning temporarily.</p>
<h2 id="is-professional-social-network-sales-navigator-api-free">Is Professional Social Network Sales Navigator API Free?</h2>
<p>Just to be clear, Professional Social Network Sales Navigator API is NOT a free service. The pricing for Sales Navigator is publicly available and may vary based on your use case. You can find more information about pricing and usage limits by contacting Professional Social Network's <a href="https://developer.professionalsocialnetwork.com/?ref=nubela.co" rel="nofollow">developer support</a> or reviewing their <a href="https://www.professionalsocialnetwork.com/help/sales-navigator/answer/a526048?ref=nubela.co" rel="nofollow">API documentation</a>.</p>
<h2 id="difficulty-in-using-professional-social-network-sales-navigator-api">Difficulty in Using Professional Social Network Sales Navigator API</h2>
<p>There are a lot of problems that come with using Professional Social Network Sales Navigator API. Some I expected, and some I faced along the way.</p>
<p>Here are some problems you should look out for:</p>
<h3 id="access-restrictions"><strong>Access Restrictions</strong></h3>
<p>As I stated before, the approval process is a lengthy one. It depends on your application as much as it depends on Professional Social Network's process. The wait is not the worst part however, as it is hard to get approval. You may need to meet specific criteria, such as having a verified Professional Social Network profile or being part of a business account. There is always a risk of rejection if your use case is not deemed appropriate. Check out <a href="<https://developer.professionalsocialnetwork.com/>" rel="nofollow">API access</a> in Professional Social Network for more information.</p>
<h3 id="api-rate-limits"><strong>API Rate Limits</strong></h3>
<p>I went overboard with my API calls and Professional Social Network temporarily shut down my app. There are strict <a href="https://learn.microsoft.com/en-us/Professional%20Social%20Network/shared/api-guide/concepts/rate-limits?ref=nubela.co" rel="nofollow">rate limits</a> on the number of API calls you can make within a specific timeframe. The amount will depend on what subscription you paid for. Be careful with the amount of APIs you call if you don't want to go through the same thing I did!</p>
<p>It was an inconvenience for sure but the consequences can be tenfold for businesses than individuals. On a large scale, encountering these limitations can potentially hinder operations.</p>
<h3 id="cost"><strong>Cost</strong></h3>
<p>You'll need an active <a href="https://business.professionalsocialnetwork.com/sales-solutions/compare-plans?ref=nubela.co" rel="nofollow">Sales Navigator subscription</a> to access the API. It does not come cheap and so it can be very hard for startups or small businesses.</p>
<h3 id="technical-complexity-and-steep-learning-curve"><strong>Technical Complexity and Steep Learning Curve</strong></h3>
<p>Integrating the Professional Social Network Sales Navigator API into your systems is easier said than done. You also have to devote your time to understand the API's structure, endpoints, and best practices despite your technical expertise. Then again, you have to be on the lookout for API errors and rate limits.</p>
<h2 id="enter-proxycurlthe-better-alternative-to-professional-social-network-sales-navigator-api">Enter Proxycurl- The Better Alternative to Professional Social Network Sales Navigator API</h2>
<p>Professional Social Network Sales Navigator API has a baggage of its own. There is no avoiding its shortcomings, especially when it comes to access, rate limits, and customization.</p>
<p>This is where <strong>Proxycurl</strong> steps in as a superior alternative API solution.</p>
<h2 id="what-is-proxycurl">What is Proxycurl?</h2>
<p>Proxycurl is an API product that allows businesses and developers to pull and enrich professional profile and company data from Professional Social Network. Whether you're building a B2B sales tool, an HR application, or a data aggregator, Proxycurl provides the information you need with fewer barriers and greater customization options compared to Professional Social Network Sales Navigator API.</p>
<h2 id="why-is-proxycurl-better-than-professional-social-network-sales-navigator-api">Why is Proxycurl better than Professional Social Network Sales Navigator API?</h2>
<p>Proxycurl is BETTER than Professional Social Network Sales Navigator API. Believe me. Let me prove it to you.</p>
<h3 id="no-approval-process"><strong>No Approval Process</strong></h3>
<p>You don't have to cast your application and hope you get approved while you're dangling for weeks on end. And Professional Social Network's strict eligibility criteria does you no favors. Whether you're an independent researcher, a startup, a small business or a global enterprise, Proxycurl is open for all. Try it using free credits from <a href="https://nubela.co/proxycurl/auth/register?ref=nubela.co">signing up</a> or subscribe to one of the available plans and get your data.</p>
<h3 id="high-api-rate-limits"><strong>High API Rate Limits</strong></h3>
<p>In comparison, Proxycurl offers significantly higher rate limits than LinekdIn Sales Navigator API. Pair that up with a high degree of scalability, and you have got yourself a tool that grows alongside you.</p>
<h3 id="customizable-data-output"><strong>Customizable Data Output</strong></h3>
<p>Proxycurl provides greater flexibility in data extraction. You can specify the exact fields and information you need, then customize the data output to match your specific requirements.</p>
<p>You also have the ability to access historical data as well. Proxycurl allows you flexibility in data freshness, with an option to extract freshly-scraped data, data 29 days old or younger or historical data that is older than 29 days.</p>
<h3 id="transparent-pricing-plans"><strong>Transparent Pricing Plans</strong></h3>
<p>Proxycurl's <a href="https://nubela.co/proxycurl/pricing?ref=nubela.co">pricing plans</a> are publicly available on the website. Along with plans, there are clear tiers and usage-based fees for those who are unsure about their usage. It also goes without saying that the cost is far more affordable than that of Professional Social Network Sales Navigator.</p>
<table>
<thead>
<tr>
<th>Plans</th>
<th>Professional Social Network Sales Navigator</th>
<th>Proxycurl</th>
</tr>
</thead>
<tbody>
<tr>
<td>Free</td>
<td>N/A</td>
<td>100 free credits upon signup</td>
</tr>
<tr>
<td>Basic Paid</td>
<td>Core (for individuals)<br>$99/mo</td>
<td>Starter <br>$49/mo</td>
</tr>
<tr>
<td>High-end Paid</td>
<td>Advanced plus (for teams)<br>$1,600 per person/year</td>
<td>Enterprise <br>&lt;$2,000/year</td>
</tr>
</tbody>
</table>
<h2 id="how-to-pull-data-using-proxycurl-the-easy-way">How to pull data using Proxycurl (The Easy Way)</h2>
<p>Fetching data with Proxycurl is super simple. All you need is an API key and the target URL.</p>
<p>Here's a snippet using Proxycurl, doing the same thing as I did with the Professional Social Network API, pulling a person profile.</p>
<pre><code class="language-python">import requests

#Replace with your Proxycurl API key\
api_key = 'your_proxycurl_api_key'\
person_Professional Social Network_url = 'https://professionalsocialnetwork.com/in/john-doe-123456/'

url = f'https://nubela.co/proxycurl/api/v2/Professional Social Network?url={person_Professional Social Network_url}'\
headers = {'Authorization': f'Bearer {api_key}'}

response = requests.get(url, headers=headers)

if response.status_code == 200:\
profile_data = response.json()\
print(profile_data) # This could include richer data depending on Proxycurl's capabilities\
else:\
print(f"Error: {response.status_code}")
</code></pre>
<p>And that's it. Here’s what the output from Proxycurl looks like.</p>
<pre><code class="language-python">{
  "name": "John Doe",
  "headline": "Senior Software Engineer at TechCorp",
  "profile_picture_url": "https://example.com/profile-pic.jpg",
  "Professional Social Network_url": "https://professionalsocialnetwork.com/in/john-doe-123456/",
  "current_company": {
    "name": "TechCorp",
    "position": "Senior Software Engineer",
    "url": "https://professionalsocialnetwork.com/company/techcorp",
    "start_date": "2019-06-01"
  },
  "past_companies": [
    {
      "name": "WebInnovators",
      "position": "Software Engineer",
      "start_date": "2016-08-01",
      "end_date": "2019-05-31"
    }
  ],
  "location": "San Francisco, California, USA",
  "education": [
    {
      "institution": "Stanford University",
      "degree": "Master's in Computer Science",
      "start_date": "2012-09-01",
      "end_date": "2014-06-01"
    }
  ],
  "skills": ["Python", "Java", "AWS", "Machine Learning"],
  "contact_info": {
    "email": "john.doe@example.com",
    "phone": "+1-234-567-8901"
  },
  "last_activity": {
    "date": "2023-10-15",
    "content": "Excited to announce the launch of our new AI-powered platform at TechCorp!"
  },
  "remaining_data": null
}
</code></pre>
<p>The Person Profile Endpoint here will return you their name, social media ids, personal email and much more. The data returned is more comprehensive and is readily available with a valid API key.</p>
<h2 id="proxycurl-api-vs-professional-social-network-sales-navigator-apia-summary">Proxycurl API vs Professional Social Network Sales Navigator API- A Summary</h2>
<p>Let's bring these two API solutions head-to-head and see the difference.</p>
<table>
<thead>
<tr>
<th style="text-align:center"><strong>Feature</strong></th>
<th style="text-align:center"><strong>Professional Social Network Sales Navigator API</strong></th>
<th style="text-align:center"><strong>Proxycurl API</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:center"><strong>Access</strong></td>
<td style="text-align:center">Lengthy approval process required</td>
<td style="text-align:center">Instant access with API key</td>
</tr>
<tr>
<td style="text-align:center"><strong>API Rate Limits</strong></td>
<td style="text-align:center">Limited number of API calls per day</td>
<td style="text-align:center">High API rate limits for large-scale data pulling</td>
</tr>
<tr>
<td style="text-align:center"><strong>Customization</strong></td>
<td style="text-align:center">Limited customization for data fields</td>
<td style="text-align:center">Flexible and customizable data output</td>
</tr>
<tr>
<td style="text-align:center"><strong>Pricing</strong></td>
<td style="text-align:center">Expensive, tiered pricing model</td>
<td style="text-align:center">Transparent, affordable pricing</td>
</tr>
<tr>
<td style="text-align:center"><strong>Real-Time Data</strong></td>
<td style="text-align:center">Data may not always be up-to-date</td>
<td style="text-align:center">Accurate, real-time data</td>
</tr>
<tr>
<td style="text-align:center"><strong>Ease of Use</strong></td>
<td style="text-align:center">Requires complex setup and management</td>
<td style="text-align:center">Easy to use with simple API calls</td>
</tr>
<tr>
<td style="text-align:center"><strong>Customer Support</strong></td>
<td style="text-align:center">Limited customer support</td>
<td style="text-align:center">Responsive and developer-friendly support</td>
</tr>
</tbody>
</table>
<h2 id="final-thoughts">Final Thoughts</h2>
<p>The Professional Social Network Sales Navigator API is a powerful tool that allows you to harness Professional Social Network's vast pool of professional data. Follow along with the steps and you will get your data in no time using Professional Social Network Sales Navigator API. Well of course, not mentioning the long approval process. Oh and there's also a high chance your application getting rejected. Bleak.</p>
<p>Proxycurl is here to save the day. Higher API rate limits, easier access, and more customization options at a lower cost. Pull the data you need, and do not look back.</p>
<p>No compromises, just fast and reliable data. Try <a href="https://nubela.co/proxycurl/auth/register?ref=nubela.co">Proxycurl</a> today!</p>
<h2 id="faqs">FAQs</h2>
<div class="kg-card kg-toggle-card" data-kg-toggle-state="close">
            <div class="kg-toggle-heading">
                <h4 class="kg-toggle-heading-text"><span style="white-space: pre-wrap;">How do I get data from Professional Social Network Sales Navigator?</span></h4>
                <button class="kg-toggle-card-icon" aria-label="Expand toggle to read content">
                    <svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"></path>
                    </svg>
                </button>
            </div>
            <div class="kg-toggle-content"><p><span style="white-space: pre-wrap;">Professional Social Network Sales Navigator does not have a native functionality for exporting lead lists. To export your lists to a CSV file, you must use a third party tool like Evaboot and follow through with their steps.</span></p></div>
        </div><div class="kg-card kg-toggle-card" data-kg-toggle-state="close">
            <div class="kg-toggle-heading">
                <h4 class="kg-toggle-heading-text"><span style="white-space: pre-wrap;">Can you automate Professional Social Network Sales Navigator?</span></h4>
                <button class="kg-toggle-card-icon" aria-label="Expand toggle to read content">
                    <svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"></path>
                    </svg>
                </button>
            </div>
            <div class="kg-toggle-content"><p><span style="white-space: pre-wrap;">Yes, Professional Social Network Sales Navigator's advanced search filters allow you to identify and automatically connect with relevant prospects. Tasks like sending personalized InMail messages, updates, and follow-ups based insights can be automated using Professional Social Network Sales Navigator.</span></p></div>
        </div><div class="kg-card kg-toggle-card" data-kg-toggle-state="close">
            <div class="kg-toggle-heading">
                <h4 class="kg-toggle-heading-text"><span style="white-space: pre-wrap;">Can I get Professional Social Network Sales Navigator for free?</span></h4>
                <button class="kg-toggle-card-icon" aria-label="Expand toggle to read content">
                    <svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"></path>
                    </svg>
                </button>
            </div>
            <div class="kg-toggle-content"><p><span style="white-space: pre-wrap;">The Professional Social Network Sales Navigator is a paid API. You can sign up for a Professional Social Network Sales Navigator free trial with your Professional Social Network account. However, the free trial is only available for members who are currently NOT on any Professional Social Network paid subscription plan and have not taken any Professional Social Network free trials for the last 365 days.</span></p></div>
        </div><div class="kg-card kg-toggle-card" data-kg-toggle-state="close">
            <div class="kg-toggle-heading">
                <h4 class="kg-toggle-heading-text"><b><strong style="white-space: pre-wrap;">Can I access Professional Social Network profiles directly through the </strong></b><span style="white-space: pre-wrap;">Professional Social Network</span><b><strong style="white-space: pre-wrap;"> Sales Navigator API?</strong></b></h4>
                <button class="kg-toggle-card-icon" aria-label="Expand toggle to read content">
                    <svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"></path>
                    </svg>
                </button>
            </div>
            <div class="kg-toggle-content"><p><span style="white-space: pre-wrap;">Direct profile access is limited, but you can access data related to leads and accounts, which integrates into CRM and sales systems, respecting Professional Social Network’s data-use policies.</span></p></div>
        </div><div class="kg-card kg-toggle-card" data-kg-toggle-state="close">
            <div class="kg-toggle-heading">
                <h4 class="kg-toggle-heading-text"><span style="white-space: pre-wrap;">Is Professional Social Network Sales Navigator worth it?</span></h4>
                <button class="kg-toggle-card-icon" aria-label="Expand toggle to read content">
                    <svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"></path>
                    </svg>
                </button>
            </div>
            <div class="kg-toggle-content"><p><span style="white-space: pre-wrap;">With so many benefits like advanced search filters, lead recommendations, and granular analytics, it is a good choice for job seekers and recruiters. Is it the best choice though? Try </span><a href="https://nubela.co/proxycurl/auth/register?ref=nubela.co"><u><span class="underline" style="white-space: pre-wrap;">Proxycurl</span></u></a><span style="white-space: pre-wrap;"> and decide for yourself.</span></p></div>
        </div><div class="kg-card kg-toggle-card" data-kg-toggle-state="close">
            <div class="kg-toggle-heading">
                <h4 class="kg-toggle-heading-text"><span style="white-space: pre-wrap;">How to scrape data from Professional Social Network Sales Navigator for free?</span></h4>
                <button class="kg-toggle-card-icon" aria-label="Expand toggle to read content">
                    <svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"></path>
                    </svg>
                </button>
            </div>
            <div class="kg-toggle-content"><p><span style="white-space: pre-wrap;">You can scrape data from Professional Social Network Sales Navigator for free manually. A tedious task of searching profiles one-by-one and copy-pasting information. It is practical if you only need data on a small number of Professional Social Network Sales Navigator profiles.&nbsp;</span></p></div>
        </div><div class="kg-card kg-toggle-card" data-kg-toggle-state="close">
            <div class="kg-toggle-heading">
                <h4 class="kg-toggle-heading-text"><b><strong style="white-space: pre-wrap;">How secure is the Professional Social Network Sales Navigator API?</strong></b></h4>
                <button class="kg-toggle-card-icon" aria-label="Expand toggle to read content">
                    <svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"></path>
                    </svg>
                </button>
            </div>
            <div class="kg-toggle-content"><p><span style="white-space: pre-wrap;">The API is designed with Professional Social Network’s data security policies in mind, so the connections are secure and access is controlled according to the user’s license.</span></p></div>
        </div><div class="kg-card kg-toggle-card" data-kg-toggle-state="close">
            <div class="kg-toggle-heading">
                <h4 class="kg-toggle-heading-text"><b><strong style="white-space: pre-wrap;">Is Professional Social Network Sales Navigator API GDPR-compliant?</strong></b></h4>
                <button class="kg-toggle-card-icon" aria-label="Expand toggle to read content">
                    <svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"></path>
                    </svg>
                </button>
            </div>
            <div class="kg-toggle-content"><p><span style="white-space: pre-wrap;">Yes, Professional Social Network adheres to GDPR and other data protection laws, so API users must also follow data privacy guidelines, especially when handling personal information from the platform.</span></p></div>
        </div> ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ People Data Labs Pricing: Is it worth it? ]]></title>
        <description><![CDATA[ Learn People Data Labs Pricing: Plans, pricing and product. Review free and paid plans. Is the premium price worth it? ]]></description>
        <link>https://nubela.co/blog/people-data-labs-pricing/</link>
        <guid isPermaLink="false">67295bb71cb59d0001b1766c</guid>
        <category><![CDATA[ people data labs ]]></category>
        <dc:creator><![CDATA[ Sese | Technical Writer ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/10/IMG_4677.jpeg"/>
        <pubDate>Fri, 08 Nov 2024 12:19:50 +0800</pubDate>
        <media:content url="" medium="image"/>
        <content:encoded><![CDATA[ <p>Price is a big factor when you're looking for a data provider, whether you're a business looking to save some budget, or an independent researcher working with whatever funds you have. Of course, when you do spend your budget, you would want every penny of that budget spent to be worth it.</p>
<p>And so today, let's look into how much People Data Labs costs and what you'll get in return. But of course you can find that information on their <a href="https://www.peopledatalabs.com/pricing/person?ref=nubela.co" rel="nofollow">pricing page</a> effortlessly. So here’s my proposition, along with their pricing, we will look what they offer for it, and if the investment is truly worth it.</p>
<p>For starters, here's a table showing <a href="https://www.peopledatalabs.com/pricing/person?ref=nubela.co" rel="nofollow">People Data Labs pricing</a> plans.</p>
<table>
<thead>
<tr>
<th style="text-align:center">Plans</th>
<th style="text-align:left">Price</th>
<th style="text-align:center">Data Records</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:center">Free</td>
<td style="text-align:left">N/A</td>
<td style="text-align:center">Up to 100</td>
</tr>
<tr>
<td style="text-align:center">Pro</td>
<td style="text-align:left">$98/mo for person data</td>
<td style="text-align:center">Starts at 350 credits ($0.28/ profile)</td>
</tr>
<tr>
<td style="text-align:center"></td>
<td style="text-align:left">$100/mo for company data</td>
<td style="text-align:center">Starts at 1,000 credits</td>
</tr>
<tr>
<td style="text-align:center">Enterprise</td>
<td style="text-align:left">Custom</td>
<td style="text-align:center">Custom</td>
</tr>
</tbody>
</table>
<p><em><strong>Note:</strong> The *<em>FREE</em> access is to their raw company database, which includes general company information like name, location, website info, etc. It <strong>DOES NOT</strong> contain any contact information. The data is quarterly updated and while it can be a good reference point, to get the actual fields that you need, you have to subscribe to one of their paid plans.</em></p>
<h2 id="what-does-people-data-labs-do">What does People Data Labs do?</h2>
<p><a href="https://www.peopledatalabs.com/?ref=nubela.co" rel="nofollow">People Data Labs (PDL)</a> is a data provider that helps companies build innovative and compliant data solutions at scale. They scrape publicly available data and work with third-party partners to get private data, then package it into datasets that customers can call using APIs.</p>
<p>Their data points offering are one of the largest in the market. They provide everything from name, location, contact information, social media details, and much more. Though they are guilty of breaking down one data point into many granular forms, which inflate the absolute quantity. For instance, let’s look at the job location address; which is split into 10 different fields! Examples include, <code>job_company_location_name</code>, <code>job_company_location_locality</code>, <code>job_company_location_metro</code>, <code>job_company_location_region</code>, etc.</p>
<p>Customers who opted for PDL’s service seem satisfied with what they get. Despite a few grievances, which I will discuss later, <a href="https://nubela.co/blog/people-data-labs-reviews/">People Data Labs Reviews</a> are largely positive. Their commitment to quality and compliance is commendable. No doubt, they are setting some high industry standards.</p>
<h2 id="people-data-labs-pricing-plans">People Data Labs Pricing Plans</h2>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcr0l9YAX2X5cHVCbPsbSfwkO6byZKDaYm5zwUR5Z05jFTKqT2DgKXZ5SUSzGKj38rfECtdTym8yIr9Gjber5yV7xWoksRLLprxOYCi85kRskHSyEVHY8f5frE7jGbQJCVnExosJP7EobGc-_1kFm841S3t?key=-xEtMtCS4WW6jckWwqYJfg" alt="People Data Labs Pricing" loading="lazy"></p>
<p>The pricing model has three main subscription tiers available across each data plan type. For personal, company, or IP data plans, you can choose between Free, Pro, or Enterprise options.</p>
<p>Each tier provides access to different data fields, some of which are behind paywalls. The Free plan comes with limited field access, the Pro plan includes moderate access, and the Enterprise plan offers the most extensive field access. If your current plan doesn't cover specific fields you need, you can add them manually when upgrading from Free to Pro or even mid-cycle on the Pro plan. Keep in mind, though, that each additional field bundle you add is priced per credit.</p>
<p>See the field bundles pricing table below:</p>
<table>
<thead>
<tr>
<th>Field Bundle</th>
<th>Type</th>
<th>Price</th>
</tr>
</thead>
<tbody>
<tr>
<td>Inferred Salary</td>
<td>Person</td>
<td>$0.01</td>
</tr>
<tr>
<td>Inferred Years Experience</td>
<td>Person</td>
<td>$0.01</td>
</tr>
<tr>
<td>Professional Social Network Connections</td>
<td>Person</td>
<td>$0.01</td>
</tr>
<tr>
<td>Premium Resume Fields</td>
<td>Person</td>
<td>$0.03</td>
</tr>
<tr>
<td>Ticker Information</td>
<td>Person</td>
<td>$0.01</td>
</tr>
<tr>
<td>Premium Company Attributes</td>
<td>Person</td>
<td>$0.03</td>
</tr>
<tr>
<td>Company Premium</td>
<td>Company</td>
<td>$0.10</td>
</tr>
<tr>
<td>Inferred Revenue</td>
<td>Company</td>
<td>$0.03</td>
</tr>
<tr>
<td>Funding Details</td>
<td>Company</td>
<td>$0.08</td>
</tr>
</tbody>
</table>
<h2 id="people-data-labs-api-pricing-usage-based-model">People Data Labs API Pricing (Usage Based Model)</h2>
<p>Apart from their subscription plan, there is a usage-based <a href="<https://support.peopledatalabs.com/hc/en-us/articles/25794271805211-Pricing>" rel="nofollow">'pay-as-you-go'</a> model as well. The pricing plan allows you to choose only those APIs you need, based on three volume-based tiers. The <a href="https://www.virtosoftware.com/pm/project-management-team/?ref=nubela.co">project team structure</a> can be crucial in determining which APIs are most relevant for your needs. You have the option to choose the amount of credits you purchase for each API and the silver lining is you're charged credits only when you get a successful match from the API.</p>
<p>Below, you'll find the pricing details for all the APIs provided by People Data Labs with a brief description. Be advised, it can get a bit complex as the pricing structure is super broken down (like their data points).</p>
<h3 id="person-enrichment-and-person-search-apis-pricing">Person Enrichment and Person Search APIs Pricing</h3>
<p><strong>Person Enrichment API:</strong> Enrich individual data by allowing access to all fields in person datasets. (Cost: 1 credit)</p>
<p><strong>Person Search APIs:</strong> Search datasets for individuals that match your query. (Cost: 1 credit)</p>
<table>
<thead>
<tr>
<th style="text-align:center">Payment Cycles</th>
<th style="text-align:center">Tier</th>
<th style="text-align:center">Credits</th>
<th style="text-align:center">Price</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:center">Monthly</td>
<td style="text-align:center">1</td>
<td style="text-align:center">350 to 2,500</td>
<td style="text-align:center">$98 to $700 ($0.28/ profile)</td>
</tr>
<tr>
<td style="text-align:center"></td>
<td style="text-align:center">2</td>
<td style="text-align:center">2,501 to 5,000</td>
<td style="text-align:center">$662.77 to $1,325.00 ($0.265/ profile)</td>
</tr>
<tr>
<td style="text-align:center"></td>
<td style="text-align:center">3</td>
<td style="text-align:center">5,001 to 8,333</td>
<td style="text-align:center">$1,250.25 to $2,083.25 ($0.25/ profile)</td>
</tr>
<tr>
<td style="text-align:center">Annual</td>
<td style="text-align:center">1</td>
<td style="text-align:center">4,200 to 30,000</td>
<td style="text-align:center">$940.80 to $6,720 ($0.224/ profile)</td>
</tr>
<tr>
<td style="text-align:center"></td>
<td style="text-align:center">2</td>
<td style="text-align:center">30,001 to 60,000</td>
<td style="text-align:center">$6,360.21 to $12,720 ($0.212/ profile)</td>
</tr>
<tr>
<td style="text-align:center"></td>
<td style="text-align:center">3</td>
<td style="text-align:center">60,001 to 99,999</td>
<td style="text-align:center">$12,000.20 to $19,999.80 ($0.20/ profile)</td>
</tr>
</tbody>
</table>
<h3 id="person-identify-api-pricing">Person Identify API Pricing</h3>
<p><strong>Person Identify API:</strong> Search through the dataset to find profiles that best match your query.(Cost: 1 credit)</p>
<table>
<thead>
<tr>
<th style="text-align:center">Payment Cycles</th>
<th style="text-align:center">Tier</th>
<th style="text-align:center">Credits</th>
<th style="text-align:center">Price</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:center">Monthly</td>
<td style="text-align:center">1</td>
<td style="text-align:center">200 to 499</td>
<td style="text-align:center">$100 to  $1,000 ($0.10/ profile)</td>
</tr>
<tr>
<td style="text-align:center"></td>
<td style="text-align:center">2</td>
<td style="text-align:center">500 to 999</td>
<td style="text-align:center">$750.08 to $1,875.00 ($0.075/ profile)</td>
</tr>
<tr>
<td style="text-align:center"></td>
<td style="text-align:center">3</td>
<td style="text-align:center">1,000 to 4,167</td>
<td style="text-align:center">$1,625.07 to $2,166.65 ($0.065/ profile)</td>
</tr>
<tr>
<td style="text-align:center">Annual</td>
<td style="text-align:center">1</td>
<td style="text-align:center">2,400 to 5,999</td>
<td style="text-align:center">$1,056 to $2,639.56 ($0.44/ profile)</td>
</tr>
<tr>
<td style="text-align:center"></td>
<td style="text-align:center">2</td>
<td style="text-align:center">6,000 to 11,999</td>
<td style="text-align:center">$2,520 to $5,039.58 ($0.42/ profile)</td>
</tr>
<tr>
<td style="text-align:center"></td>
<td style="text-align:center">3</td>
<td style="text-align:center">12,000 to 49,999</td>
<td style="text-align:center">$4,800 to $19,999.60 ($0.40/ profile)</td>
</tr>
</tbody>
</table>
<h3 id="company-enrichment-company-search-apis-pricing">Company Enrichment &amp; Company Search APIs Pricing</h3>
<p><strong>Company Enrichment API:</strong> Enrich company data by allowing access to all fields in the company Schema. (Cost: 1 credit)<br>
<strong>Company Search API:</strong> Search datasets for companies that match your query.(Cost: 1 credit)</p>
<table>
<thead>
<tr>
<th style="text-align:center">Payment Cycles</th>
<th style="text-align:center">Tier</th>
<th style="text-align:center">Credits</th>
<th style="text-align:center">Price</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:center">Monthly</td>
<td style="text-align:center">1</td>
<td style="text-align:center">1,000 to 10,000</td>
<td style="text-align:center">$100 to $1,000 ($0.10/ profile)</td>
</tr>
<tr>
<td style="text-align:center"></td>
<td style="text-align:center">2</td>
<td style="text-align:center">10,001 to 25,000</td>
<td style="text-align:center">$750.08 to $1,875 ($0.075/ profile)</td>
</tr>
<tr>
<td style="text-align:center"></td>
<td style="text-align:center">3</td>
<td style="text-align:center">25,001 to 33,333</td>
<td style="text-align:center">$1,625.07 to $2,166.65 ($0.065 / profile)</td>
</tr>
<tr>
<td style="text-align:center">Annual</td>
<td style="text-align:center">1</td>
<td style="text-align:center">12,000 to 120,000</td>
<td style="text-align:center">$960 to $9,600 ($0.08/ profile)</td>
</tr>
<tr>
<td style="text-align:center"></td>
<td style="text-align:center">2</td>
<td style="text-align:center">120,001 to 300,000</td>
<td style="text-align:center">$7,200.06 to $18,000 ($0.06/ profile)</td>
</tr>
<tr>
<td style="text-align:center"></td>
<td style="text-align:center">3</td>
<td style="text-align:center">300,001 to 399,999</td>
<td style="text-align:center">$15,000.05 to $19,999.95 ($0.05/ profile)</td>
</tr>
</tbody>
</table>
<h3 id="ip-enrichment-api-pricing">IP Enrichment API Pricing</h3>
<p><strong>IP Enrichment API:</strong> Search IP address and return location, company, and other data associated with it. (Cost: 1 credit)</p>
<table>
<thead>
<tr>
<th style="text-align:center">Payment Cycles</th>
<th style="text-align:center">Tier</th>
<th style="text-align:center">Credits</th>
<th style="text-align:center">Price</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:center">Monthly</td>
<td style="text-align:center">1</td>
<td style="text-align:center">1,325 to 5,000</td>
<td style="text-align:center">$95.40 to $360 ($0.072/ profile)</td>
</tr>
<tr>
<td style="text-align:center"></td>
<td style="text-align:center">2</td>
<td style="text-align:center">5,001 to 10,000</td>
<td style="text-align:center">$300.06 to $600 ($0.06/ profile)</td>
</tr>
<tr>
<td style="text-align:center"></td>
<td style="text-align:center">3</td>
<td style="text-align:center">10,001 to 20,833</td>
<td style="text-align:center">$480.05 to $1,000 ($0.048/ profile)</td>
</tr>
<tr>
<td style="text-align:center">Annual</td>
<td style="text-align:center">1</td>
<td style="text-align:center">15,900 to 60,000</td>
<td style="text-align:center">$954 to $3,600 ($0.06/ profile)</td>
</tr>
<tr>
<td style="text-align:center"></td>
<td style="text-align:center">2</td>
<td style="text-align:center">60,001 to 120,000</td>
<td style="text-align:center">$3,000.05 to $6,000 ($0.05/ profile)</td>
</tr>
<tr>
<td style="text-align:center"></td>
<td style="text-align:center">3</td>
<td style="text-align:center">120,001 to 249,999</td>
<td style="text-align:center">$4,800.04 to $9,999.96 ($0.04/ profile)</td>
</tr>
</tbody>
</table>
<h2 id="is-people-data-labs-worth-it">Is People Data Labs worth it?</h2>
<p>The short answer is no. For what you’re paying, there is a lot that could be better. And honestly, I’m still not fully on board with the price, either.</p>
<p>Why? Let me explain.</p>
<h3 id="1-premium-pricing">1. Premium Pricing</h3>
<p>People Data Labs has a proven track record of providing quality, accurate data. Their premium price is based on their high number of data points they provide and their brand exposure. But it is not all sunny in San Francisco. The high price is a recurring pain pont, particularly for startups and small businesses who value the data but can’t justify the high costs.</p>
<p>The cost per profile on the basic paid plan (Pro Plan) comes to $0.28; <strong>ten times</strong> the cost of other data providers like  <a href="https://reachstream.com/?ref=nubela.co" rel="nofollow">ReachStream</a> and <a href="https://nubela.co/proxycurl/?ref=nubela.co">Proxycurl</a>, which charge closer to $0.02 per profile. This stark contrast in pricing makes alternatives worth considering.</p>
<h3 id="2-data-recency">2. Data Recency</h3>
<p>People Data Labs’ datasets are updated monthly by default. That is all in good faith for fresh data, but there are a lot of reviews stating some data fields are not as recent. Now, I’m not here to judge, and I’d like to think their customer service steps up when issues arise. Still, wouldn’t it be reassuring to have a clear, written guarantee to data freshness? That would be great in an ideal world. Hmm. Think about it while you check out <a href="https://nubela.co/blog/how-fresh-are-profiles-returned-by-proxycurl-api/">Proxycurl’s Data Freshness Guarantee</a> and decide what level of assurance works best for you.</p>
<h3 id="3-steep-learning-curve">3. Steep Learning Curve</h3>
<p>Most companies turn to data providers because they want them to handle the heavy lifting of data processing. You pay a price to make things convenient, so you can focus on things that actually need your attention. But if you’re having to dedicate a good chunk of your time just trying to know the platform, it defeats the purpose. A lot of customer were quick to point out the steep learning curve the platfrom has in their <a href="https://nubela.co/blog/people-data-labs-reviews/">reviews</a>. And when you’re paying the ‘People Data Labs’ price, you’re doubling down.</p>
<h3 id=""></h3>
<p>The intent here isn’t to question People Data Labs’ quality. By all means, they’re a reputable provider. But I beg to ask if their service is worth the price. For me, the answer is no. But don’t just take my word for it; check out <a href="https://nubela.co/blog/people-data-labs-reviews/">People Data Labs Reviews</a>. Real people sharing their real problems.</p>
<p>Now, ask yourself this,</p>
<p><strong>If you are paying a premium price, do you deserve these inconveniences? Moreover, is it necessary to pay a premium price, when other providers offer similar (or better) data quality at an economical price?</strong></p>
<p>The answer should be a resounding no.</p>
<h2 id="is-there-a-better-option">Is there a better option?</h2>
<p>I am here to tell you People Data Labs isn’t the only major player in the market. Before anything, assess your data needs. After you are confident in what you’re looking for, the only thing left to do is browse your options. Check out <a href="https://nubela.co/blog/top-alternatives-to-people-data-labs/">People Data Labs alternatives</a> to streamline your search. Here is a simmered down list:</p>
<ol>
<li>
<p><strong><a href="https://nubela.co/proxycurl/?ref=nubela.co">Proxycurl</a> (Best Overall):</strong> Proxycurl is a developer-focused company that provides a huge portfolio of API endpoints which scrape and enrich profiles. You can use Proxycurl's APIs flexibly and integrate them into any existing applications and workflows.</p>
</li>
<li>
<p><strong><a href="https://reachstream.com/?ref=nubela.co" rel="nofollow">ReachStream</a> (Cheapest):</strong> ReachStream is a B2B sales and marketing data platform offering a simple, user-friendly platform where you can view unlimited contact and company profiles, firmographics, along with unlimited contact data updates for free.</p>
</li>
<li>
<p><strong><a href="https://brightdata.com/?ref=nubela.co" rel="nofollow">Bright Data</a> (Most Flexible):</strong> Bright Data provides proxies for you to build your own scrapers. They also sell templates of scrapers that you can build on.</p>
</li>
<li>
<p><strong><a href="https://www.uplead.com/?ref=nubela.co" rel="nofollow">UpLead</a> (Highest Rated in G2):</strong> UpLead is the highest rated B2B data provider in G2. They provide a clean prospecting list, which you can then plug into your CRM.</p>
</li>
</ol>
<p>The best, complete alternative to People Data Labs, is Proxycurl. You can get everything you would from People Data Labs, at terms you can be satisfied with.</p>
<h2 id="people-data-labs-vs-proxycurl-pricing">People Data Labs Vs Proxycurl Pricing</h2>
<p>Here’s a direct comparison of People Data Labs and Proxycurl’s pricing:</p>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXeBq9M5aaRfTK8_tCxeY1imXDRvBtSoDVkaUA5DlCysLShHPTInhQMNckJucvrlcYESdElvooVjw460DQk0v7rEQrATm4pA5k5bbJT4FDU1UzhpwIJDLEw4MS0W6rS8-nEAhMSweQ?key=-xEtMtCS4WW6jckWwqYJfg" alt="People Data Labs vs Proxycurl table of difference" loading="lazy"></p>
<h2 id="final-thoughts">Final Thoughts</h2>
<p>You do not have to break your bank to meet your data needs. While People Data Labs are renowned for their data accuracy and quality, their pricing sticks out like a sore thumb. And with enough alternatives to choose from, it’s good sense to do your due diligence before you commit. Save your budget, or rather spend it on other areas that need strengthening, without compromising on data quality or freshness.</p>
<p>Give <a href="https://nubela.co/proxycurl/?ref=nubela.co">Proxycurl</a> a chance. Fulfill your data needs at a price you can be happy with. Whether you’re a developer seeking quick integration or a business in need of detailed professional data, Proxycurl delivers the same data points with far less hassle and cost.</p>
<p>Ready to stop overpaying and start gathering data efficiently? Try <a href="https://nubela.co/proxycurl/auth/register?ref=nubela.co">Proxycurl</a> today!</p>
<h2 id="faqs">FAQs</h2>
<div class="kg-card kg-toggle-card" data-kg-toggle-state="close">
            <div class="kg-toggle-heading">
                <h4 class="kg-toggle-heading-text"><span style="white-space: pre-wrap;">Is People Data Labs free?</span></h4>
                <button class="kg-toggle-card-icon" aria-label="Expand toggle to read content">
                    <svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"></path>
                    </svg>
                </button>
            </div>
            <div class="kg-toggle-content"><p><span style="white-space: pre-wrap;">People Data Labs is NOT a free service. They do have a free plan, where you get access to their datasets and select fields, but to get your hands on their full product and fields, you need to subscribe to one of their paid plans. The pricing is customized based on data volume, access needs, and usage frequency. However, be advised, you CANNOT sign up using your personal email. Their system only allows sign ups through work emails.</span></p></div>
        </div><div class="kg-card kg-toggle-card" data-kg-toggle-state="close">
            <div class="kg-toggle-heading">
                <h4 class="kg-toggle-heading-text"><span style="white-space: pre-wrap;">Is People Data Labs legit?</span></h4>
                <button class="kg-toggle-card-icon" aria-label="Expand toggle to read content">
                    <svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"></path>
                    </svg>
                </button>
            </div>
            <div class="kg-toggle-content"><p><span style="white-space: pre-wrap;">People Data Labs is a reputed data provider in the industry. They have a solid customer rating of 4.6 out of 5. You can check out their in-depth review at</span><a href="https://nubela.co/blog/people-data-labs-reviews/"> <u><span class="underline" style="white-space: pre-wrap;">People Data Labs Review</span></u></a><span style="white-space: pre-wrap;">.</span></p></div>
        </div><div class="kg-card kg-toggle-card" data-kg-toggle-state="close">
            <div class="kg-toggle-heading">
                <h4 class="kg-toggle-heading-text"><span style="white-space: pre-wrap;">Where do People Data Labs get their data?</span></h4>
                <button class="kg-toggle-card-icon" aria-label="Expand toggle to read content">
                    <svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"></path>
                    </svg>
                </button>
            </div>
            <div class="kg-toggle-content"><p><span style="white-space: pre-wrap;">People Data Labs has many data sources including open-source datasets, publicly available data, governmental public records and others. The gist is, they are all publicly available, and so are legally compliant.&nbsp;</span></p></div>
        </div><div class="kg-card kg-toggle-card" data-kg-toggle-state="close">
            <div class="kg-toggle-heading">
                <h4 class="kg-toggle-heading-text"><span style="white-space: pre-wrap;">Who owns People Data Labs?</span></h4>
                <button class="kg-toggle-card-icon" aria-label="Expand toggle to read content">
                    <svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"></path>
                    </svg>
                </button>
            </div>
            <div class="kg-toggle-content"><p><span style="white-space: pre-wrap;">People Data Labs is a privately held company. It was founded in 2015 by Sean Thorne and Joseph Drinkwater, who are still involved in the company's operations, aiming to revolutionize access to professional and B2B data.</span></p></div>
        </div><div class="kg-card kg-toggle-card" data-kg-toggle-state="close">
            <div class="kg-toggle-heading">
                <h4 class="kg-toggle-heading-text"><span style="white-space: pre-wrap;">Is People Data Labs a data broker?</span></h4>
                <button class="kg-toggle-card-icon" aria-label="Expand toggle to read content">
                    <svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"></path>
                    </svg>
                </button>
            </div>
            <div class="kg-toggle-content"><p><span style="white-space: pre-wrap;">People Data Labs is registered as a data broker under Texas law with the Texas Secretary of State (Texas SOS). More information about data broker registrants is available on the Texas SOS website.</span></p></div>
        </div><div class="kg-card kg-toggle-card" data-kg-toggle-state="close">
            <div class="kg-toggle-heading">
                <h4 class="kg-toggle-heading-text"><span style="white-space: pre-wrap;">What is People Data Labs data breach?</span></h4>
                <button class="kg-toggle-card-icon" aria-label="Expand toggle to read content">
                    <svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"></path>
                    </svg>
                </button>
            </div>
            <div class="kg-toggle-content"><p><span style="white-space: pre-wrap;">In October 2019, People Data Labs’s datasets were breached and were freely available on the Dark Web. 1.2 billion personal data records were vulnerable, almost every personal record the company held at the time.&nbsp;</span></p></div>
        </div> ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ Top 11 People Data Labs Alternatives &amp; Competitors ]]></title>
        <description><![CDATA[ Discover People Data Labs alternatives and competitors. ReachStream, Bright Data, and Proxycurl. Find best free &amp; paid data providers similar to People Data Labs. ]]></description>
        <link>https://nubela.co/blog/top-people-data-labs-alternatives-competitors/</link>
        <guid isPermaLink="false">672ad2401cb59d0001b17772</guid>
        <category><![CDATA[ proxycurl ]]></category>
        <dc:creator><![CDATA[ Sese | Technical Writer ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/10/IMG_4677.jpeg"/>
        <pubDate>Wed, 06 Nov 2024 03:17:00 +0800</pubDate>
        <media:content url="" medium="image"/>
        <content:encoded><![CDATA[ <p>Are you searching for a solution that can fetch B2B profile data at scale? Or maybe you read about People Data Labs, and now you want to explore alternatives. A quick search online, and you'll find a lot of websites filled with customer reviews, and simmered down lists that really do no good. What you need is a comprehensive list of alternatives, judged under the right parameters.</p>
<p>In this article, I will first establish some important metrics that great B2B data enrichment providers MUST have. Then, it's time for all the alternatives to be put up against these metrics so you know exactly where each stands out and where they may fall short. I will also highlight the pros and cons of each provider platform, so you know what you're getting yourself into.</p>
<p>Here's a quick glance at the alternatives to People Data Labs, compared and ranked across defined metrics.</p>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcwg2bhDPXiDo77MMXmmp1dOqTe0S2TMZbb2QrmeYSdkxIZz_itL6uPlnguUACYi07B2UPrnJaVd4NS2VNjW9b7rAGyibO_nkArSD7TO8707E36TS5saOR3ah6ArqrR3AZix0wC7zglFBrSjrCAT289D48b?key=zlOEeu8nnFgPRAwgO277Mg" alt="Table displaying all alternatives to People Data Labs along with their metrics" loading="lazy"></p>
<p>For those seeking a detailed analysis, I got you covered too! But first let's look at what metrics we should be judging the alternatives against and why.</p>
<h2 id="b2b-data-enrichment-provider-metrics">B2B data enrichment provider metrics</h2>
<h3 id="freshness">Freshness</h3>
<p>The idea that everyone wants fresh, live data is only true sometimes. The right provider allows customers to control the freshness of data, offering cheaper data when freshness is not a concern.</p>
<p>For example, if you are looking for job posting data, you need fresh data. However, cached data would suffice if you only wanted to match a company URL with its name because a company's name and URL will only change occasionally.</p>
<p>When exploring the different providers, understand their data freshness guarantee. Review their documentation and determine whether they provide the option to control data retrieval from cache or to scrape live.</p>
<h3 id="data-points">Data points</h3>
<p>Currently, you might only be looking for a specific set of data points. Even if you've identified a provider that caters your needs for now, you might need additional data points in the future. Consider committing to a provider with an exhaustive set of data points so you don't accrue technical debt from day one.</p>
<p>We've heard countless stories of people having to switch providers after realizing the limited data points available or having to engage different providers for different sets of data, making their workflow a mess.</p>
<h3 id="legal-compliance">Legal compliance</h3>
<p>Generally, you won't get into legal trouble even if your data provider fails to legally comply. If anything, the providers are the ones who'll get into trouble ([if they employ illegal tactics like Mantheos](<a href="https://nubela.co/blog/what-you-should-know-now-that-mantheos-a-Professional">https://nubela.co/blog/what-you-should-know-now-that-mantheos-a-Professional</a> Social Network-scraping-service-is-sued-by-Professional Social Network/)). What you don't want, is having to migrate your already-integrated applications and workflow when something does happen.</p>
<p>And so, it's best to find a provider that is legally scraping data. After all, [web scraping is indeed legal](<a href="https://nubela.co/blog/is-Professional">https://nubela.co/blog/is-Professional</a> Social Network-scraping-legal/) per the US court ruling. [GDPR](<a href="https://nubela.co/blog/is-Professional">https://nubela.co/blog/is-Professional</a> Social Network-scraping-gdpr-compliant/) and <a href="https://oag.ca.gov/privacy/ccpa/regs?ref=nubela.co">CCPA</a> are the basic compliance standards for the data industry.</p>
<h3 id="pricing">Pricing</h3>
<p>Even if you are in a small or a large company, pricing matters. As a small company, you need pricing flexibility based on what you use and not get tied down to a fixed plan. As a larger company, you will benefit from good enterprise packages to ensure that your large-scale data operations do not incur uncontrollable costs.</p>
<p>For this article, I will be comparing the cheapest monthly plan of each provider:</p>
<ol>
<li>
<p>Get the number of profiles available via that monthly plan.</p>
</li>
<li>
<p>Calculate the cost per profile.</p>
</li>
</ol>
<p>Of course, the more expensive monthly and annual plans would lower the cost per profile.</p>
<p>Before going in detail on all the competitors and alternatives of People Data Labs, let's first look at what People Data Labs has going for them.</p>
<h2 id="a-href-httpswwwpeopledatalabscom-relnofollowpeople-data-labsa"><a href="https://www.peopledatalabs.com/?ref=nubela.co" rel="nofollow">People Data Labs</a></h2>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXeCylqxnTTHFvqyt-NTh-rTwG6hF2wB9AZJkWL5Jf9ywZniooOC-cKnDVbI_wPeU9Js8RZJI84go9MxBFYDKzYyBl9CxVsKTgJgmgH6oNf-mlHP4Ie16u5_6UFhd94sa11RR-ESU5HuKZP3lTdY55m3ZQr6?key=zlOEeu8nnFgPRAwgO277Mg" alt="People Data Labs Landing Page" title="People Data Labs Landing Page" loading="lazy"></p>
<p>People Data Labs (PDL) scrapes public data and works with third-party partners to get private data. Then it packages this data into datasets that customers can call using APIs. It isn't developer-focused, but with quite a comprehensive range of data points available, it's arguably the most complete in the list. Though they are guilty of breaking down one data point into many granular forms, which inflate the absolute quantity.</p>
<p>Now, let's look at PDL objectively through our metrics:</p>
<ul>
<li>
<p><strong>Data Freshness:</strong> APIs are called using PDL's Datasets, which are updated monthly by default.</p>
</li>
<li>
<p><strong>Data Points:</strong> People Data Labs provides a plethora of data points. It is arguably the most complete data points provider on the list. The company offers &gt;200 data points per profile, but they achieve this number by splitting the data down to their most granular forms. For example, a single location address is split into 12 different fields! Some examples: <code>location_street_address</code>, <code>location_address_line_2</code>, <code>location_continent</code>, <code>location_country</code>, <code>location_region</code>, etc.</p>
</li>
<li>
<p><strong>Legal Compliance:</strong> People Data Labs has an edge with additional compliance besides GDPR and CCPA. PDL complies with GDPR, CCPA, SOC 2 and ISO 27001 regulations.</p>
</li>
<li>
<p><strong><a href="https://www.peopledatalabs.com/pricing/person?ref=nubela.co" rel="nofollow"> Pricing</a>:</strong> Their Pro plan starts at $98/mo for 350 profiles ($0.28/profile).</p>
</li>
</ul>
<p>People Data Labs has also faced a fair amount of critical reviews by past users on their high price tag, data recency and usage. Check out <a href="https://nubela.co/blog/people-data-labs-reviews/">People Data Labs Review </a>to get a comprehensive idea on their product features, pricing, and comparisons.</p>
<p>Let's look at why customers in the past chose People Data Labs, and why you should look for better alternatives.</p>
<h4 id="pros-and-cons-of-people-data-labs">Pros and Cons of People Data Labs</h4>
<p><strong>Pros:</strong></p>
<ul>
<li>
<p>Large datasets on multiple data points.</p>
</li>
<li>
<p>Plug-and-play model allows for immediate consumption.</p>
</li>
</ul>
<p><strong>Cons:</strong></p>
<ul>
<li>
<p>At $0.25 per match, it's expensive to utilize PDL services.</p>
</li>
<li>
<p>Pre-collected databases compromise fresh data.</p>
</li>
<li>
<p>History of security issues; <a href="https://cybernews.com/security/people-data-labs-data-leak/?ref=nubela.co" rel="nofollow">PDL data breach 2019</a>.</p>
</li>
</ul>
<p>Now, that we've had our appetizer, onto our entree. Here are the best alternatives to People Data Labs.</p>
<h2 id="11-best-people-data-labs-competitors-and-alternativesa-detailed-analysis">11 Best People Data Labs Competitors and Alternatives- A Detailed Analysis</h2>
<h3 id="1-proxycurl-best-overall-%F0%9F%8C%9F">1. <a href="http://nubela.co/?ref=nubela.co">Proxycurl</a> (Best Overall 🌟)</h3>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXetYNNLJZSBhHGfDiqLzkmPJNn4jTBBZZcpphKYmnycc9NQFg7ANlpnzWN0w4hJfjRUiuwamD6KR2xaOxl1JBaqGwfQH3Mh-SmCN-bYQ3cXC1z9oGtYuYwZ2uJR8jSUDMKDtg9_DKwycrXLETOfHhIwNxA?key=zlOEeu8nnFgPRAwgO277Mg" alt="Proxycurl Landing Page" loading="lazy"></p>
<p>Proxycurl is a developer-focused company that provides <a href="https://nubela.co/blog/ultimate-guide-to-all-21-proxycurl-apis-enrich-people-company-profiles/">a huge portfolio of API endpoints</a> which scrape and enrich profiles, providing a huge amount of data points. Depending on their use cases, customers can use Proxycurl's APIs flexibly and integrate them into any existing applications and workflows. Proxycurl also sells datasets of person and company profiles with millions of samples for enterprise customers looking for scale.</p>
<ul>
<li>
<p><strong><a href="https://nubela.co/blog/how-fresh-are-profiles-returned-by-proxycurl-api/">Data Freshness</a>:</strong> Proxycurl provides immense flexibility in choosing your dataset. You can choose between freshly-scraped data, data 29 days old or younger or even historical data that is older than 29 days.</p>
</li>
<li>
<p><strong>Data Points:</strong> Proxycurl's data is comprehensive and provides coverage for both people and companies profiles. People's profiles include contact information, work email and even personal email.</p>
</li>
<li>
<p><strong>Legal Compliance:</strong> Strictly follows GDPR and CCPA regulations.</p>
</li>
<li>
<p><strong><a href="https://nubela.co/proxycurl/pricing?ref=nubela.co">Pricing</a>:</strong> Proxycurl's Starter plan begins from $49/mo for 2500 profiles ($0.02/profile). The offer stands head to head with the cheapest option on the list, ReachStream.</p>
</li>
</ul>
<h4 id="pros-and-cons-of-proxycurl">Pros and Cons of Proxycurl</h4>
<p><strong>Pros:</strong></p>
<ul>
<li>
<p>API crawls are dispatched on-demand and are made in real-time for the latest data.</p>
</li>
<li>
<p>Flexibility in data freshness.</p>
</li>
<li>
<p>High scale crawl, scraping about a million pages per day.</p>
</li>
<li>
<p>Affordable price plans.</p>
</li>
</ul>
<p><strong>Cons:</strong></p>
<ul>
<li>Businesses requiring extensive hands-on customization might need additional support.</li>
</ul>
<h3 id="2-a-href-httpsreachstreamcom-relnofollowreachstreama-cheapest-%F0%9F%92%B0">2. <a href="https://reachstream.com/?ref=nubela.co" rel="nofollow">ReachStream</a> (Cheapest 💰)</h3>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXeNFSQ-4J5-ecNXj_5BpjyUE7DMUmfdvupALRGoWxxMWqaSj_MlJjLHwsL1tPHRnE3SgJWNdtpw9z2z3aqTnEWRIcrd3nYqTUBqx-cAQEX1GiSMeHeSB-TtjWcGAmsq8Km_eXVNmIRoHpZdBk3J9LymfLI?key=zlOEeu8nnFgPRAwgO277Mg" alt="ReachStream Landing Page" loading="lazy"></p>
<p>ReachStream is a B2B sales and marketing data platform offering contact, company and technographic data for prospecting. Its main offering is a simple, user-friendly platform where you can view unlimited contact and company profiles, along with unlimited contact data updates for free. Additionally, ReachStream offers a monthly renewable freemium plan, letting users <a href="https://www.reachstream.com/pricing/?ref=nubela.co" rel="nofollow">test the application</a> and download data for free.</p>
<ul>
<li>
<p><strong>Data Freshness:</strong> Database is updated monthly through a 7-tier manual and AI verification process.</p>
</li>
<li>
<p><strong>Data Points:</strong> ReachStream also provides large, diverse datasets that are affordable for many businesses. It provides 20+ contact and company data points with comprehensive contact, firmographic and technographic data. It is a valid competitor to People Data Labs.</p>
</li>
<li>
<p><strong>Legal Compliance:</strong> ReachStream complies with GDPR, CCPA, ACMA, EDPS, CAN-SPAM, and ANTI CAN SPAM act regulations.</p>
</li>
<li>
<p><strong><a href="http://reachstream.com/pricing?ref=nubela.co" rel="nofollow">Pricing:</a></strong> Their Super Saver plan starts from $99/mo for 5000 profiles ($0.02/profile). It is the cheapest option per profile on the list.</p>
</li>
</ul>
<h4 id="pros-and-cons-of-reachstream">Pros and Cons of ReachStream:</h4>
<p><strong>Pros:</strong></p>
<ul>
<li>
<p>High database accuracy.</p>
</li>
<li>
<p>User-friendly platform.</p>
</li>
</ul>
<p><strong>Cons:</strong></p>
<ul>
<li>
<p>Limited integrations with CRM platforms.</p>
</li>
<li>
<p>Limited set of features.</p>
</li>
</ul>
<h3 id="3-a-hrefhttpcoresignalcom-relnofollowcoresignala">3. <a href="http://coresignal.com/?ref=nubela.co" rel="nofollow">Coresignal</a></h3>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdVPHaW61ZlEjFzlL-eO3foEVpIPHyt7Ofvx1_hLax0HAZjF8cSL3Dne9_CgSPms632T3dBIKvxubTiGFydNmgtThg1wn82bo7qRQasnxr1SujN4Zxjgi7dna7XwEwhJ9u8KUg62oCzS8Jyjmdj00cMiok?key=zlOEeu8nnFgPRAwgO277Mg" alt="CoreSignal Landing Page" loading="lazy"></p>
<p>Coresignal's main offering is not data scraping but <a href="https://coresignal.com/buy-datasets/?ref=nubela.co" rel="nofollow">selling datasets</a>. Coresignal's datasets also consist of public and private data, which they either scraped themselves or acquired through third-party means. They also have live scraping APIs, but these are more limited in scope.</p>
<ul>
<li>
<p><strong>Data Freshness:</strong> Coresignal's datasets are updated monthly; a separate option is available for live scraping via APIs.</p>
</li>
<li>
<p><strong>Data Points:</strong> Coresignal is missing important data points such as contact info (phone numbers &amp; emails) from their datasets.</p>
</li>
<li>
<p><strong>Legal Compliance:</strong> The company is GDPR and CCPA compliant.</p>
</li>
<li>
<p><strong><a href="http://coresignal.com/pricing?ref=nubela.co" rel="nofollow">Pricing:</a></strong>  Their Pro subscription plan starts from $800/mo.</p>
</li>
</ul>
<h4 id="pros-and-cons-of-coresignal">Pros and Cons of Coresignal:</h4>
<p><strong>Pros:</strong></p>
<ul>
<li>
<p>Large dataset, aggregates data from a significant number of sources (20).</p>
</li>
<li>
<p>Provides a lot of data formats: JSON, Parquet, CSV, Other (upon request).</p>
</li>
</ul>
<p><strong>Cons:</strong></p>
<ul>
<li>Reports of customers receiving out-dated data. See <a href="https://nubela.co/blog/proxycurl-api-vs-coresignal/#proxycurl-api-vs-coresignal">Proxycurl vs. Coresignal</a>.</li>
<li>"Real-time" API does not return data immediately.</li>
</ul>
<h3 id="4-a-hrefhttpsbrightdatacom-relnofollowbright-dataa-most-flexible">4. <a href="https://brightdata.com/?ref=nubela.co" rel="nofollow">Bright Data</a> (Most Flexible)</h3>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfPyN4vGsCQ-6Fxu4FbYwvbJFgKe_gybKA3k_bb3ldDCVWuIAVa_xX7eLJy94Uy80Df-MDNDcmp56GvARRVs-zTdvl5CT4IQ5vXoupbzdOhT4sPgz2tVL3X1PMC4zt7x8Y0cHgBt8OF0yDZ8lQ4u0yayjE?key=zlOEeu8nnFgPRAwgO277Mg" alt="Bright Data Landing Page" loading="lazy"></p>
<p>Bright Data does not scrape data for you but provides proxies for your own scrapers. They also sell templates of scrapers that you can build on. This is the most flexible alternative on the list, as you are building your own scraper. In 2022, they launched a new line of dataset products, with variety that rivals or even exceeds that of Coresignal's datasets.</p>
<ul>
<li>
<p><strong>Data Freshness:</strong> Since you build your own scraper, you have the autonomy on freshness. Their datasets are updated monthly by default.</p>
</li>
<li>
<p><strong>Data Points:</strong> The data points are similar to Coresignal, but they have more data points as Bright Data scrapes for any data visible on a website.</p>
</li>
<li>
<p><strong>Legal Compliance:</strong> Bright Data is GDPR and CCPA compliant.</p>
</li>
<li>
<p><strong><a href="http://brightdata.com/pricing?ref=nubela.co" rel="nofollow">Pricing:</a></strong> Their product pricing starts at $500/mo for 86k profiles ($0.006/profile) (not a direct comparison as this pricing is for their scraper builder).</p>
</li>
</ul>
<h4 id="pros-and-cons-of-bright-data">Pros and Cons of Bright Data:</h4>
<p><strong>Pros:</strong></p>
<ul>
<li>
<p>Reliable and a variety of proxy services: residential proxies, ISP proxies, data center proxies, and mobile proxies.</p>
</li>
<li>
<p>Data collector and SERP API tools enable you to collect public data in real-time.</p>
</li>
<li>
<p>Automated IP address rotation allows scraping target sites more consistently and efficiently.</p>
</li>
<li>
<p>Added flexibility as you build your own scraper.</p>
</li>
</ul>
<p><strong>Cons:</strong></p>
<ul>
<li>
<p>Some proxies are quite expensive and might be beyond budget for startups and small businesses.</p>
</li>
<li>
<p>The documentation provided for the usage of the software is complex.</p>
</li>
<li>
<p>Proper settings and implementations can take weeks to ensure everything functions correctly.</p>
</li>
</ul>
<h3 id="5-a-href-httpsphantombustercom-relnofollowphantombustera">5. <a href="https://phantombuster.com/?ref=nubela.co" rel="nofollow">PhantomBuster</a></h3>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXf5HhZftX7v2jb1CzbIxNkWuwVHLkw47rhyAO65sBtHpQ5byW5CSRN2jHSOZ8Q2_uzQ24T4HwGTH2sP_T_nZPhulVpJgFl9BbHMb0xPRrOumj0IZiluMTmEsX9_GRctXCL73fIpWIpMEZ6yiHWaSDNX609h?key=zlOEeu8nnFgPRAwgO277Mg" alt="PhantomBuster Landing Page" loading="lazy"></p>
<p>PhantomBuster, another alternative to PDL, does offer scraping services, however, in a different way from the norm. They have you use your own accounts to scrape for private data. At this point, this in itself is already a red flag in legal compliance as it involves scraping private data. Private profiles return additional data that you can't get from public profiles, but with its own limitations: Low rate limit and legal risk. Customers can only scrape 80 profiles per day before their account gets blocked by Professional Social Network. You definitely don't want that to happen!</p>
<ul>
<li>
<p><strong>Data Freshness:</strong> PhantomBuster only scrapes live data.</p>
</li>
<li>
<p><strong>Data Points:</strong> It is an added advantage having private profile data via private profile scraping; however, it has limited scraping frequency.</p>
</li>
<li>
<p><strong>Legal Compliance:</strong> PhantomBuster is only GDPR-compliant, and rightly so, as they scrape private profiles, which is a huge risk in itself.</p>
</li>
<li>
<p><strong><a href="http://phantombuster.com/pricing?ref=nubela.co" rel="nofollow">Pricing:</a></strong> Their Starter plan begins from $69/mo for 1470 profiles ($0.047/profile).</p>
</li>
</ul>
<h4 id="pros-and-cons-of-phantombuster">Pros and Cons of PhantomBuster:</h4>
<p><strong>Pros:</strong></p>
<ul>
<li>
<p>Allows automation on repetitive tasks.</p>
</li>
<li>
<p>Supports business scaling by providing valuable insights through data analysis.</p>
</li>
<li>
<p>Supports integration with multiple platforms.</p>
</li>
</ul>
<p><strong>Cons:</strong></p>
<ul>
<li>
<p>Only supports Hubspot, and limited options for other CRMs.</p>
</li>
<li>
<p>Unable to bypass Professional Social Network's limit or connection invite restrictions.</p>
</li>
<li>
<p>Safety concerns as Phantom Buster requires you to download a Chrome extension and access your cookies to enter Professional Social Network.</p>
</li>
</ul>
<h3 id="6-a-href-httpswwwupleadcom-relnofollowupleada-highest-rated-by-g2-%E2%AD%90%EF%B8%8F">6. <a href="https://www.uplead.com/?ref=nubela.co" rel="nofollow">UpLead</a> (Highest Rated by G2 ⭐️)</h3>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdyFWnK3WhwkgJBNynul8Lqx6gNU8myBWhvzH9Alks-3ZgtDDnbe0FsJl805wtkpbj_1F1Kj3xtKUw8DXjitGqXakx_pfWh24-E-DZHc86eQdX1shK9RwcZcdqjLhK3wywvTy432dfYqlunz9sAkhC4pQs5?key=zlOEeu8nnFgPRAwgO277Mg" alt="UpLead Landing Page" loading="lazy"></p>
<p>UpLead is the highest rated B2B data provider in the industry, known for its high ROI and user-friendly platform. Instead of providing raw web scraped datasets, they provide a clean prospecting list, which you can then plug into your CRM. Uplead prides itself with its dedication to providing accurate data, backed up by real-time verified emails, mobile numbers and intent data.</p>
<ul>
<li>
<p><strong>Data Points:</strong> People and company profile, along with verified email addresses and intent data.</p>
</li>
<li>
<p><strong>Data Freshness:</strong> UpLead updates their datasets on a monthly basis. Limited information is available regarding the specifics.</p>
</li>
<li>
<p><strong>Legal Compliance:</strong> UpLead complies with GDPR and CCPA regulations.</p>
</li>
<li>
<p><strong><a href="https://www.uplead.com/pricing/?ref=nubela.co" rel="nofollow">Pricing:</a></strong> Their Essentials plan starts from $99/mo ($0.60/profile).</p>
</li>
</ul>
<h4 id="pros-and-cons-of-uplead">Pros and Cons of UpLead:</h4>
<p><strong>Pros:</strong></p>
<ul>
<li>
<p>Commendable user-interface; allows very precise searches.</p>
</li>
<li>
<p>Provides detailed contact information (email and phone number).</p>
</li>
<li>
<p>Excellent tracking of lookups.</p>
</li>
</ul>
<p><strong>Cons:</strong></p>
<ul>
<li>
<p>Limited database coverage; only has leads from North America.</p>
</li>
<li>
<p>The number of "valid" leads cuts down the amount of total leads. Even if a large amount of leads are generated, only a small % of them are pursuable "valid" leads.</p>
</li>
</ul>
<h3 id="7-a-hrefhttpzoominfocom-relnofollowzoominfoa">7. <a href="http://zoominfo.com/?ref=nubela.co" rel="nofollow">ZoomInfo</a></h3>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdvEozrubv-cMovqZ1vmzbRSoTjGKDG52I4tZ4OkbgDnobiwUn0bqrIpCpd9kGw-9gwvY8gCNWP-eCNKtlo8Z-l05tAiRv_9e_OHBfuCcWln6mnd1uWj4uQ606O_6MljElOxwlM-bq_L8ktNIGoVkwHklqg?key=zlOEeu8nnFgPRAwgO277Mg" alt="Zoominfo Landing Page" loading="lazy"></p>
<p>Similar to Coresignal, Zoominfo also sells access to its database on a subscription basis. It deals with B2B data; extensive company and contact information, and is equipped with advanced search capabilities and integration options. Potential customers purchase subscriptions to gain access to its database of people and companies to sales, marketing, and recruiting professionals.</p>
<ul>
<li>
<p><strong>Data Freshness:</strong> Zoominfo manually updates their database based on change detection.</p>
</li>
<li>
<p><strong>Data points:</strong> Zoominfo provides company profile, business contacts and companies contact database, intent data. They also generate and analyze customer interactions across communication channels, like sales calls, emails, and business websites.</p>
</li>
<li>
<p><strong>Legal Compliance:</strong> Similar to People Data Labs, Zoominfo is GDPR, CCPA, and ISO 27001 compliant.</p>
</li>
<li>
<p><strong><a href="http://zoominfo.com/pricing?ref=nubela.co" rel="nofollow">Pricing:</a></strong> Their product plan starts from $14,995/ year.</p>
</li>
</ul>
<h4 id="pros-and-cons-of-zoominfo">Pros and Cons of Zoominfo:</h4>
<p><strong>Pros:</strong></p>
<ul>
<li>
<p>Accurate contact information, along with a large database.</p>
</li>
<li>
<p>Supports workflow automation.</p>
</li>
<li>
<p>Provides a granular view with advanced search options, along with intent data.</p>
</li>
</ul>
<p><strong>Cons:</strong></p>
<ul>
<li>
<p>Expensive plans.</p>
</li>
<li>
<p>Users must expect a steep learning curve.</p>
</li>
<li>
<p><a href="https://www.softwareadvice.com/buyer-intent/zoominfo-profile/reviews/?ref=nubela.co" rel="nofollow">Customer service</a> has received its fair share of criticism.</p>
</li>
</ul>
<h3 id="8-a-hrefhttplushacom-relnofollowlushaa">8. <a href="http://lusha.com/?ref=nubela.co" rel="nofollow">Lusha</a></h3>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcAcs9I_EMoC35AL3D6HcCid3sxXfSi5lygfccHdKPRz5rT6ADEy-ApoRanix2rcMBuzhm0NkXiLI86UcG9LjX-SeTzTaAea_nTfIEwvxZti0-E3heyKjEzElQ6rVyQtANKnPSc-XjqHTZZxNdpQ9Nn0_fh?key=zlOEeu8nnFgPRAwgO277Mg" alt="Lusha Landing Page" loading="lazy"></p>
<p>Lusha also sells access to its huge B2B database of contact information, including emails, phone numbers, and Professional Social Network profiles, which are highly useful for sales, marketing, and recruitment professionals. The platform is primarily built for easy integration with popular CRM systems like Salesforce and HubSpot, offering lead enrichment and data retrieval.</p>
<ul>
<li>
<p><strong>Data Points:</strong> Lusha provides a full company and people profile.</p>
</li>
<li>
<p><strong>Data Freshness:</strong> Lusha relies on publicly available data sources and claims to update its data regularly, but the exact frequency or guarantees on data freshness are not always clear. The focus is on collecting verified, crowd-sourced contact details.</p>
</li>
<li>
<p><strong>Legal Compliance:</strong> Similar to Zoominfo, Lusha has GDPR, CCPA and ISO 27701 compliance.</p>
</li>
<li>
<p><strong><a href="http://lusha.com/pricing?ref=nubela.co" rel="nofollow">Pricing:</a></strong> The Pro plan starts from $32/ mo for 1,920 emails and 480 phone numbers ($0.06/ full profile)</p>
</li>
</ul>
<h4 id="pros-and-cons-of-lusha">Pros and Cons of Lusha:</h4>
<p><strong>Pros:</strong></p>
<ul>
<li>
<p>Reasonable pricing for the quality of data it provides.</p>
</li>
<li>
<p>Interactive dashboard and allows seamless integration.</p>
</li>
</ul>
<p><strong>Cons:</strong></p>
<ul>
<li>
<p>Instances of wrong information being served; posing trust issues.</p>
</li>
<li>
<p>Constantly poor customer support.</p>
</li>
</ul>
<h3 id="9-a-href-httpswwwxverumcom-relnofollowxveruma">9. <a href="https://www.xverum.com/?ref=nubela.co" rel="nofollow">Xverum</a></h3>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXe7azzXTP4zxDT7duX6rZ8AJ1OozxVEMfiIm0i1a7ByJuc5-4DuzYl-wQhhdFZgiFv9Gl6NIkYV6APdANp2W0-7a0gocBI3d4p2Ip64jJNW3R2qa5gcRnJ0_u39Tu-Tsk_WTY2RVA0X8N1oex718THv49_p?key=zlOEeu8nnFgPRAwgO277Mg" alt="Xverum Landing Page" loading="lazy"></p>
<p>Like most on this list, Xverum provides access to its massive-scale open web data with an aim to empower ML and SaaS platforms. Their datasets are focused on firmographic data (information about companies), individual profiles, and other relevant public data.</p>
<ul>
<li>
<p><strong>Data Points:</strong> Firmographics, complete employee and company profile data.</p>
</li>
<li>
<p><strong>Data Freshness:</strong> While Xverum promises regular updates to its datasets, there is no specified period mentioned.</p>
</li>
<li>
<p><strong>Legal Compliance:</strong> Xverum complies with GDPR and CCPA regulations.</p>
</li>
<li>
<p><strong><a href="https://www.xverum.com/?ref=nubela.co#dform" rel="nofollow">Pricing:</a></strong> Xverum is secretive about their pricing plans as they do not list their plans upfront in their website. You have to reach out to their team to get a quote. However, after some research, I discovered that the basic plan starts at $1,000 per month.</p>
</li>
</ul>
<h4 id="pros-and-cons-of-xverum">Pros and Cons of Xverum:</h4>
<p><strong>Pros:</strong></p>
<ul>
<li>
<p>They offer robust API options, enabling smooth integration into marketing and sales tools.</p>
</li>
<li>
<p>Extensive targeting options, supporting businesses in building segmented, tailored lists.</p>
</li>
</ul>
<p><strong>Cons:</strong></p>
<ul>
<li>
<p>Xverum does not publish its pricing structure openly, which can make budgeting and cost comparison challenging.</p>
</li>
<li>
<p>Data update periods are not transparent; businesses that rely on highly current data might need a provider with <a href="https://nubela.co/blog/how-fresh-are-profiles-returned-by-proxycurl-api/">data freshness guarantee</a>.</p>
</li>
</ul>
<h3 id="10-a-hrefhttpswwwreveliolabscom-relnofollowrevelio-labsa">10. <a href="https://www.reveliolabs.com/?ref=nubela.co" rel="nofollow">Revelio Labs</a></h3>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXe9rRwqVt9Jda-gmvNsW138TKO8_9frQjqK7Y_nTG6CvM7-Hurt55Y93JBESU_7vE8_bZWX55BEdRCS2s3kK3bFkexgiYVwWzrD-BBSs2DXJjJbiGFIG_3ocK7EG8GuiwM59Jso0_dnzw52FhP_iVQWVtcS?key=zlOEeu8nnFgPRAwgO277Mg" alt="Revelio Labs Landing Page" loading="lazy"></p>
<p>Revelio Labs standardizes public employment records to create a comprehensive HR database, pivotal for HR analytics and the data services industry. Revelio Labs does not provide raw datasets or provide scraping services. Instead, it provides workforce intelligence by analyzing publicly available workforce data. They do however, provide a dataset builder option where you can choose and filter parameters from their datasets.</p>
<ul>
<li>
<p><strong>Data Points:</strong> Revelio Labs provides workforce dynamics (aggregated workforce statistics), company and people profiles.</p>
</li>
<li>
<p><strong>Data Freshness:</strong> Their datasets are updated monthly, but they also offer weekly or daily data delivery for select feeds.</p>
</li>
<li>
<p><strong>Legal Compliance:</strong> Revelio Labs only complies with GDPR. A risky venture, if you're looking to leave no rooms for secure usage.</p>
</li>
<li>
<p><strong><a href="https://www.reveliolabs.com/demo/?ref=nubela.co" rel="nofollow">Pricing:</a></strong> Similar to Xverum, Revelio labs does not have public plans listed on their website. This is common practice for data vendors and providers. After going through their sales process, I found out their plan starts from $85,000/year.</p>
</li>
</ul>
<h4 id="pros-and-cons-of-revelio-labs">Pros and Cons of Revelio Labs:</h4>
<p><strong>Pros:</strong></p>
<ul>
<li>
<p>Provides more than just datasets; workforce intelligence gives insights into company workforce trends, labor movements, and turnover.</p>
</li>
<li>
<p>Revelio's product covers a broad number of industries, with its predictive analysis allows sectors like technology, finance, and healthcare to make informed decisions.</p>
</li>
</ul>
<p><strong>Cons:</strong></p>
<ul>
<li>
<p>No transparent pricing details available.</p>
</li>
<li>
<p>Limited to only providing workforce data and lacks broader B2B data.</p>
</li>
</ul>
<h3 id="11-a-href-httpversiumcom-relnofollowversiuma">11. <a href="http://versium.com/?ref=nubela.co" rel="nofollow">Versium</a></h3>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfnd1ZRutVyFkTxGkEh6ZcxOjsonNg1WjnWrT_MYPj2DPFvBdxONAQj4_WS6yFNQE3ymNTboDl4H8CWqC9VYgMScl9vP2hD6b9QMVj_yKVGf1n1PMljJDAaHu83WbWVsHV3tjDdskxlXvTG-7XdTVSIlKUq?key=zlOEeu8nnFgPRAwgO277Mg" alt="Versium Landing Page" loading="lazy"></p>
<p>The final entry for People Data Labs alternative is Versium. Versium hosts rich datasets for both B2B and B2C marketers to address some of the biggest pain points in marketing and sales; figuring out who is likely to buy, and who will never buy. Versium's main services include data enrichment, identity resolution, and predictive modeling, to help companies optimize their marketing strategies.</p>
<ul>
<li>
<p><strong>Data Points:</strong> Versium also provides Firmographics, enriched with people, company and job profiles.</p>
</li>
<li>
<p><strong>Data Freshness:</strong> Just like Xverum, Versium promises fresh data through 'regular' updates, but fails to mention on time intervals they are updated.</p>
</li>
<li>
<p><strong>Legal Compliance:</strong> Versium is certainly not going over the mile with their data compliance as they are only GDPR compliant.</p>
</li>
<li>
<p><strong><a href="https://versium.com/reach-pricing?ref=nubela.co" rel="nofollow">Pricing:</a></strong> The 'Contact sales for Demo' trend continues as Versium does not display their plans publicly. My research suggests their plan starts from $300 / mo ($0.04/ profile).</p>
</li>
</ul>
<h4 id="pros-and-cons-of-versium">Pros and Cons of Versium:</h4>
<p><strong>Pros:</strong></p>
<ul>
<li>
<p>Provides comprehensive data for both B2B and B2C companies.</p>
</li>
<li>
<p>Seamless integrations with major marketing platforms and CRMs.</p>
</li>
</ul>
<p><strong>Cons:</strong></p>
<ul>
<li>
<p>Versium does not provide pricing information readily on the website.</p>
</li>
<li>
<p>Requires a learning curve to fully utilize all features.</p>
</li>
<li>
<p>Poor interface design.</p>
</li>
</ul>
<h2 id="so-whats-the-best-alternative-to-people-data-labs">So, what's the best alternative to People Data Labs?</h2>
<p><strong>Our verdict:</strong></p>
<p>Proxycurl is the overall best alternative for your data needs. While there are good data providers out there (as we just discussed), you deserve the best. Proxycurl goes head-to-head with all the other alternatives in their own domain. It matches ReachStream's affordable price, while giving you enough room to match Bright Data's flexibility.</p>
<p>People Data Labs's challenges with high price and data freshness fade into the rearview mirror of Proxycurl.</p>
<p>Let us hear your data needs. Contact us by emailing us at <a href="mailto:hello@nubela.co">hello@nubela.co</a> or <a href="https://nubela.co/proxycurl/?ref=nubela.co">sign up</a> for free and get 10 free credits (100 if you sign up with your work email). Try Proxycurl today!</p>
<h2 id="faqs">FAQs</h2>
<div class="kg-card kg-toggle-card" data-kg-toggle-state="close">
            <div class="kg-toggle-heading">
                <h4 class="kg-toggle-heading-text"><span style="white-space: pre-wrap;">Is People Data Labs Legit?</span></h4>
                <button class="kg-toggle-card-icon" aria-label="Expand toggle to read content">
                    <svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"></path>
                    </svg>
                </button>
            </div>
            <div class="kg-toggle-content"><p><span style="white-space: pre-wrap;">People Data Labs is a reputed data provider in the industry. They have a solid customer rating of 4.6 out of 5. You can check out their in-depth review at</span><a href="https://nubela.co/blog/people-data-labs-reviews/"> <u><span class="underline" style="white-space: pre-wrap;">People Data Labs Review</span></u></a><span style="white-space: pre-wrap;">.</span></p></div>
        </div><div class="kg-card kg-toggle-card" data-kg-toggle-state="close">
            <div class="kg-toggle-heading">
                <h4 class="kg-toggle-heading-text"><span style="white-space: pre-wrap;">How can I verify data accuracy from a data provider?</span></h4>
                <button class="kg-toggle-card-icon" aria-label="Expand toggle to read content">
                    <svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"></path>
                    </svg>
                </button>
            </div>
            <div class="kg-toggle-content"><p><span style="white-space: pre-wrap;">Most providers offer demos or free credits upon signup (like</span><a href="https://nubela.co/proxycurl/auth/register?ref=nubela.co"> <u><span class="underline" style="white-space: pre-wrap;">Proxycurl</span></u></a><span style="white-space: pre-wrap;">) which allow you to verify data quality firsthand. Do your due diligence and test their data accuracy, freshness, and relevance before subscribing to a provider. A good indicator is to look for platforms with real-time verification features, which help maintain a high standard of data accuracy.</span></p></div>
        </div><div class="kg-card kg-toggle-card" data-kg-toggle-state="close">
            <div class="kg-toggle-heading">
                <h4 class="kg-toggle-heading-text"><span style="white-space: pre-wrap;">How frequently should a B2B data provider update their datasets?</span></h4>
                <button class="kg-toggle-card-icon" aria-label="Expand toggle to read content">
                    <svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"></path>
                    </svg>
                </button>
            </div>
            <div class="kg-toggle-content"><p><span style="white-space: pre-wrap;">Regular updates are important for fields that rely on current information, and in an ideal world, real-time update would be most desirable. However, any provider that updates their data monthly or shorter intervals than that are meeting the industry standard. With</span><a href="https://nubela.co/?ref=nubela.co"> <u><span class="underline" style="white-space: pre-wrap;">Proxycurl</span></u></a><span style="white-space: pre-wrap;">, you have the flexibility to select data recency (e.g., freshly scraped data or historical data).</span></p></div>
        </div><div class="kg-card kg-toggle-card" data-kg-toggle-state="close">
            <div class="kg-toggle-heading">
                <h4 class="kg-toggle-heading-text"><span style="white-space: pre-wrap;">How can I evaluate the ROI of a B2B data provider?</span></h4>
                <button class="kg-toggle-card-icon" aria-label="Expand toggle to read content">
                    <svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"></path>
                    </svg>
                </button>
            </div>
            <div class="kg-toggle-content"><p><span style="white-space: pre-wrap;">Consider lead conversion rates, data accuracy, integration efficiency, and cost savings over time. While not immediate, higher-quality data should yield better results in the long term. It should also save your time on lead research and improve outreach success rates.</span></p></div>
        </div><div class="kg-card kg-toggle-card" data-kg-toggle-state="close">
            <div class="kg-toggle-heading">
                <h4 class="kg-toggle-heading-text"><span style="white-space: pre-wrap;">What’s the difference between intent data and enrichment data?</span></h4>
                <button class="kg-toggle-card-icon" aria-label="Expand toggle to read content">
                    <svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"></path>
                    </svg>
                </button>
            </div>
            <div class="kg-toggle-content"><p><span style="white-space: pre-wrap;">Intent data shows a prospect's likelihood of engaging with a service based on behaviors. Providers include companies like UpLead and ZoomInfo. Enrichment data adds depth to existing profiles with information like contact details, job roles, and company specifics This is what providers like People Data Labs and</span><a href="https://nubela.co/?ref=nubela.co"> <u><span class="underline" style="white-space: pre-wrap;">Proxycurl</span></u></a><span style="white-space: pre-wrap;"> do best. Choosing the right data type depends on what your needs are.</span></p></div>
        </div> ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ (old) Top 5 Alternatives to People Data Labs in 2024 - And the One We Think Is Best ]]></title>
        <description><![CDATA[ Discover People Data Labs alternatives and competitors. ReachStream, Bright Data, and Proxycurl. Find best free &amp; paid data providers similar to People Data Labs. ]]></description>
        <link>https://nubela.co/blog/people-data-labs-alternatives-competitors-2-2/</link>
        <guid isPermaLink="false">64a50d8e4897f70001c44142</guid>
        <category><![CDATA[ proxycurl ]]></category>
        <dc:creator><![CDATA[ Joseph Lim | Head of Marketing ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2023/03/Screenshot-2023-03-13-at-5.30.12-PM-min.png"/>
        <pubDate>Wed, 06 Nov 2024 03:17:00 +0800</pubDate>
        <media:content url="" medium="image"/>
        <content:encoded><![CDATA[ <p>Are you searching for a solution that can fetch B2B profile data at scale? Or maybe you read about People Data Labs, and now you want to explore alternatives. Either way, you've come to the right place.</p>
<p>Let's dive deep into alternatives to People Data Labs and which ones you want to pick when.</p>
<h2 id="methodology">Methodology</h2>
<p>First, we'll outline some important metrics that great B2B data enrichment providers should have. Then, we'll compare People Data Labs and each alternative to give you a good picture of the playing field. Finally, we compare the six providers based on each metric one by one.</p>
<h2 id="b2b-data-enrichment-provider-metrics">B2B data enrichment provider metrics</h2>
<h3 id="freshness">Freshness</h3>
<p>Common wisdom states that everyone wants fresh, live data. But that's only sometimes true. The pinnacle of a provider is that it allows customers to control the freshness of data received, offering cheaper data when freshness is not a concern.</p>
<p>For example, if you are looking for job posting data, you do need fresh data. However, cached data would suffice if you only wanted to match a company URL with its name because a company's name and URL will only change occasionally.</p>
<p><strong>When exploring the different providers, understand their data freshness guarantee</strong>. Review their documentation and determine whether they provide the option to control data retrieval from cache or to scrape live.</p>
<h3 id="data-points">Data points</h3>
<p>Currently, you might only be looking for a specific set of data points. Even if you've identified that one provider which offers what you need for now, you might need additional data points in the future. Consider committing to a provider with an exhaustive set of data points so you don't accrue technical debt from day one.</p>
<p>We've heard countless stories of people having to switch providers after realizing the limited data points available or having to engage different providers for different sets of data - making their workflow a mess.</p>
<h3 id="legal-compliance">Legal compliance</h3>
<p>Generally, you won't get into legal trouble if something bad happens regarding your data provider. If anything, the providers are the ones who'll get into trouble ([if they employ illegal tactics like Mantheos](<a href="https://nubela.co/blog/what-you-should-know-now-that-mantheos-a-Professional">https://nubela.co/blog/what-you-should-know-now-that-mantheos-a-Professional</a> Social Network-scraping-service-is-sued-by-Professional Social Network/)). What you don't want, though, is having to migrate your already-integrated applications and workflow when something does happen.</p>
<p>And so, it's best to find a provider that is legally scraping data. After all, [web scraping is indeed legal](<a href="https://nubela.co/blog/is-Professional">https://nubela.co/blog/is-Professional</a> Social Network-scraping-legal/) per the US court ruling.</p>
<h3 id="pricing">Pricing</h3>
<p>No matter if you are in a small or large company, pricing matters. As a small company, you need pricing flexibility based on what you use and not get tied down to a fixed plan. As a larger company, you will benefit from good enterprise packages to ensure that your large-scale data operations do not incur uncontrollable costs.</p>
<h2 id="a-summary-of-people-data-labs-five-alternatives">A summary of People Data Labs &amp; five alternatives</h2>
<h3 id="people-data-labs">People Data Labs</h3>
<p>People Data Labs scrapes public data and works with third-party partners to get private data. Then it packages this data into datasets that customers can call using APIs. It isn't developer-focused, but with quite a comprehensive range of data points available, it's arguably the most complete in the list. Though they are guilty of breaking down one data point into many granular forms, which inflate the absolute quantity.</p>
<h3 id="proxycurl">Proxycurl</h3>
<p>Proxycurl is a developer-focused company that provides <a href="https://nubela.co/blog/ultimate-guide-to-all-21-proxycurl-apis-enrich-people-company-profiles/">a huge portfolio of API endpoints</a> which scrape and enrich profiles, providing a huge amount of data points. Depending on their use cases, customers can use Proxycurl's APIs flexibly and integrate them into any existing applications and workflows. Proxycurl also sells datasets of person and company profiles with millions of samples for enterprise customers looking for scale.</p>
<h3 id="reachstream">ReachStream</h3>
<p>ReachStream is a B2B sales and marketing data platform offering contact, company and technographic data for prospecting. Its main offering is a simple, user-friendly platform where you can view unlimited contact and company profiles, along with unlimited contact data updates for free. Additionally, ReachStream offers a monthly renewable freemium plan, letting users <a href="https://www.reachstream.com/pricing/?utm_source=proxycurl&utm_medium=Colton+Randolph&utm_campaign=link+exchange+opportunity&utm_id=Pricing">test the application</a> and download data for free.</p>
<p>ReachStream provides large, diverse datasets that are affordable for many businesses. A valid competitor to People Data Labs.</p>
<h3 id="coresignal">Coresignal</h3>
<p>Coresignal's main offering is not data scraping but <a href="https://coresignal.com/buy-datasets/?ref=nubela.co">selling datasets</a>. Coresignal's datasets also consist of public and private data, which they either scraped themselves or acquired through third-party means. They also have live scraping APIs, but these are more limited in scope.</p>
<h3 id="bright-data">Bright Data</h3>
<p>Bright Data does not scrape data for you but provides proxies for your own scrapers. They also sell templates of scrapers that you can build on. In 2022 they did launch a new line of dataset products, whose variety rivals or even exceeds that of Coresignal's datasets.</p>
<h3 id="phantombuster">PhantomBuster</h3>
<p>PhantomBuster does offer scraping services, however, in a different way from the norm. Instead, they have you use your own accounts to scrape for private data. At this point, this in itself is already a red flag in legal compliance as it involves scraping private data. Private profiles do return additional data that you can't get from public profiles; however, it has limitations: Low rate limit and legal risk. Customers can only scrape 80 profiles per day before their account gets blocked by Professional Social Network. You definitely don't want that to happen!</p>
<h2 id="reviewing-each-provider-against-the-metrics">Reviewing each provider against the metrics</h2>
<p>Now comes the fun part, diving into the metrics and comparing the providers against each other.</p>
<h3 id="freshness">Freshness</h3>
<figure class="kg-card kg-image-card"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2023/09/TLC_5_PDL_alternatives_Update_Freshness.png" class="kg-image" alt="How the five alternatives stack up against People Data Labs in terms of freshness" loading="lazy" width="1900" height="965"></figure><p>Most providers let customers pull data from their datasets via APIs, with data only updated monthly. The exception is Proxycurl, which allows for flexibility here: You can request cached or up-to-a-month-old data.</p>
<ul>
<li><strong>People Data Labs</strong> - Datasets from which APIs are called are updated monthly by default</li>
<li><strong>Proxycurl</strong> - Flexibility in choosing between freshly-scraped data, &lt;= 29 days old or possibly &gt; 29 days old</li>
<li><strong>ReachStream</strong> - Database is updated monthly through a 7-tier manual and AI verification process</li>
<li><strong>Coresignal</strong> - Datasets are updated monthly; a separate option is available for live scraping via APIs</li>
<li><strong>Bright Data</strong> - Autonomy on freshness is in the customer's hands as they build the scrapers; datasets are updated monthly by default</li>
<li><strong>PhantomBuster</strong> - Only scraped live</li>
</ul>
<h3 id="data-points">Data points</h3>
<figure class="kg-card kg-image-card"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2023/09/TLC_5_PDL_alternatives_Update_Data-points.png" class="kg-image" alt="How the five alternatives stack up against People Data Labs in terms of data points" loading="lazy" width="1900" height="965"></figure><p>People Data Labs brags about having &gt;200 data points per profile, but they achieve this number by splitting the data down to their most granular forms. For example, a single location address is split into 12 different fields! Some examples: <code>location_street_address</code>, <code>location_address_line_2</code>, <code>location_continent</code>, <code>location_country</code>, <code>location_region</code>, etc. If we clean up the data types for comparison, Proxycurl comes in second with a comprehensive suite of data fields after People Data Labs.</p>
<ul>
<li><strong>People Data Labs</strong> - Arguably the most complete on the list</li>
<li><strong>Proxycurl</strong> - Comprehensive coverage for both people and companies profiles</li>
<li><strong>ReachStream</strong> - 20+ contact and company data points with comprehensive contact, firmographic and technographic data</li>
<li><strong>Coresignal</strong> - Missing important data points such as contact info (phone numbers &amp; emails)</li>
<li><strong>Bright Data</strong> - Similar to Coresignal; however, they have more data points than Coresignal as Bright Data scrapes for any data visible on a website</li>
<li><strong>PhantomBuster</strong> - Advantageous in having private profile data via private profile scraping; however, limited exactly because of that as platforms greatly limit scraping frequency</li>
</ul>
<h3 id="legal-compliance">Legal compliance</h3>
<figure class="kg-card kg-image-card"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2023/09/TLC_5_PDL_alternatives_Update_Legal-compliance.png" class="kg-image" alt="How the five alternatives stack up against People Data Labs in terms of compliance" loading="lazy" width="1900" height="965"></figure><p>[GDPR](<a href="https://nubela.co/blog/is-Professional">https://nubela.co/blog/is-Professional</a> Social Network-scraping-gdpr-compliant/) and CCPA are the basic compliance standards for the data industry. People Data Labs has an edge with additional compliance besides GDPR and CCPA. On the other end, PhantomBuster is only GDPR-compliant, rightly so, as they scrape private profiles - which is a huge risk in itself. [Web scraping is legal](<a href="https://nubela.co/blog/is-Professional">https://nubela.co/blog/is-Professional</a> Social Network-scraping-legal/) with court precedent; however, there's a grey line, and [that grey line is scraping private profiles](<a href="https://nubela.co/blog/what-you-should-know-now-that-mantheos-a-Professional">https://nubela.co/blog/what-you-should-know-now-that-mantheos-a-Professional</a> Social Network-scraping-service-is-sued-by-Professional Social Network/).</p>
<ul>
<li><strong>People Data Labs</strong> - GDPR, CCPA, SOC 2 &amp; ISO 27001-compliant</li>
<li><strong>Proxycurl</strong> - GDPR &amp; CCPA-compliant</li>
<li><strong>ReachStream</strong> - GDPR, CCPA, ACMA, EDPS, CAN-SPAM, and ANTI CAN SPAM act-compliant</li>
<li><strong>Coresignal</strong> - GDPR &amp; CCPA-compliant</li>
<li><strong>Bright Data</strong> - GDPR &amp; CCPA-compliant</li>
<li><strong>PhantomBuster</strong> - GDPR-compliant only</li>
</ul>
<h3 id="pricing">Pricing</h3>
<figure class="kg-card kg-image-card"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2023/09/TLC_5_PDL_alternatives_Update_Pricing.png" class="kg-image" alt="How the five alternatives stack up against People Data Labs in terms of pricing" loading="lazy" width="1900" height="965"></figure><p>Here, we are comparing the cheapest monthly plan of each provider:</p>
<ol>
<li>Get the number of profiles available via that monthly plan</li>
<li>Calculate the cost per profile.<br>
Of course, the more expensive monthly and annual plans would lower the cost per profile.</li>
</ol>
<p>And here are the results:</p>
<ul>
<li><strong>People Data Labs</strong> - $98/mo for 350 profiles ($0.28/profile)</li>
<li><strong>Proxycurl</strong> - $49/mo for 2500 profiles ($0.02/profile)</li>
<li><strong>ReachStream</strong> - $99/mo for 5000 profiles ($0.02/profile)</li>
<li><strong>Coresignal</strong> - from $800/mo <em>(incomplete pricing info)</em></li>
<li><strong>Bright Data</strong> - $500/mo for 86k profiles ($0.006/profile) <em>(not a direct comparison as this pricing is for their scraper builder)</em></li>
<li><strong>PhantomBuster</strong> - $69/mo for 1470 profiles ($0.047/profile)</li>
</ul>
<p>There you go! We tried to compare them as faithfully as possible across all metrics to give you a good picture of comparing People Data Labs and the other providers.</p>
<h2 id="so-whos-the-best-alternative-to-people-data-labs">So, who's the best alternative to People Data Labs?</h2>
<p>Our verdict:</p>
<blockquote>
<p>Proxycurl is the most flexible yet with high data quality for your data needs. The pricing is also very competitive.</p>
</blockquote>
<p>And here's the summary comparing all providers:</p>
<ul>
<li><strong>People Data Labs</strong> - If you only care about the maximum number of data points, you can choose this one, but it's so expensive that it's probably not worth it, especially since you cannot get fresh data.</li>
<li><strong>Proxycurl</strong> - Probably your best choice for most use cases. Inexpensive, built for developers, and lets you choose your data freshness level.</li>
<li><strong>ReachStream</strong> - provides large, diverse datasets that are affordable for many businesses. A valid competitor for People Data Labs.</li>
<li><strong>Coresignal</strong> - You are required to buy in bulk, but it does offer a lot of datasets.</li>
<li><strong>Bright Data</strong> - Go here if you want to build and host your own scraper.</li>
<li><strong>PhantomBuster</strong> - Probably avoid because of legal compliance issues.</li>
</ul>
<p>Proxycurl is the best alternative to People Data Labs. Not only that, but you'll be better off with Proxyurl than you might be with People Data Labs.</p>
<p>Proxycurl's advantages:</p>
<ul>
<li><a href="https://nubela.co/blog/how-fresh-are-profiles-returned-by-proxycurl-api/">Data freshness</a></li>
<li><a href="https://nubela.co/blog/how-to-maximize-throughput-on-proxycurl/">Rate limit</a></li>
<li>Pricing</li>
<li>Accuracy</li>
</ul>
<p>People Data Labs' advantages:</p>
<ul>
<li>Slightly more comprehensive list of data points. But <a href="https://nubela.co/blog/ultimate-guide-to-all-21-proxycurl-apis-enrich-people-company-profiles/">check out Proxycurl's</a> while you're at it. It's an impressive array of its own!</li>
</ul>
<h3 id="try-proxycurl-today">Try Proxycurl today</h3>
<p>Ready to try Proxycurl? <a href="https://nubela.co/proxycurl/?ref=nubela.co">Create an account today!</a></p>
 ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ People Data Labs Reviews: Features, Pricing and Comparison ]]></title>
        <description><![CDATA[ ⭐️⭐️⭐️⭐️ Rating: 4/5. Explore a detailed People Data Labs reviews on their pricing, features and how they compare to Proxycurl, another leading industry provider. ]]></description>
        <link>https://nubela.co/blog/people-data-labs-reviews/</link>
        <guid isPermaLink="false">62b4372688fa7f0001068595</guid>
        <category><![CDATA[ proxycurl ]]></category>
        <dc:creator><![CDATA[ Sese | Technical Writer ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/10/IMG_4677.jpeg"/>
        <pubDate>Fri, 01 Nov 2024 01:35:00 +0800</pubDate>
        <media:content url="" medium="image"/>
        <content:encoded><![CDATA[ <p>Navigating the world of data solutions can be overwhelming, especially when it comes to choosing the right provider. If you've been in the industry long enough, you have likely come across <a href="https://www.peopledatalabs.com/?ref=nubela.co" rel="nofollow">People Data Labs</a>. They're a well-known B2B data provider, offering detailed profiles of individuals and companies to help businesses build data-driven solutions. From HR and recruitment to marketing and risk management, PDL's datasets cater to a wide range of industries. But how does their service truly measure up in practice?</p>
<p>To answer that question, I combed through multiple product review sites and noticed a common thread: while honest, the reviews were often divided and didn't address all the key concerns. It became clear that there wasn't a comprehensive review out there to help make an informed decision about People Data Labs. This gap prompted me to create a complete review that digs into every aspect of PDL's service, from pricing and features to real customer feedback.</p>
<p>That brings us to this article, where I'll review People Data Labs against key factors that matter most when evaluating a data provider. Plus, I'll compare PDL with <a href="https://nubela.co/proxycurl/?ref=nubela.co">Proxycurl</a>, an industry alternative that's gaining traction for all the right reasons. Let's see how well PDL perform against one of their industry's own.</p>
<p>For those looking for a quick People Data Labs review, here's a snapshot.</p>
<table>
<thead>
<tr>
<th style="text-align:center">Key Factors</th>
<th style="text-align:center">People Data Labs</th>
<th style="text-align:center">Proxycurl</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:center">Price</td>
<td style="text-align:center">$0.20 per profile</td>
<td style="text-align:center">$0.02 per profile</td>
</tr>
<tr>
<td style="text-align:center">Data Points Variety</td>
<td style="text-align:center">Offers Personal Emails ✅ Offers Phone Numbers ✅ Offers Work Emails ❌ Search functionality via API  ✅</td>
<td style="text-align:center">Offers Personal Emails ✅ Offers Phone Numbers ✅ Offers Work Emails ✅ Search Functionality ✅</td>
</tr>
<tr>
<td style="text-align:center">Data Freshness</td>
<td style="text-align:center">Data Freshness Guarantee ❌</td>
<td style="text-align:center">Guaranteed Data Freshness (No data older than 29 days) ✅</td>
</tr>
<tr>
<td style="text-align:center">Data Updates and Flexibility</td>
<td style="text-align:center">Updated Monthly by default  ✅</td>
<td style="text-align:center">Updated monthly ✅</td>
</tr>
<tr>
<td style="text-align:center"></td>
<td style="text-align:center">Inflexible ❌</td>
<td style="text-align:center">Flexibility of choice between freshly scraped, &lt;= 29 days old, or &gt; 29 days old ✅</td>
</tr>
<tr>
<td style="text-align:center">Ease of use</td>
<td style="text-align:center">Requires considerable technical expertise (steep learning curve) 📈</td>
<td style="text-align:center">Intuitive and effortless to use with standard technical knowledge 😃</td>
</tr>
<tr>
<td style="text-align:center">GDPR/ CCPA compliance</td>
<td style="text-align:center">Yes ✅</td>
<td style="text-align:center">Yes ✅</td>
</tr>
<tr>
<td style="text-align:center">Data Formats</td>
<td style="text-align:center">JSON ✅</td>
<td style="text-align:center">JSON ✅</td>
</tr>
</tbody>
</table>
<p>Now, we will go through a detailed review and comparison.</p>
<h2 id="customer-reviews-of-people-data-labs-%E2%AD%90%EF%B8%8F%E2%AD%90%EF%B8%8F%E2%AD%90%EF%B8%8F%E2%AD%90%EF%B8%8F">Customer Reviews of People Data Labs ⭐️⭐️⭐️⭐️</h2>
<p>The <a href="https://www.g2.com/products/people-data-labs/reviews?ref=nubela.co" rel="nofollow"> company reviews</a> are commendable. Most customers have praised People Data Labs for their accuracy, and appreciated their professional team. It really goes to show how people value their output and great customer support.</p>
<blockquote>
<p><em>"It just works. Set it up one time and it's continued to work with basically no interruption or maintenance."</em><br>
-<a href="https://www.g2.com/products/people-data-labs/reviews?ref=nubela.co#survey-response-4779372" rel="nofollow">Anonymous Reviewer, Computer Software</a></p>
</blockquote>
<blockquote>
<p><em>"Their work teams listen attentively to the concern of our satisfaction, they are people of heart."</em><br>
-<a href="https://www.g2.com/products/people-data-labs/reviews?page=2&ref=nubela.co" rel="nofollow">Jonny Martin, CTO</a></p>
</blockquote>
<p>On the flip side, there are instances of raised concerns on the company's poor data recency, high price and a steep learning curve. The high price tag is a major thorn for multiple customers however good the product might be.</p>
<blockquote>
<p><em>"It's a really good tool, unfortunately it's just a bit pricey."</em><br>
-<a href="https://slashdot.org/software/p/People-Data-Labs/?page=1&ref=nubela.co#reviews" rel="nofollow">Gloria, Lead Engineer</a></p>
</blockquote>
<blockquote>
<p><em>"I like everything but the price. It's hard for a small company to get started especially if they need a premium datapoint."</em><br>
-<a href="https://slashdot.org/software/p/People-Data-Labs/?page=2&ref=nubela.co#reviews" rel="nofollow">Anonymous Reviewer, CEO</a></p>
</blockquote>
<p>For those who are just starting out or prioritize up-to-date information, this might be a dealbreaker. These considerations will be discussed further in detail as we go forward. Despite these recurring cons, the overall reviews are positive.</p>
<h2 id="pricing-review-%E2%AD%90%EF%B8%8F%E2%AD%90%EF%B8%8F%E2%AD%90%EF%B8%8F">Pricing Review ⭐️⭐️⭐️</h2>
<p>People Data Labs offers three different <a href="https://www.peopledatalabs.com/pricing/person?ref=nubela.co" rel="nofollow">pricing plans</a>: Free, Pro, and Enterprise. The Pro plan starts at $98/month while Enterprise pricing is customizable. The Pro plan also offers a 20% discount when billed annually.</p>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXeg4y71i9abiL1FsL_5y7ZcmoLF9SjvCNIe-4APgvLQSFB3XmxX8P2_eiMkoFTBsZ8lx3fvkGaNLNozkarLN1SwC6h7jW04xSOoD01qf-VH287QGeckyEUgUCPN8nCYdjkZNIRYd5GBS36ypGPe3XBHbeE?key=Qr4MpI69Z7Z2IToTfkI2KQ" alt="People Data Labs Pricing Page" loading="lazy"></p>
<p>The high price tag is a constant grievance against People Data Labs services. While most users seem happy with the results, the premium cost makes the service almost unattainable for startups and small businesses.</p>
<h2 id="features-review">Features Review</h2>
<p>Before we review People Data Labs features and contrast it with Proxycurl, let's get something out of the way. People Data Labs (PDL) does not  scrape Professional Social Network profiles. It is not a Professional Social Network scraping service. Their core business lies in buying and combining a myriad of datasets from data vendors, packaging them up in an API and upselling the data.</p>
<p>Conversely, Proxycurl API scrapes data live from data sources such as Professional Social Network. Proxycurl's core business is selling the capability to fetch fresh enriched data from legal and ethical sources.</p>
<p>With that, now it's time for People Data Labs feature review:</p>
<h3 id="1-data-freshness-%E2%AD%90%EF%B8%8F%E2%AD%90%EF%B8%8F%E2%AD%90%EF%B8%8F">1. Data Freshness ⭐️⭐️⭐️</h3>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfEYzcXrFe2AYVf1rOioFn8h064xgNC-VVBDHFuZu9RhyE_YxfSXzEIuXJ_GVi_VKMG57JgwX6r1pGFsKhClySYo1P-pn8wjfIipMKgYYb4FWkGzk1RQ45LTPdJ8_KPB5x9unFYLj--P_iGBLKLYybqIQr1?key=Qr4MpI69Z7Z2IToTfkI2KQ" alt="People Data Labs and Proxycurl Data Freshness" loading="lazy"></p>
<p>People Data Labs offers trackable updates each month through their APIs. By trackable, it means their profile data contains "job last updated" and "location last updated" dates. But that is not enough as most data can be out-dated. You are querying a database of pre-crawled cached data when you call People Data Labs API.</p>
<p>Here's what a few People Data Labs reviewers had to say about data freshness:</p>
<blockquote>
<p><em>"The problem of data recency is one area for constant improvement."</em><br>
-<a href="https://www.g2.com/products/people-data-labs/reviews?ref=nubela.co" rel="nofollow">John Zacharakis, Director of Data Products</a></p>
</blockquote>
<blockquote>
<p><em>"The data is not always perfect in terms of freshness or accuracy, but it is within a tolerable range."</em><br>
-<a href="https://www.g2.com/products/people-data-labs/reviews?page=2&ref=nubela.co#survey-response-5068487" rel="nofollow">Anonymous Reviewer, Computer Software</a></p>
</blockquote>
<p>On the other hand, Proxycurl API serves data no older than 29 days. With <a href="https://nubela.co/blog/how-fresh-are-profiles-returned-by-proxycurl-api/">Proxycurl's freshness guarantee</a>, you can rest assured that you are receiving up-to-date data.</p>
<table>
<thead>
<tr>
<th style="text-align:center">People Data Labs</th>
<th style="text-align:center">Proxycurl</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:center">Data Freshness Guarantee ❌</td>
<td style="text-align:center">Data Freshness Guarantee ✅</td>
</tr>
</tbody>
</table>
<h3 id="2-data-points-variety-%E2%AD%90%EF%B8%8F%E2%AD%90%EF%B8%8F%E2%AD%90%EF%B8%8F%E2%AD%90%EF%B8%8F">2. Data Points Variety ⭐️⭐️⭐️⭐️</h3>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXf7MRxU_eYiw0UtFY2TELjJWWLJh428NPBHbzJRTmMmNftOIn-Q_Bsz5TfucQYEGdjQMHywg1eb5K6t8GtasqmB33c5Dqvd7PlRdNtYt7opKqK2IhtP2xy_jUOaGel3ieBEHEa-EQ1is0gwEgrh6CV6lgHW?key=Qr4MpI69Z7Z2IToTfkI2KQ" alt="People Data Labs vs Proxycurl on data points variety" loading="lazy"></p>
<p>People Data Labs enriches people's profiles with their contact data. It provides the users with personal emails and phone numbers.</p>
<p>Proxycurl takes it one step further by offering the same plus verified work emails that do not bounce.</p>
<table>
<thead>
<tr>
<th style="text-align:center">People Data Labs</th>
<th style="text-align:center">Proxycurl</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:center">Offers Personal Emails ✅</td>
<td style="text-align:center">Offers Personal Emails ✅</td>
</tr>
<tr>
<td style="text-align:center">Offers Phone Numbers ✅</td>
<td style="text-align:center">Offers Phone Numbers ✅</td>
</tr>
<tr>
<td style="text-align:center">Offers Work Emails ❌</td>
<td style="text-align:center">Offers Work Emails ✅</td>
</tr>
</tbody>
</table>
<h3 id="3-data-updates-and-flexibility-%E2%AD%90%EF%B8%8F%E2%AD%90%EF%B8%8F%E2%AD%90%EF%B8%8F%E2%AD%90%EF%B8%8F">3. Data Updates and Flexibility ⭐️⭐️⭐️⭐️</h3>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXeCIZQP_8QRYhd2zTq1B_5BhJHsgd83NHvQ4lk75Eb8sqKtjDFEbBtsErLhsF5gFQkTPo7nlEjlSfIR-EaDKJeW6X8-76HK7DNjZ0rOzREemB0ZIXTx3O9tSPN0O0nIqUexWF-pxYbDGxQGhA5J8Ctt4vos?key=Qr4MpI69Z7Z2IToTfkI2KQ" alt="People Data Labs vs Proxycurl data updates and flexibility" loading="lazy"></p>
<p>This aspect is rarely talked about in the customer reviews, but is an important consideration. People Data Labs update their datasets monthly by default. Access to fresh data is a sign of a good provider. But a great provider allows you flexibility and control over your data options. Sure you might want fresh data now, but if your needs change, it is important your provider is there to cover you.</p>
<p>Proxcurl also updates their datasets regularly, but with Proxycurl, you have the added flexibility and freedom to choose the<a href="https://nubela.co/blog/ultimate-guide-to-all-21-proxycurl-apis-enrich-people-company-profiles/#1-freshness-of-api-data"> freshness of data</a> you want from our API requests. You can choose between freshly scraped data, data that's 29 days or younger or historical data older than 29 days.</p>
<table>
<thead>
<tr>
<th style="text-align:center">People Data Labs</th>
<th style="text-align:center">Proxycurl</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:center">Updated Monthly by default ✅</td>
<td style="text-align:center">Updated regularly ✅</td>
</tr>
<tr>
<td style="text-align:center">Inflexible ❌</td>
<td style="text-align:center">Flexibility of choice between freshly scraped, &lt;= 29 days old, or &gt; 29 days old ✅</td>
</tr>
</tbody>
</table>
<h2 id="ease-of-use-%E2%AD%90%EF%B8%8F%E2%AD%90%EF%B8%8F%E2%AD%90%EF%B8%8F%E2%AD%90%EF%B8%8F">Ease of Use ⭐️⭐️⭐️⭐️</h2>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfzfUUbwplYXb4THjDUL6_95rCX_dyv5eO8xf_6-n0s8sDjaWDulSCI2s0qJFznos4uV6wqAj78Qob_1jrwnoKcaA5T_aN6gf6En92a1qE_uWp3Uj62iTlCrSLCmavm30NVsVpUlWcKUxOdnkO3gDC8HnML?key=Qr4MpI69Z7Z2IToTfkI2KQ" alt="People Data Labs vs Proxycurl and ease of use" loading="lazy"></p>
<p>People Data Labs reviewers had much to say about the platform's steep learning curve. While many were happy with the results, several pointed out the platform's requirement for a high degree of technical knowhow. Here are a few customer reviews from <a href="https://sourceforge.net/software/product/People-Data-Labs/?ref=nubela.co" ref="nofollow">SourceForge</a>.</p>
<blockquote>
<p><em>"There was a bit of a learning curve initially when getting familiar with all the features and functionalities of the platform."</em><br>
-<a href="https://slashdot.org/software/p/People-Data-Labs/?page=1&ref=nubela.co#reviews" ref="nofollow">Jurnee, CEO</a></p>
</blockquote>
<blockquote>
<p><em>"It is a bit technical to use so if you're not a techie be prepared to learn something new."</em><br>
-<a href="https://slashdot.org/software/p/People-Data-Labs/?page=1&ref=nubela.co#reviews" ref="nofollow">Anonymous Reviewer, Founder</a></p>
</blockquote>
<p>This doesn't diminish the value that People Data Labs provides; rather, it's important to view this as a disclaimer to understand what to expect before making a commitment.</p>
<p>In contrast, Proxycurl adopts a user-first approach, offering a platform that is easy to navigate, regardless of your technical background. Actually, we take pride in enabling businesses to build and scale data-driven applications without worrying about a dedicated data-science team.</p>
<p>Just take a look at what some customer had to say about using the product in their reviews:</p>
<blockquote>
<p><em>"They have a pretty decent API documentation that explains how to use their product without any complexity."</em><br>
-<a href="https://www.g2.com/products/proxycurl/reviews/proxycurl-review-9728180?ref=nubela.co" ref="nofollow">Victor, Project Manager</a></p>
</blockquote>
<blockquote>
<p><em>"Proxycurl makes it super easy to use Professional Social Network apis. The process otherwise is quite tedious and manual to create an app.With Proxycurl we got up and running in minutes. We love it!"</em><br>
-<a href="https://www.g2.com/products/proxycurl/reviews/proxycurl-review-8864432?ref=nubela.co" ref="nofollow">Anonymour Reviewer</a></p>
</blockquote>
<h2 id="use-cases-for-people-data-labs">Use Cases for People Data Labs</h2>
<p>The list for industries that do not use data would be shorter than those who do. HR and recruitment, sales and marketing, and risk management are major use cases for People Data labs.</p>
<ul>
<li>
<p><strong>HR and Recruitment:</strong> Widen candidate data range with contact information and resume attributes.</p>
</li>
<li>
<p><strong>Sales &amp; Marketing:</strong> Enhance leads for sales and marketing platforms.</p>
</li>
<li>
<p><strong>Risk Management:</strong> Identify and cross-reference individual information, fraud detection, and credit risk analysis.</p>
</li>
</ul>
<p>These are just a few use cases for their service. There are countless other applications depending on your specific needs. The key is identifying your need for a data solution, and then making an informed decision before committing to a provider. Check out <a href="https://nubela.co/blog/top-alternatives-to-people-data-labs/" rel="nofollow">Alternatives to People Data Labs</a> to browse your options.</p>
<h2 id="the-final-verdict">The Final Verdict</h2>
<p>Overall, our review of People Data Labs ends with a solid rating of 4 out of 5, largely due to its features and services. The biggest deal breaker for many businesses, especially those operating on tight budgets, is the high price. Those who opt for the service despite the high price, often find themselves frustrated by its out-dated data or steep learning curve. Fortunately, there are plenty of alternatives offering comparable, if not better, service.</p>
<p>Proxycurl stands out as a more cost-effective, reliable and user-friendly option. Proxycurl delivers the freshest data without skimming off your budget. Save time and money without compromising by choosing Proxycurl. <a href="https://nubela.co/proxycurl/auth/register?ref=nubela.co">Sign up</a> with your work email today and receive 100 free credits!</p>
<h2 id="faqs">FAQs</h2>
<div class="kg-card kg-toggle-card" data-kg-toggle-state="close">
            <div class="kg-toggle-heading">
                <h4 class="kg-toggle-heading-text"><span style="white-space: pre-wrap;">Is People Data Labs free?</span></h4>
                <button class="kg-toggle-card-icon" aria-label="Expand toggle to read content">
                    <svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"></path>
                    </svg>
                </button>
            </div>
            <div class="kg-toggle-content"><p><span style="white-space: pre-wrap;">People Data Labs is NOT a free service. They do have a free plan, where you get access to their datasets and select fields, but to get your hands on their full product and fields, you need to subscribe to one of their paid plans. The pricing is customized based on data volume, access needs, and usage frequency. However, be advised, you CANNOT sign up using your personal email. Their system only allows sign ups through work emails.</span></p></div>
        </div><div class="kg-card kg-toggle-card" data-kg-toggle-state="close">
            <div class="kg-toggle-heading">
                <h4 class="kg-toggle-heading-text"><span style="white-space: pre-wrap;">Where do People Data Labs get their data from?</span></h4>
                <button class="kg-toggle-card-icon" aria-label="Expand toggle to read content">
                    <svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"></path>
                    </svg>
                </button>
            </div>
            <div class="kg-toggle-content"><p><span style="white-space: pre-wrap;">People Data Labs has many data sources including open-source datasets, publicly available data, governmental public records and others. The gist is, they are all publicly available, and so are legally compliant. </span></p></div>
        </div><div class="kg-card kg-toggle-card" data-kg-toggle-state="close">
            <div class="kg-toggle-heading">
                <h4 class="kg-toggle-heading-text"><span style="white-space: pre-wrap;">Who owns People Data Labs?</span></h4>
                <button class="kg-toggle-card-icon" aria-label="Expand toggle to read content">
                    <svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"></path>
                    </svg>
                </button>
            </div>
            <div class="kg-toggle-content"><p><span style="white-space: pre-wrap;">People Data Labs is a privately held company. It was founded in 2015 by Sean Thorne and Joseph Drinkwater, who are still involved in the company's operations, aiming to revolutionize access to professional and B2B data.</span></p></div>
        </div><div class="kg-card kg-toggle-card" data-kg-toggle-state="close">
            <div class="kg-toggle-heading">
                <h4 class="kg-toggle-heading-text"><span style="white-space: pre-wrap;">What are the main competitors of PDL?</span></h4>
                <button class="kg-toggle-card-icon" aria-label="Expand toggle to read content">
                    <svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"></path>
                    </svg>
                </button>
            </div>
            <div class="kg-toggle-content"><p><span style="white-space: pre-wrap;">People Data Labs’ main competitors include Proxycurl, Clearbit, ZoomInfo, and Lusha. Each competitor provides similar data solutions, yet have a specialization of their own. Check out </span><a href="https://nubela.co/blog/top-alternatives-to-people-data-labs/" rel="noreferrer"><span style="white-space: pre-wrap;">Top 11 People Data Labs Alternatives &amp; Competitors</span></a><span style="white-space: pre-wrap;"> for more.</span></p></div>
        </div><div class="kg-card kg-toggle-card" data-kg-toggle-state="close">
            <div class="kg-toggle-heading">
                <h4 class="kg-toggle-heading-text"><span style="white-space: pre-wrap;">How are&nbsp;People Data Labs and Proxycurl different?</span></h4>
                <button class="kg-toggle-card-icon" aria-label="Expand toggle to read content">
                    <svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"></path>
                    </svg>
                </button>
            </div>
            <div class="kg-toggle-content"><p><span style="white-space: pre-wrap;">Proxycurl and People Data Labs both provide data services, but they differ in scope and focus. Proxycurl focuses on providing real-time, verified B2B contact and company data specifically for sales, marketing, and lead generation. People Data Labs offers broader data, focusing more towards employee records and demographic information, often used for CRM enrichment, fraud detection, and people-search applications.</span></p></div>
        </div> ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ The Professional Social Network API Pricing Guide You Need And How To Get Access ]]></title>
        <description><![CDATA[ We explored and did a breakdown of the various official Professional Social Network API pricing, including how to get access to them. ]]></description>
        <link>https://nubela.co/blog/the-linkedin-api-pricing-guide-you-need-and-how-to-get-access/</link>
        <guid isPermaLink="false">671f4cb81cb59d0001b172f5</guid>
        <category><![CDATA[ proxycurl ]]></category>
        <dc:creator><![CDATA[ Zeha Irawan | Senior Marketing Dev ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/10/zz.jpeg"/>
        <pubDate>Mon, 28 Oct 2024 16:59:12 +0800</pubDate>
        <media:content url="" medium="image"/>
        <content:encoded><![CDATA[ <p>If you're utilizing Professional Social Network's professional data for profiles, business information, or job listings, you've undoubtedly encountered the same difficulties that many developers do. Professional Social Network APIs come with hefty prices and stringent access limitations, making them a tough nut to crack.</p>
<p>Having worked in AI training, data processing, and content management, I've seen how these blockers can frustrate even the most data-driven organizations. Professional Social Network offers APIs at several pricing points. <strong>The People Profile API costs more than $59 per month for it's pricing, while the Company Profile API costs more than $699 per month</strong>. And that's only the beginning; before you can even start, you'll need to be part of the notoriously-difficult-to-get-access-to <a href="https://developer.professionalsocialnetwork.com/content/developer/global/en_us/index/partner-programs/apply?ref=nubela.co">Professional Social Network Partner program</a>.</p>
<p>Don’t just hear from me, [see what some Redditors say too](<a href="https://www.reddit.com/r/SaaS/comments/12xwjft/Professional?ref=nubela.co">https://www.reddit.com/r/SaaS/comments/12xwjft/Professional</a> Social Network_api_access/):</p>
<ul>
<li>Definitely a waste of time. Its almost impossible to get access to their api, unless you are a well stablished business...even then… <em>(Working-Finish-5560)</em></li>
<li>Agreed. We have clients, a full platform, users and funding from a venture capitalist in the UK and I can't even get a reply from their partnership team. <em>(Ian_SalesLynk)</em></li>
</ul>
<p>Here’s a quick comparison of the different APIs pricing structure:</p>
<table>
<thead>
<tr>
<th style="text-align:center">Professional Social Network API</th>
<th style="text-align:center">Pricing</th>
<th style="text-align:center">Uses</th>
<th style="text-align:center">Access</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:center">People Profile API</td>
<td style="text-align:center">(custom plans)</td>
<td style="text-align:center">Retrieve individual Professional Social Network profiles, work experiences, skills, etc.</td>
<td style="text-align:center">Requires application and Professional Social Network partnership</td>
</tr>
<tr>
<td style="text-align:center">Company Profile API</td>
<td style="text-align:center">(custom plans)</td>
<td style="text-align:center">Retrieve company info such as size, industry, employee count</td>
<td style="text-align:center">Requires Professional Social Network partnership approval</td>
</tr>
<tr>
<td style="text-align:center">Jobs API</td>
<td style="text-align:center">Variable, based on usage volume</td>
<td style="text-align:center">Extract job listings, search for relevant job postings</td>
<td style="text-align:center">Limited to Professional Social Network partner integrations</td>
</tr>
<tr>
<td style="text-align:center">Sales Navigator API</td>
<td style="text-align:center">$99.99 - $149.99 per month (per user)</td>
<td style="text-align:center">Access to advanced search and insights for sales outreach</td>
<td style="text-align:center">Via Sales Navigator subscription</td>
</tr>
</tbody>
</table>
<p>But here’s the thing—while Professional Social Network APIs can get the job done, their complex pricing and access requirements can be a real headache. That’s where <a href="https://proxycurl.com/?ref=nubela.co">Proxycurl</a> steps in as a smarter, more affordable alternative. In this article, we’ll dive into the various Professional Social Network API pricing tiers, access challenges, and how to set up.</p>
<h2 id="types-of-professional-social-network-apistiers">Types of Professional Social Network APIs/Tiers</h2>
<p>Having worked on projects that require precise data handling and integration, I’ve had my fair share of navigating different APIs, including Professional Social Network’s. There’s no one-size-fits-all solution here—Professional Social Network offers a range of APIs, each designed for specific use cases, from retrieving user profiles to insights on company data. But figuring out the right option can feel like trying to untangle a set of complex instructions. The access you get depends not just on the API you choose but also on Professional Social Network’s tiered system, which impacts the depth of data, how easy it is to access, and the overall cost. Let’s dive into the details and make sense of Professional Social Network’s API landscape, so you can see what best fits your needs.</p>
<h3 id="1-api-for-professional-social-network-people-profiles">1. API for Professional Social Network People Profiles</h3>
<p>If you need detailed personal data from Professional Social Network users—like work history, education, skills, and other profile insights—the People Profile API is your go-to. In my experience managing data collection projects, I’ve seen how valuable this level of access can be for building precise datasets. However, Professional Social Network doesn’t make it simple. To use this API, you’ll need to be part of Professional Social Network’s Partner Program, and getting in means navigating a long and detailed application process. It’s not just about access—it’s about proving you’ll use their data responsibly, which makes sense, given the sensitive nature of the information.</p>
<p>Important information provided:</p>
<ul>
<li>Name and URL of the profile</li>
<li>Experience at work and title currently held</li>
<li>Competencies and recommendations</li>
<li>History of education</li>
</ul>
<p>If you're willing to put in the time and money to go through the stringent access process, this API is fantastic. However, many find it to be simply impractical, particularly when there are alternatives like Proxycurl offering similar data at a fraction of the cost.</p>
<h3 id="2-api-for-professional-social-network-company-profiles">2. API for Professional Social Network Company Profiles</h3>
<p>The Professional Social Network Company Profile API is your go-to tool for gathering detailed information about businesses listed on the platform. From revenue figures to employee count, industry classification, and headquarters location, it provides a broad scope of data. During my time working with platforms like Andovar and LXT-AI, access to such data was essential in mapping organizational structures for various projects. However, just like the People Profile API, this one isn’t available to everyone. Only select partners get access, and the price tag is steep—potentially exceeding $7,200 per year. On top of that, there are strict limitations on how much data you can pull and how you’re allowed to use it. So, while it’s powerful, it’s not the most accessible API unless you're deeply invested in Professional Social Network's ecosystem.</p>
<p>Important information provided:</p>
<ul>
<li>Name of the company and URL</li>
<li>Size and Industry</li>
<li>Trends in employee growth</li>
<li>Headquarters location</li>
</ul>
<p>This API is strong for corporations wishing to research companies or improve their B2B outreach, but it has a lot of fees and limitations, which make it less desirable than more flexible, affordable alternatives like Proxycurl.</p>
<h3 id="3-api-for-professional-social-network-jobs">3. API for Professional Social Network Jobs</h3>
<p>Another valuable resource in Professional Social Network’s suite is the Jobs API, perfect for pulling job postings directly from the platform. For companies aiming to build custom job boards or analyze job market trends, this API offers incredible functionality. During my work with LXT-AI, tools like this were key in curating relevant data to streamline project workflows. However, the pricing structure for Professional Social Network’s Jobs API can be tricky—rates depend heavily on your usage and integration needs, making it tough to nail down a clear cost upfront. And just like the other APIs, gaining access requires a partnership agreement with Professional Social Network, which can be a challenge in itself.</p>
<p>Important information provided:</p>
<ul>
<li>Job description and title</li>
<li>Employer details</li>
<li>Location and kind of job</li>
<li>Dates of posting and expiration</li>
</ul>
<p>Large corporations may find Professional Social Network's Jobs API useful, but smaller companies or developers may find the cost and complexity of integration to be prohibitive.</p>
<h3 id="4-api-for-professional-social-network-marketing">4. API for Professional Social Network Marketing</h3>
<p>For advertising campaigns, Professional Social Network’s Marketing API is your go-to tool. It allows businesses to create, manage, and track the performance of their Professional Social Network ads, providing insights into audience engagement. During my time working with SEO tools like Squarespace, managing digital campaigns was crucial, and APIs like this can offer real-time data that optimizes ad strategies. However, accessing Professional Social Network’s Marketing API isn't as simple as signing up—you need to be a Professional Social Network Marketing Partner. Pricing is dynamic, too, often requiring a significant investment to unlock advanced targeting features, especially when aiming for detailed audience segmentation.</p>
<p>Important information provided:</p>
<ul>
<li>Developing and overseeing campaigns</li>
<li>Metrics measuring ad performance (clicks, impressions, etc.)</li>
<li>Targeting audiences according to industry, job titles, and other factors</li>
</ul>
<p>Although this API is necessary for major advertisers, smaller businesses may find it less desirable due to its high cost and limited access.<br>
Individuals looking for more flexible options might face blockers here.</p>
<h3 id="5-api-for-professional-social-network-learning">5. API for Professional Social Network Learning</h3>
<p>Professional Social Network’s Learning API is designed for those who want to integrate Professional Social Network Learning into their own platforms. This is a great tool for companies or educational institutions that want to offer Professional Social Network courses as part of their training programs. Having worked on various content curation projects and educational tools, I can see the value in providing seamless access to course materials and progress tracking through this API. However, just like the other Professional Social Network APIs, access requires a partner agreement, and the cost can be a bit murky, often revealed only after you're deep into the application process.</p>
<p>Important information provided:</p>
<ul>
<li>Course descriptions and titles</li>
<li>Status of enrollment</li>
<li>Tracking completion</li>
</ul>
<p>Although corporate learning platforms and educational institutions generally use this API, its cost and access restrictions make it a niche offering.</p>
<h2 id="details-of-each-professional-social-network-api-pricing-uses-access-and-setup">Details of Each Professional Social Network API: Pricing, Uses, Access, and Setup</h2>
<p>In this section, we’ll dive deeper into Professional Social Network’s most popular APIs, breaking down each one by pricing, its primary use cases, how to get access, and a quick guide to setting it up with code snippets to help you get started.</p>
<h3 id="1-professional-social-network-people-profile-api">1. Professional Social Network People Profile API</h3>
<h3 id="pricing-of-this-professional-social-network-api">Pricing of this Professional Social Network API</h3>
<p>The cost of the Professional Social Network People Profile API is high. Companies who want access must be a part of Professional Social Network's Partner Program, which has different annual fees range, depending on usage and the size of the organization. This makes it pricey for smaller firms and startups.</p>
<h4 id="applications">Applications:</h4>
<p>This API offers comprehensive Professional Social Network profile information, such as:</p>
<ul>
<li>Complete name</li>
<li>Position names</li>
<li>Work experience</li>
<li>Qualifications and certifications</li>
<li>Background in education</li>
</ul>
<p>Businesses who need detailed information about experts and are concentrating on B2B services, sales prospecting, or talent acquisition should find it suitable.</p>
<h4 id="how-to-get-access">How to Get Access:</h4>
<p>Gaining access to the People Profile API is not as straightforward as signing up. You must first apply and be approved as a Professional Social Network partner. This process can take several months, and Professional Social Network typically selects companies based on their influence and alignment with Professional Social Network’s business goals.</p>
<ol>
<li>Apply to the Professional Social Network Marketing Developer Program.</li>
<li>Await approval from Professional Social Network.</li>
<li>Once approved, you will receive your API key.</li>
</ol>
<h4 id="how-to-set-up">How to Set Up:</h4>
<p>Here’s a simple example of how you’d typically access data via Professional Social Network’s People Profile API:</p>
<p>Professional Social Network People Profile API Example (Hypothetical):</p>
<pre><code class="language-python">import requests

API_KEY = "your_Professional Social Network_api_key"
person_id = "person_profile_id"

url = f"https://api.professionalsocialnetwork.com/v2/people/{person_id}"

headers = {
    "Authorization": f"Bearer {API_KEY}",
    "Content-Type": "application/json"
}

response = requests.get(url, headers=headers)

if response.status_code == 200:
    data = response.json()
    print(data)
else:
    print(f"Failed to retrieve profile: {response.status_code}")
</code></pre>
<p>However, the complex approval process and the expensive pricing make it tough to access the official Professional Social Network People Profile API.</p>
<h3 id="2-professional-social-network-company-profile-api">2. Professional Social Network Company Profile API</h3>
<h3 id="pricing-of-this-professional-social-network-api">Pricing of this Professional Social Network API</h3>
<p>The Company Profile API is priced higher, starting from $699 per month for basic access, making it one of the most expensive Professional Social Network API tiers.</p>
<h4 id="uses">Uses:</h4>
<p>The Company Profile API allows you to pull detailed information about companies, including:</p>
<ul>
<li>Company name</li>
<li>Industry classification</li>
<li>Number of employees</li>
<li>Revenue estimates</li>
<li>Growth trends</li>
</ul>
<p>This API is particularly useful for B2B marketing, sales prospecting, and competitive analysis.</p>
<h4 id="how-to-get-access">How to Get Access:</h4>
<p>Similar to the People Profile API, getting access to the Company Profile API requires an application to Professional Social Network’s Partner Program. Only approved partners will receive access, and the approval process may take several months.</p>
<ol>
<li>Apply to the Professional Social Network Partner Program.</li>
<li>Upon approval, Professional Social Network will provide your API credentials.</li>
</ol>
<h4 id="how-to-set-up">How to Set Up:</h4>
<p>Below is an example of how to set up the Company Profile API to fetch company data.</p>
<p>Professional Social Network Company Profile API Example (Hypothetical):</p>
<pre><code class="language-python">import requests

API_KEY = "your_Professional Social Network_api_key"
company_id = "company_profile_id"

url = f"https://api.professionalsocialnetwork.com/v2/companies/{company_id}"

headers = {
    "Authorization": f"Bearer {API_KEY}",
    "Content-Type": "application/json"
}

response = requests.get(url, headers=headers)

if response.status_code == 200:
    company_data = response.json()
    print(company_data)
else:
    print(f"Failed to retrieve company profile: {response.status_code}")
</code></pre>
<p>The high price and lengthy access process make Proxycurl’s Company Profile API a more attractive choice for many users.</p>
<h3 id="3-professional-social-network-jobs-api">3. Professional Social Network Jobs API</h3>
<h3 id="pricing-of-this-professional-social-network-api">Pricing of this Professional Social Network API</h3>
<p>Professional Social Network's Jobs API pricing varies widely, depending on the number of job listings you’re pulling and whether you’re an approved Professional Social Network partner. The pricing can be quite high, starting at several thousand dollars per year. Additionally, pricing depends on your level of integration and ad spend.</p>
<h4 id="uses">Uses:</h4>
<p>This API is used to fetch job listings, which include:</p>
<ul>
<li>Job titles</li>
<li>Company details</li>
<li>Location</li>
<li>Employment type (full-time, part-time, remote, etc.)</li>
<li>Posted and expiration dates</li>
</ul>
<p>This is particularly useful for companies looking to aggregate job data or build job boards.</p>
<h4 id="how-to-get-access">How to Get Access:</h4>
<p>Access to the Professional Social Network Jobs API also requires becoming part of the Partner Program. This includes signing partner agreements and meeting Professional Social Network’s approval criteria.</p>
<ol>
<li>Apply to Professional Social Network’s Partner Program for jobs data.</li>
<li>Secure approval to receive your API key.</li>
</ol>
<h4 id="how-to-set-up">How to Set Up:</h4>
<p>Here’s how you’d typically set up a connection to Professional Social Network’s Jobs API.</p>
<p>Professional Social Network Jobs API Example (Hypothetical):</p>
<pre><code class="language-python">import requests

API_KEY = "your_Professional Social Network_api_key"
job_id = "job_listing_id"

url = f"https://api.professionalsocialnetwork.com/v2/jobs/{job_id}"

headers = {
    "Authorization": f"Bearer {API_KEY}",
    "Content-Type": "application/json"
}

response = requests.get(url, headers=headers)

if response.status_code == 200:
    job_data = response.json()
    print(job_data)
else:
    print(f"Failed to retrieve job listing: {response.status_code}")
</code></pre>
<h2 id="cons-of-using-the-official-professional-social-network-apis">Cons of using the official Professional Social Network APIs</h2>
<p>While Professional Social Network's APIs offer powerful data, they also come with significant drawbacks that may make them less appealing for businesses looking for flexible, affordable, and easy-to-use solutions. Below are some key cons of using Professional Social Network APIs:</p>
<h3 id="1-pricing-is-high">1. Pricing is high</h3>
<p>One of the most prominent downsides to using Professional Social Network’s APIs is the prohibitive pricing structure. Here’s a breakdown:</p>
<ul>
<li>People Profile API: Starting at over $59 per month, this is approximate.</li>
<li>Company Profile API: Costs upwards of $699 per month, but this is approximate.</li>
<li>Jobs API: Prices are highly variable, but large enterprises can expect to pay several thousand dollars annually.</li>
</ul>
<p>For small to mid-sized businesses, or startups with tight budgets, Professional Social Network’s API costs can be a significant barrier to entry.</p>
<h3 id="2-restricted-access">2. Restricted Access</h3>
<p>Gaining access to Professional Social Network’s APIs isn’t as simple as signing up. You need to:</p>
<ul>
<li>Apply to be a Professional Social Network partner and get approved, a process that can take months.</li>
<li>Meet Professional Social Network's strict criteria, including alignment with their business goals.</li>
<li>Partner agreements are required, which adds legal and bureaucratic hurdles.</li>
</ul>
<p>This makes it difficult for most businesses to even gain access to Professional Social Network’s data, slowing down their operations and delaying projects.</p>
<h3 id="3-limited-flexibility">3. Limited Flexibility</h3>
<p>Professional Social Network’s APIs come with restrictions on data usage:</p>
<ul>
<li>Limited to certain types of data points, and even then, only on profiles or companies that have given explicit permission for their information to be accessed.</li>
<li>If your business model requires a broader range of data, Professional Social Network’s restrictions may limit how much value you can extract from their APIs.</li>
</ul>
<h3 id="4-complicated-setup-and-integration">4. Complicated Setup and Integration</h3>
<p>Unlike more user-friendly APIs, Professional Social Network’s APIs involve complex setups and integrations:</p>
<ul>
<li>Technical hurdles: Their documentation can be dense and is designed for developers who already have experience with complex API setups.</li>
<li>Authorization processes: The need for OAuth authorization tokens and partner agreements makes the process even more cumbersome for non-developers or smaller teams without extensive tech resources.</li>
</ul>
<p>For many businesses, this complexity can slow down implementation, adding unnecessary friction to projects.</p>
<h3 id="5-long-approval-times">5. Long Approval Times</h3>
<p>One of the biggest pain points for companies trying to use Professional Social Network’s APIs is the long approval process. Gaining access as a Professional Social Network partner can take months, which could hinder your operations if you need to move quickly. This can be a significant drawback for businesses that need real-time or near-immediate access to professional data.</p>
<h3 id="6-data-availability-permissions">6. Data Availability &amp; Permissions</h3>
<p>Professional Social Network’s API restricts access to certain user data based on the platform’s privacy policies and user settings:</p>
<ul>
<li>You can only retrieve data from users who have allowed API access to their profiles.</li>
<li>This limits the dataset size, making Professional Social Network’s data less useful for large-scale business operations requiring comprehensive data coverage.</li>
</ul>
<h2 id="in-summary">In summary</h2>
<p>Professional Social Network's APIs may be packed with valuable data, but for many businesses, the high costs, limited access, complexity, and restrictions make them less than ideal. These drawbacks make a compelling case for using alternatives like Proxycurl, which offers a simpler, more affordable, and faster way to access professional data.</p>
<h2 id="proxycurl-the-superior-alternative">Proxycurl: the superior alternative</h2>
<p>At this point, it’s clear that Professional Social Network’s APIs are powerful, but they come at a cost—both in terms of price and access restrictions. Fortunately, there’s <a href="https://proxycurl.com/?ref=nubela.co">Proxycurl</a>, a more accessible, budget-friendly option that offers equivalent professional data without the fuss. Let’s dive into why Proxycurl should be your go-to solution for pulling rich data about people, companies, jobs, and contacts.</p>
<h2 id="why-proxycurl-stands-out">Why Proxycurl stands out</h2>
<p>Proxycurl's APIs are designed with simplicity, flexibility, and affordability in mind, making it the clear alternative for those who don’t want to deal with Professional Social Network’s heavy pricing or red tape. Here’s a breakdown of some of Proxycurl’s most popular API endpoints and why they’re a superior option.</p>
<h3 id="1-person-profile-api">1. <a href="https://nubela.co/proxycurl/people-api?ref=nubela.co">Person Profile API</a></h3>
<p>Professional Social Network’s People Profile API is notorious for its high costs and complex authorization process, starting at over $10,000 per year. Proxycurl’s Person Profile API provides the same public data at a fraction of the cost. You can easily retrieve professional information like job titles, work experience, education, and skills with just a few lines of code.</p>
<p>Proxycurl Person Profile API Example:</p>
<pre><code class="language-python">import requests

response = requests.get(
    "https://nubela.co/proxycurl/api/v2/Professional Social Network",
    params={"url": "https://www.professionalsocialnetwork.com/in/xyz"},
    headers={"Authorization": "Bearer &lt;your_api_key&gt;"}
)

print(response.json())
</code></pre>
<p>With Proxycurl, you simply input the Professional Social Network URL, add your API key, and you're done—no cumbersome approval processes or expensive fees.</p>
<h3 id="2-company-profile-apihttpsnubelacoproxycurlprofessional-social-networkcompany">2. [Company Profile API](<a href="https://nubela.co/proxycurl/Professional?ref=nubela.co">https://nubela.co/proxycurl/Professional</a> Social Network/company)</h3>
<p>Professional Social Network’s Company Profile API allows you to gather detailed information about organizations, but the hefty annual cost can climb up to $15,000. On the other hand, Proxycurl’s Company Profile API pulls similar company data—like industry classification, employee size, and Professional Social Network presence—at a fraction of the price. This makes it a more practical solution for businesses looking to gain insights without breaking the bank.</p>
<p>Proxycurl Company Profile API Example:</p>
<pre><code class="language-python">import requests

response = requests.get(
    "https://nubela.co/proxycurl/api/v2/company",
    params={"domain": "company.com"},
    headers={"Authorization": "Bearer &lt;your_api_key&gt;"}
)

print(response.json())
</code></pre>
<p>With just one API call, Proxycurl offers immediate access to the company data you need, without any hidden costs or complicated integrations.</p>
<h3 id="3-jobs-api">3. <a href="https://nubela.co/proxycurl/jobs-api?ref=nubela.co">Jobs API</a></h3>
<p>Professional Social Network requires partner integrations and a confusing pricing model to access job listings, which can be a headache if you just want a straightforward solution. Proxycurl’s Jobs API makes this process seamless, allowing you to access job listings quickly and at a transparent price. Whether you’re tracking job trends or scraping open positions for analysis, Proxycurl’s Jobs API provides the flexibility to meet your needs without needing a special Professional Social Network partnership.</p>
<p>Proxycurl Jobs API Example:</p>
<pre><code class="language-python">import requests

response = requests.get(
    "https://nubela.co/proxycurl/api/v2/job_listing",
    params={"company_domain": "company.com"},
    headers={"Authorization": "Bearer &lt;your_api_key&gt;"}
)

print(response.json())
</code></pre>
<p>No hidden fees, no access restrictions—just straightforward, clear job data that you can start using right away.</p>
<h3 id="4-contact-api">4. <a href="https://nubela.co/proxycurl/contact-api?ref=nubela.co">Contact API</a></h3>
<p>Need to extract contact details? Professional Social Network doesn’t offer this option readily, but Proxycurl’s Contact API provides an efficient way to gather publicly available contact information. This can be incredibly useful for outreach and networking, and Proxycurl’s API makes it easy to pull this data in a structured format.</p>
<h2 id="proxycurl-professional-social-network-api-pricing">Proxycurl Professional Social Network API pricing</h2>
<p>Proxycurl’s pricing is transparent, simply refer to <a href="https://nubela.co/proxycurl/pricing?ref=nubela.co">this pricing page</a> and you’ll see. It is transparent not just compared to Professional Social Network API, but even among [other alternatives](<a href="https://nubela.co/blog/reviewing-top-Professional">https://nubela.co/blog/reviewing-top-Professional</a> Social Network-scraping-api-services/).</p>
<p>On the pricing page, each call of the various API endpoints is laid out clearly so you’d know what to expect based on your usage. Certain premium parameters cost extra credits, those are documented in the respective endpoint sections in the <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#proxycurl-overview">API docs</a> too.</p>
<h2 id="proxycurl-vs-professional-social-network-why-choose-proxycurl">Proxycurl vs. Professional Social Network: why choose Proxycurl?</h2>
<p>When it comes to pulling data about people, companies, jobs, or contact details, Proxycurl offers a more affordable, accessible, and user-friendly experience compared to Professional Social Network’s API. Whether you’re a developer looking for a fast integration or a business in need of detailed professional data, Proxycurl delivers the same data points with far less hassle and cost.</p>
<p>Ready to stop overpaying and start gathering data efficiently? Try Proxycurl today!</p>
 ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ We Scraped Ahrefs Evolve 2024 Attendees &amp; Enriched It with Professional Social Network Data to Identify Noteworthy People to Network With (Spreadsheet Included) ]]></title>
        <description><![CDATA[ My marketing team and I are attending the Ahrefs Evolve 2024 conference in 2 days time. My objective (as the CEO of the company) in attending this conference is really to identify a few brilliant individuals whom I might be able to hire to join Proxycurl to bolster our marketing ]]></description>
        <link>https://nubela.co/blog/we-scraped-ahrefs-evolve-2024-attendees-enriched-it-with-linkedin-data-to-identify-noteworthy-people-to-network-with-spreadsheet-included/</link>
        <guid isPermaLink="false">671766061cb59d0001b171ab</guid>
        <category><![CDATA[ proxycurl ]]></category>
        <dc:creator><![CDATA[ Steven Goh | CEO ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2019/05/square.jpg"/>
        <pubDate>Tue, 22 Oct 2024 16:49:20 +0800</pubDate>
        <media:content url="" medium="image"/>
        <content:encoded><![CDATA[ <p>My marketing team and I are attending the <a href="https://ahrefs.com/events/evolve2024-singapore?ref=nubela.co">Ahrefs Evolve 2024 conference</a> in 2 days time. My objective (as the CEO of the company) in attending this conference is really to identify a few brilliant individuals whom I might be able to hire to join Proxycurl to bolster our marketing team. Just yesterday, I was logging into Micepad, the official platform for the conference, to check out the event agenda and schedule; and I found that the full list of attendees is located within the dashboard for my browsing.</p>
<p>As a product CEO and a software developer, I noticed that the attendees were lazily loaded as you scrolled to the end of the page. Also, I noticed that the full list of attendees can be fetched. The problem is that I lack finer details of attendees. What kind of companies do they work for? How noteworthy are they? Instantly, I realized that Proxycurl with our <a href="https://nubela.co/proxycurl/people-api?ref=nubela.co">Person Lookup Endpoint</a> is the solution I am seeking. I already have the first/last name and the company they are working with; therefore I can pair each attendee with the Professional Social Network profile URL, and then enrich it further with their profile data such as follower count, etc.</p>
<p>But before I jump into it, <a href="https://docs.google.com/spreadsheets/d/18OVMmdH4wTQufG3dSwHsw6qRf-RsANKh0AfSE5oetns/edit?usp=sharing&ref=nubela.co">here's the attendee list for Ahrefs Evolve 2024</a>.</p>

<!--kg-card-begin: html-->
<iframe style="width:100%;min-height:500px;" src="https://docs.google.com/spreadsheets/d/e/2PACX-1vQ2roG6YXN8VMECNtoUVSM0Wf4QUjDJCVOi_kw0jbT3mfqhcVMPh8f7-qF7JGnRJuJ5JEDSKrhxdPB1/pubhtml?gid=1679812332&amp;single=true&amp;widget=true&amp;headers=false"></iframe>
<!--kg-card-end: html-->
<h2 id="scraping-and-paginating-attendees">Scraping and paginating attendees</h2>
<p>I opened up my handy developer tools in Firefox, and scrolled to the end of the page of Micepad Attendee page; checked out the XHR requests that was happening and I saw this request simulated by this <code>curl</code> command:</p>
<pre><code class="language-sh">curl 'https://app.micepad.co/api/web2/getInstanceAttendees' \
  --compressed \
  -X POST \
  -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:132.0) Gecko/20100101 Firefox/132.0' \
  -H 'Accept: application/json, text/plain, */*' \
  -H 'Accept-Language: en-US,en;q=0.5' \
  -H 'Accept-Encoding: gzip, deflate, br, zstd' \
  -H 'Referer: https://micepad.co/' \
  -H 'Content-Type: application/json' \
  -H 'Origin: https://micepad.co' \
  -H 'DNT: 1' \
  -H 'Connection: keep-alive' \
  -H 'Sec-Fetch-Dest: empty' \
  -H 'Sec-Fetch-Mode: cors' \
  -H 'Sec-Fetch-Site: same-site' \
  -H 'Pragma: no-cache' \
  -H 'Cache-Control: no-cache' \
  -H 'TE: trailers' \
  --data-raw '{
    "expressions":[],
    "moduleid":221220,
    "searchTerm":"",
    "offset":4,
    "apikey":"xxx-censored-xxx",
    "instanceid":6751,
    "languageid":7277
  }'
</code></pre>
<p>Lo and behold, the attendees were returned in JSON like this:</p>
<pre><code class="language-json">[
  {
    "email": "",
    "firstname": "Aaron",
    "lastname": "Taylor",
    "title": "SEO Director",
    "company": "Prosperity Media",
    "country": "AU",
    "phonenumber": "",
    "industry": "",
    "photoPath": "",
    "biography": "",
    "businessCardPath": "",
    "isValid": true,
    "fullName": "Aaron Taylor",
    "userid": 1027150,
    "instanceid": 6751,
    "instanceUser": {
      "userid": 1027150,
      "type": "user",
      "bmstatus": 1
    },
    "bmChoicesIds": [],
    "realScore": 0,
    "totalScore": 0,
    "rank": 13,
    "allowInitiateText": 1,
    "allowReceiveText": 1,
    "allowInitiateVideoCall": 0,
    "allowAnswerVideoCall": 0,
    "allowRequestMeeting": 1,
    "allowAcceptMeeting": 1,
    "onlineStatus": 0
  },
  {
    "email": "",
    "firstname": "Aaron",
    "lastname": "Sin",
    "title": "Specialist, Marketing Communications &amp; Investor Relations",
    "company": "Tiong Woon Crane &amp; Transport Pte Ltd",
    "country": "SG",
    "phonenumber": "",
    "industry": "",
    "photoPath": "https://data.micepad.co/data/uploads/6751/profile/SXdxlp_AaronSinNoBackground_6de0bb99-a619-48f2-bbc2-84b148283712_resized512.png",
    "biography": "",
    "businessCardPath": "",
    "isValid": true,
    "fullName": "Aaron Sin",
    "userid": 1044715,
    "instanceid": 6751,
    "instanceUser": {
      "userid": 1044715,
      "type": "user",
      "bmstatus": 1
    },
    "bmChoicesIds": [],
    "realScore": 0,
    "totalScore": 0,
    "rank": 18,
    "allowInitiateText": 1,
    "allowReceiveText": 1,
    "allowInitiateVideoCall": 0,
    "allowAnswerVideoCall": 0,
    "allowRequestMeeting": 1,
    "allowAcceptMeeting": 1,
    "onlineStatus": 0
  },
  ...
]
</code></pre>
<p>With common sense while analyzing the request, you can see that I can basically paginate the entire attendee list by incrementing the <code>offset</code> value from <code>0</code> to <code>N</code>.</p>
<p>Here's the parameter set in question:</p>
<pre><code class="language-json">{
    "expressions":[],
    "moduleid":221220,
    "searchTerm":"",
    "offset":4, // &lt;--- increment this number starting from 0
    "apikey":"xxx-censored-xxx",
    "instanceid":6751,
    "languageid":7277
  }
</code></pre>
<p>So, with some trusty Python for which I barely touch these days, I wrote this up to paginate through Micepad to get the full list of attendees:</p>
<pre><code class="language-python">def scrape_attendees():
    url = 'https://app.micepad.co/api/web2/getInstanceAttendees'
    headers = {
        'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:132.0) Gecko/20100101 Firefox/132.0',
        'Accept': 'application/json, text/plain, */*',
        'Accept-Language': 'en-US,en;q=0.5',
        'Content-Type': 'application/json',
        'Origin': 'https://micepad.co',
        'DNT': '1',
        'Connection': 'keep-alive',
        'Referer': 'https://micepad.co/',
        'Sec-Fetch-Dest': 'empty',
        'Sec-Fetch-Mode': 'cors',
        'Sec-Fetch-Site': 'same-site',
        'Pragma': 'no-cache',
        'Cache-Control': 'no-cache',
    }

    payload = {
        "expressions": [],
        "moduleid": 221220,
        "searchTerm": "",
        "offset": 0,
        "apikey": "xxx-censored-xxx",
        "instanceid": 6751,
        "languageid": 7277
    }

    all_attendees = []
    total_records = None

    while True:
        response = requests.post(url, headers=headers, json=payload)
        data = response.json()

        if total_records is None:
            total_records = data['totalRecords']
            print(f"Total records: {total_records}")

        attendees = data['attendees']
        all_attendees.extend(attendees)
        print(f"Fetched {len(all_attendees)} attendees so far...")

        if len(attendees) == 0 or len(all_attendees) &gt;= total_records:
            print(f"Fetched {len(all_attendees)} attendees in total")
            break

        payload['offset'] += 1

    print(f"Total attendees fetched: {len(all_attendees)}")

    with open('attendees.json', 'w') as f:
        json.dump(all_attendees, f, indent=2)
</code></pre>
<p>Now I have a list of attendees. But that isn't enough. I want to <strong>enrich each of these attendees with their Professional Social Network profile URL</strong> and sort these attendees by their follower count.</p>
<h2 id="enriching-attendees-with-professional-social-network-profile-url-and-profile-data">Enriching attendees with Professional Social Network Profile URL and profile data</h2>
<p>It turns out that Proxycurl has the perfect tool for this. With a person's first and last name, and the company they are working with, there is a very good chance we'll be able to match this person to his/her Professional Social Network Profile URL via the <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#people-api-person-lookup-endpoint">Person Lookup Endpoint</a>. On top of that, it can enrich the matched Professional Social Network Profile URL with the full dataset, <strong>all within one API request</strong>.</p>
<p>So given that there are <code>522</code> attendees and I don't have all day. So I decided to sprint through the attendee list by making API calls to the Person Lookup Endpoint concurrently. I did this with a worker pool of <code>10</code> (coincidentally, while doing so, I found a bug within our API endpoint for which we were returning the wrong status code when we failed to match it with any result. This is now being fixed, hah).</p>
<p>Here's how I did it:</p>
<pre><code class="language-python">def enrich_attendee(attendee):
    api_key = PROXYCURL_API_KEY

    url = 'https://nubela.co/proxycurl/api/Professional Social Network/profile/resolve'
    headers = {
        'Authorization': f'Bearer {api_key}'
    }
    params = {
        'company_domain': attendee.get('company', ''),
        'first_name': attendee.get('firstname', ''),
        'last_name': attendee.get('lastname', ''),
        'enrich_profile': 'enrich',
        'location': f"{attendee.get('city', '')} {attendee.get('country', '')}".strip(),
        'title': attendee.get('title', '')
    }

    retries = 0
    max_retries = 2
    while retries &lt; max_retries:
        response = requests.get(url, headers=headers, params=params)
        if response.status_code == 200:
            enriched_data = response.json()
            attendee['enriched_data'] = enriched_data
            break
        elif response.status_code == 503:
            retries += 1
            if retries &lt; max_retries:
                print(f"Received 503 error. Retrying ({retries}/{max_retries})...")
                time.sleep(2 ** retries)  # Exponential backoff
            else:
                print(f"Failed to enrich attendee after {max_retries} retries: {attendee['fullName']} - Status code: {response.status_code}")
                print(f"Params for failed request: {params}")
        else:
            print(f"Failed to enrich attendee: {attendee['fullName']} - Status code: {response.status_code}")
            break

    return attendee

def enrich_attendees():
    with open('attendees.json', 'r') as f:
        attendees = json.load(f)

    # Load existing enriched attendees
    try:
        with open('attendees_enriched.json', 'r') as f:
            enriched_attendees = json.load(f)
    except Exception:
        enriched_attendees = []

    # Create a set of already enriched attendee IDs for quick lookup
    enriched_ids = set(attendee['userid'] for attendee in enriched_attendees)

    # Create a lock for thread-safe writing
    write_lock = threading.Lock()

    def enrich_and_save(attendee):
        if attendee['userid'] not in enriched_ids:
            enriched_attendee = enrich_attendee(attendee)
            with write_lock:
                with open('attendees_enriched.json', 'a') as f:
                    json.dump(enriched_attendee, f)
                    f.write('\n')
            print(f"Enriched and saved attendee: {enriched_attendee['fullName']}")
            return enriched_attendee
        else:
            print(f"Skipped already enriched attendee: {attendee['fullName']}")
            return None

    executor = ThreadPoolExecutor(max_workers=10)
    futures = []

    try:
        for attendee in attendees:
            futures.append(executor.submit(enrich_and_save, attendee))

        for future in as_completed(futures):
            enriched_attendee = future.result()
            if enriched_attendee:
                enriched_attendees.append(enriched_attendee)

    except KeyboardInterrupt:
        print("\nScript interrupted by user. Aborting remaining tasks and saving progress...")
        executor.shutdown(wait=False, cancel_futures=True)
    finally:
        executor.shutdown(wait=True)
        print(f"Enriched {len(enriched_attendees)} attendees. Results saved to attendees_enriched.json")
</code></pre>
<p>Quite easily done. This was completed in a few minutes.</p>
<h2 id="exporting-to-csv">Exporting to CSV</h2>
<p>JSON is not my favourite way to work with files. I much prefer my spreadsheet UI. And my spreadsheet of choice is Google Sheets. So, I decided to export the dataset to CSV for which I can easily open with Google Sheets.</p>
<p>The last step for me was to export the data to CSV file, for which I uploaded to Google Sheets, which you can view <a href="https://docs.google.com/spreadsheets/d/18OVMmdH4wTQufG3dSwHsw6qRf-RsANKh0AfSE5oetns/edit?usp=sharing&ref=nubela.co">here</a>.</p>
<p>This was how I did it:</p>
<pre><code class="language-python">def export_to_csv():
    try:
        with open('attendees_refreshed.json', 'r') as f:
            attendees = [json.loads(line) for line in f]
    except FileNotFoundError:
        print("Error: attendees_refreshed.json not found. Please run the 'refresh' command first.")
        return

    csv_filename = 'attendees_enriched.csv'

    with open(csv_filename, 'w', newline='', encoding='utf-8') as csvfile:
        fieldnames = ['First Name', 'Last Name', 'Latest Job Title', 'Current Company',
                      'Professional Social Network Profile URL', 'Current Company Professional Social Network Profile URL',
                      'Follower Count', 'Bio', 'Headline', 'Country']
        writer = csv.DictWriter(csvfile, fieldnames=fieldnames)

        writer.writeheader()
        for attendee in attendees:
            enriched_data = attendee.get('enriched_data', {})
            profile_data = enriched_data.get('profile', {})
            experiences = profile_data.get('experiences', [])
            current_job = experiences[0] if experiences else {}

            writer.writerow({
                'First Name': attendee.get('firstname', ''),
                'Last Name': attendee.get('lastname', ''),
                'Latest Job Title': attendee.get('title', ''),
                'Current Company': attendee.get('company', ''),
                'Professional Social Network Profile URL': enriched_data.get('url', ''),
                'Current Company Professional Social Network Profile URL': current_job.get('company_Professional Social Network_profile_url', ''),
                'Follower Count': profile_data.get('follower_count', ''),
                'Bio': profile_data.get('summary', ''),
                'Headline': profile_data.get('headline', ''),
                'Country': profile_data.get('country_full_name', '')
            })

    print(f"Exported {len(attendees)} attendees to {csv_filename}")
</code></pre>
<h2 id="i-lied-i-did-more">I lied, I did more</h2>
<p>Yeah, it turns out that the <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#people-api-person-lookup-endpoint">Person Lookup Endpoint</a> returns data that has varying levels of freshness. I wanted <strong>fresh profile data</strong>. So I needed to make another pass on the attendee data via the <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#people-api-person-profile-endpoint">Person Profile Endpoint</a> with the <code>use_cache=if-recent</code> parameter to <a href="https://nubela.co/blog/how-fresh-are-profiles-returned-by-proxycurl-api/">fetch fresh profile data</a>.</p>
<p>Of course, this is completely optional and I really did this because it was cool. This was trivial given that I already have the Professional Social Network Profile URL. Given that this is optional, I will leave this as an exercise to the reader.</p>
<h2 id="enrichment-is-really-useful">Enrichment is really useful</h2>
<p>I whipped this up in 2-3H and I barely write code. And within a day, I have <strong>a list of 522 attendees</strong> to the Ahrefs Evolve 2024 conference I'm attending with <strong>detailed profile data</strong>.</p>
<p>If I can do this for an attendee list, just imagine what you can do for your business or your CRM.</p>
<p>Anyways have fun! If you're attending the event, hit up the marketing team at Proxycurl via <a href="mailto:marketing@nubela.co">marketing@nubela.co</a>, and we'll be happy to have a chat with you!</p>
 ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ Ultimate Guide To Professional Social Network Company API, With Full Python Code Samples ]]></title>
        <description><![CDATA[ In simple terms, the official Professional Social Network Company API is a set of programmatic interfaces that allow developers to access and retrieve data about companies listed on Professional Social Network. It&#39;s like having a direct line to Professional Social Network&#39;s vast database of corporat ]]></description>
        <link>https://nubela.co/blog/ultimate-guide-to-linkedin-company-api/</link>
        <guid isPermaLink="false">67109545b52061000188ad75</guid>
        <category><![CDATA[ proxycurl ]]></category>
        <dc:creator><![CDATA[ Zeha Irawan | Senior Marketing Dev ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/10/zz.jpeg"/>
        <pubDate>Fri, 18 Oct 2024 11:31:26 +0800</pubDate>
        <media:content url="" medium="image"/>
        <content:encoded><![CDATA[ <p>Ever felt like you're navigating a complex maze when working with the [Professional Social Network Company API](<a href="https://learn.microsoft.com/en-us/Professional?ref=nubela.co">https://learn.microsoft.com/en-us/Professional</a> Social Network/marketing/community-management/organizations/company-search)? Trust me, I've been there. As a battle-hardened developer, I've wrestled with API limitations, rate limits, and data restrictions more times than I can count. But guess what? Those frustrations led to some pretty cool discoveries I'm about to share with you.</p>
<p>Whether you're a developer building the next big thing in HR tech, a data scientist with an insatiable appetite for corporate data extraction, or a startup founder aiming to disrupt the B2B landscape, you've just stumbled upon your treasure map to the Professional Social Network data goldmine.</p>
<p>In this no-BS guide, we're going to:</p>
<ul>
<li>Demystify the Professional Social Network Company API (because who doesn't love a good mystery?)</li>
<li>Show you how to squeeze every last drop of value from this world's largest B2B platform</li>
<li>Introduce you to a game-changing alternative (<a href="https://nubela.co/proxycurl/company-api?ref=nubela.co">Proxycurl Company API</a>) that'll make you question everything you thought you knew about Professional Social Network data access (spoiler alert: it's good)</li>
</ul>
<p>But hey, why tell when we can show? Let's kick things off with a taste of what's possible. Imagine pulling comprehensive company data with just a few <a href="https://nubela.co/proxycurl/docs?shell&ref=nubela.co#company-api">lines of code</a>:</p>
<pre><code class="language-bash">curl \
    -G \
    -H "Authorization: Bearer demo-bearer-token" \
    'https://nubela.co/proxycurl/api/Professional Social Network/company' \
    --data-urlencode 'url=https://www.professionalsocialnetwork.com/company/google/' \
    --data-urlencode 'categories=include' \
    --data-urlencode 'funding_data=include' \
    --data-urlencode 'exit_data=include' \
    --data-urlencode 'acquisitions=include' \
    --data-urlencode 'extra=include' \
    --data-urlencode 'use_cache=if-present' \
    --data-urlencode 'fallback_to_cache=on-error'
</code></pre>
<p>Impressed? That's just the appetizer. This snippet showcases the power of a <a href="https://nubela.co/proxycurl/?ref=nubela.co">third-party Professional Social Network API</a> solution (in this case, our very own Proxycurl API). But don't worry. In this guide, we'll dive into both official and alternative solutions.</p>
<p>Whether you're dealing with API rate limits, wrestling with data restrictions, or simply looking for more efficient ways to access corporate insights, you’re in the right place. We'll explore both the <strong>official Professional Social Network Company API</strong> and <strong>3rd-party APIs like Proxycurl Company API</strong> and make you, the developer, the API hero your company deserves! Let’s get started!</p>
<h2 id="why-trust-our-expertise"><strong>Why trust our expertise?</strong></h2>
<p>When it comes to navigating the labyrinth of data about people and companies, you want a guide who's been in the trenches. That's us. At <a href="https://nubela.co/proxycurl/?ref=nubela.co">Proxycurl</a>, we've spent years wrangling with APIs, decoding data structures, and pushing the boundaries of what's possible with Professional Social Network data. We're talking about a platform that boasts [900+ million users and 58.4+ million companies](<a href="https://www.professionalsocialnetwork.com/pulse/important-Professional?ref=nubela.co">https://www.professionalsocialnetwork.com/pulse/important-Professional</a> Social Network-statistics-data-trends-oleksii-bondar-pqlie/) - that's the scale of data we're dealing with. Here's why you can trust us:</p>
<ul>
<li><strong>Battle-tested experience and continuous innovation:</strong> We didn't stop at understanding Professional Social Network's API. When we hit roadblocks, we innovated. <a href="https://nubela.co/proxycurl/team?ref=nubela.co">Our team</a> has developed cutting-edge solutions to extract, process, and analyze Professional Social Network data at scale. This drive for innovation led to the creation of our own Proxycurl API products, which now serves as a <a href="https://nubela.co/blog/top-alternatives-to-people-data-labs/">powerful alternative to Professional Social Network's official offerings</a>.</li>
<li><strong>Deep understanding of business needs:</strong> Our expertise isn't limited to the technical side. We've worked closely with businesses across various industries – from <a href="https://nubela.co/blog/growth-startups-get-leads-receive-funding-hire-talents-scale-fast/">nimble startups</a> to Fortune 500 giants. This has given us unique insights into how Professional Social Network company data can drive real business value, whether it's for lead generation, market analysis, or HR tech solutions.</li>
</ul>
<p>But don't just take my word for it. Here's a quick success story:</p>
<ul>
<li><strong>A game-changer in the HR tech domain:</strong> An HR tech startup struggled with Professional Social Network's API limitations for their AI-driven recruitment platform. After switching to [Proxycurl's API](<a href="https://nubela.co/proxycurl/Professional?ref=nubela.co">https://nubela.co/proxycurl/Professional</a> Social Network), they got:
<ul>
<li>Access to rich company profiles, including detailed information on company size, industry, and recent hires</li>
<li>40% increase in successful placements</li>
<li>60% reduction in data acquisition costs</li>
<li>Significantly more accurate candidate-company matches</li>
</ul>
</li>
</ul>
<p>By the way, our success stories aren't just impressive numbers on a spreadsheet - they're real-world game-changers, my friend! We're talking about businesses that were up against the wall with several limitations and came out swinging. From turbocharging HR tech to revolutionizing market intelligence, from supercharging B2B sales to... well, you get the picture. The possibilities are so vast, I'd need a novel to list them all (and, nobody wants that).</p>
<p>So, as we dive deeper into the world of Professional Social Network Company APIs, remember: you're not just getting information - you're tapping into years of hands-on experience and proven results. We've been in the trenches, fought the API battles with scars (success stories) to prove it, and we're here to guide you to victory.</p>
<h2 id="two-types-of-professional-social-network-company-apis"><strong>Two types of Professional Social Network Company APIs</strong></h2>
<p>Before we dive in, let's set the scene. In the realm of Professional Social Network Company APIs, there are two distinct territories:</p>
<ol>
<li><strong>The Official Professional Social Network Company API</strong>: The gated community, where only the chosen few (Professional Social Network Partners) get to play.</li>
<li><strong>3rd-party Professional Social Network Company APIs</strong>: The wild west, where alternative solutions like <a href="https://nubela.co/proxycurl?ref=nubela.co">Proxycurl</a> roam free for those locked out of the official party. Want to cut to the chase and skip to the good part? [Click here to jump to the Proxycurl's Professional Social Network Company API section](<a href="https://nubela.co/blog/ultimate-guide-to-Professional">https://nubela.co/blog/ultimate-guide-to-Professional</a> Social Network-company-api/#enter-proxycurl-a-game-changing-alternative-to-the-official-Professional Social Network-company-api).</li>
</ol>
<h2 id="the-official-professional-social-network-company-api"><strong>The official Professional Social Network Company API</strong></h2>
<p>Alright, fellow data enthusiasts, it's time to pull back the curtain on the official Professional Social Network Company API. Think of it as your backstage pass to the world's largest professional network. Let's break down what this API is all about, what it can do, and who can benefit from it. Buckle up!</p>
<h3 id="what-is-the-official-professional-social-network-company-api"><strong>What is the official Professional Social Network Company API?</strong></h3>
<p>In simple terms, the official Professional Social Network Company API is a set of programmatic interfaces that allow developers to <strong>access and retrieve data about companies listed on Professional Social Network</strong>. It's like having a direct line to Professional Social Network's vast database of corporate information, but with some rules and limitations (we'll get to those later, don't worry).</p>
<h3 id="five-key-features-of-the-professional-social-network-company-api">Five key features of the Professional Social Network Company API</h3>
<p>Now, what can you actually do with this API? Let's break it down:</p>
<ol>
<li><strong>Company profile retrieval:</strong></li>
</ol>
<ul>
<li>Basic company information (name, website, industry, etc.)</li>
<li>Company size and employee count</li>
<li>Headquarters location and other office locations</li>
<li>Founded year and company type</li>
</ul>
<ol start="2">
<li><strong>Follower statistics:</strong></li>
</ol>
<ul>
<li>Total follower count</li>
<li>Follower demographics (limited)</li>
</ul>
<ol start="3">
<li><strong>Updates and content:</strong></li>
</ol>
<ul>
<li>Recent company updates</li>
<li>Shared content statistics</li>
</ul>
<ol start="4">
<li><strong>Job postings:</strong></li>
</ol>
<ul>
<li>Current job openings (with limitations)</li>
</ul>
<ol start="5">
<li><strong>Insights (for select partners):</strong></li>
</ol>
<ul>
<li>Page analytics</li>
<li>Follower gains</li>
</ul>
<p>It's worth noting that while this list might seem extensive, the actual data you can access is often more limited than you might expect. Professional Social Network keeps a tight leash on its data, rightly so because the vast data on their platform is indeed extremely valuable, and which is why alternatives like Proxycurl have become so popular (but we're getting ahead of ourselves).</p>
<h3 id="who-can-benefit-and-how-six-quick-use-cases"><strong>Who can benefit and how? Six quick use cases</strong></h3>
<table>
<thead>
<tr>
<th>User Group</th>
<th>Use Cases</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Developers and software engineers</strong></td>
<td>- Building company research tools <br>- Integrating Professional Social Network data into existing applications <br>- Creating custom dashboards for business intelligence</td>
</tr>
<tr>
<td><strong>Data scientists</strong></td>
<td>- Analyzing company growth trends <br>- Performing industry-wide comparisons <br>- Building predictive models for business performance</td>
</tr>
<tr>
<td><strong>HR and recruitment professionals</strong></td>
<td>- Enhancing applicant tracking systems with company data <br>- Researching potential employers for candidates <br>- <a href="https://nubela.co/blog/the-proxycurl-success-story-hiring-a-marketing-manager-through-automated-recruitment-and-executive-search/">Identifying companies with recent growth for targeted recruiting</a></td>
</tr>
<tr>
<td><strong>Sales and marketing teams</strong></td>
<td>- <a href="https://nubela.co/blog/crm-data-enrichment-the-easiest-way-to-increase-your-sales-conversion-rates/">Enriching CRM data with up-to-date company information</a> <br>- Identifying potential leads based on company characteristics <br>- Creating targeted marketing campaigns based on company insights</td>
</tr>
<tr>
<td><strong>Business strategists and consultants</strong></td>
<td>- Conducting competitive analysis <br>- Identifying potential partners or acquisition targets <br>- <a href="https://nubela.co/proxycurl/solutions/alternative-data-for-investment-firms?ref=nubela.co">Tracking industry trends and company movements</a></td>
</tr>
<tr>
<td><strong>Entrepreneurs and startup founders</strong></td>
<td>- Researching potential competitors or partners <br>- Understanding industry landscapes <br>- <a href="https://nubela.co/blog/growth-startups-get-leads-receive-funding-hire-talents-scale-fast/">Identifying gaps in the market based on company data</a></td>
</tr>
</tbody>
</table>
<p>For a real-world example, let's say you're a developer, and your company is building a B2B sales intelligence platform. With the Professional Social Network Company API, you could:</p>
<ol>
<li>Pull basic company profiles for your leads</li>
<li>Track follower growth as a proxy for company popularity or market position</li>
<li>Monitor job postings to identify companies in growth phases</li>
<li>Analyze recent updates to gauge company activity and focus areas</li>
</ol>
<p>Sounds great, right? But here's where it gets tricky. While the Professional Social Network Company API offers these capabilities in theory, accessing and using this data comes with its own set of challenges. Rate limits, data restrictions, and stringent application processes can turn your data dreams into an API nightmare faster than you can say "HTTP 429 Too Many Requests."</p>
<p>But don't worry! We'll dive into how to actually get your hands on this data, the nitty-gritty of making API calls, and yes, we'll tackle those pesky limitations head-on. And if you find yourself thinking, "There's got to be a better way," well... stay tuned. We might just have a solution that'll make you forget all about those API blues.</p>
<h3 id="four-things-to-know-before-getting-access-to-the-official-professional-social-network-company-api">Four things to know before getting access to the official Professional Social Network Company API</h3>
<p>Alright, let's talk more about the elephant in the room - actually getting access to the official Professional Social Network API. It's like the coolest club in town, but getting past the bouncer? That's where things get very tricky:</p>
<ol>
<li><strong>Access Restrictions</strong>: This isn't your average "open to all" API. Nope, it's exclusive to Professional Social Network Partners. Think of it as the API world's VIP lounge.</li>
<li><strong>Approval Process</strong>: Remember that time you waited in line for hours to get into the hottest club? Yeah, trust me, this makes that look like a cakewalk. We're talking <em><strong>weeks</strong></em> of administrative hurdles and scrutiny.</li>
<li><strong>Competitive Clause</strong>: Here's the kicker - Professional Social Network won't let you in if you're building something that could steal their thunder. Competing with Professional Social Network products? Sorry, you're not on the list.</li>
<li><strong>Pricing and Cost Consideration</strong>: Professional Social Network keeps its pricing cards close to the chest. Brace yourself, there are whispers of five-figure monthly fees for the privilege of API access. That's right; we're potentially talking about tens of thousands per month. But anyway, expect to negotiate based on your usage and needs. And remember those whispers of five-figure monthly fees? Yeah, that's the ballpark we're playing in.</li>
</ol>
<p>So, you still want in?</p>
<h2 id="1-first-apply-to-become-a-professional-social-network-partner">1. First, apply to become a Professional Social Network Partner</h2>
<p>Alright, you brave soul, here are the <strong>3 steps</strong> on how to get that coveted Professional Social Network Partner status to get access to the Professional Social Network Company API:</p>
<h3 id="step-1-determining-your-category"><strong>Step 1: Determining your category</strong></h3>
<ul>
<li><strong>Talent Solutions</strong>: For the HR tech wizards out there that integrate with Professional Social Network’s hiring and talent acquisition tools.</li>
<li><strong>Marketing Solutions</strong>: Marketing automation gurus, this one's for you. I mean marketing automation platforms or tools that integrate Professional Social Network Ads or company page analytics.</li>
<li><strong>Sales Navigator Application Development</strong>: Sales tech innovators, step right up. Companies building on top of Professional Social Network’s sales and business development tools (Sales Navigator).</li>
<li><strong>Professional Social Network Learning Integration</strong>: E-learning enthusiasts and professional development platforms that might integrate with Professional Social Network Learning, come on down!</li>
</ul>
<h3 id="step-2-preparing-your-application"><strong>Step 2: Preparing your application</strong></h3>
<p>Time to put on your best suit and practice your elevator pitch:</p>
<ul>
<li>Be crystal clear about how you'll use Professional Social Network's data. Vague ideas won't cut it here.</li>
<li>Show how you're adding to Professional Social Network's ecosystem, not trying to outshine it.</li>
<li>Prepare to dazzle them with the value you'll bring to the Professional Social Network universe.</li>
</ul>
<h3 id="step-3-submitting-your-application"><strong>Step 3: Submitting your application</strong></h3>
<p>Now, it’s time to head over to the <a href="https://developer.professionalsocialnetwork.com/content/developer/global/en_us/index/partner-programs/apply?ref=nubela.co">Professional Social Network Partner Program page</a> and lay it all out:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfedQmEflSQMuMwKVWJEnizQfY5m3Np6LFyVGskKzsUmjbK-rO3fsbQHIGvlP1dPvv6J5AJGgOS9A0q6FoJlsGUkS56OQlYj7pXwTwrh9ImlJeSmAMXAuIV-zvBbHFx9sp40iaPvTV9QSUcLQVJLS7SkIY?key=QQzZAUQMmKDScJ2e-aBDOA" class="kg-image" alt="Professional Social Network’s Partner Program page showing the partner categories for a new application" loading="lazy" width="1327" height="931"><figcaption><span style="white-space: pre-wrap;">Professional Social Network’s Partner Program page showing the partner categories for a new application</span></figcaption></figure><ul>
<li>Choose your category (remember [Step 1](<a href="https://nubela.co/blog/ultimate-guide-to-Professional">https://nubela.co/blog/ultimate-guide-to-Professional</a> Social Network-company-api/#step-1-determining-your-category)?)</li>
<li>Spill the beans about you, your company and your products</li>
<li>Fill out the application form in detail (remember to paint a vivid picture of your partnership use case)</li>
</ul>
<p>Now, the waiting game begins. And by game, I mean weeks of nail-biting anticipation. Stay on your toes - Professional Social Network might come back asking for more info.</p>
<p>But wait, there's more…</p>
<h2 id="2-while-waiting-get-access-to-the-lite-version"><strong>2. While waiting, get access to the "Lite" version</strong></h2>
<p>While you're twiddling your thumbs waiting weeks (or months) for that coveted Professional Social Network Partner status, there's a "lite" version you can start exploring. Spoiler alert: it's basic and still also requires approval, but it might just scratch that API itch in the meantime.</p>
<p>Here are it's <strong>5 steps</strong>:</p>
<h3 id="step-1-creating-a-professional-social-network-developer-account"><strong>Step 1: Creating a Professional Social Network Developer account</strong></h3>
<ul>
<li>Mosey on over to <a href="https://developer.professionalsocialnetwork.com/?ref=nubela.co">https://developer.professionalsocialnetwork.com/</a></li>
<li>Sign in or whip up a new account</li>
</ul>
<h3 id="step-2-creating-your-professional-social-network-application"><strong>Step 2: Creating your Professional Social Network application</strong></h3>
<ul>
<li>After signing in, on the page, click "Create app":</li>
</ul>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdU9Y7N_3QXgbyduqK2CcO2PAvls_uWuakYdb04folT1CLGUlyH7_Hio7_IO1WprfSh7lAzlHBBnMTbKMQuQjnibV6LIxWZmV0NxmAxodkxxCeX6FQ6vVBclm-wg2I4tQPueGODIM7XfGxF1c94gmrv36Mt?key=QQzZAUQMmKDScJ2e-aBDOA" class="kg-image" alt="Professional Social Network’s Developer Account portal showing the “Create app” button" loading="lazy" width="1600" height="763"><figcaption><span style="white-space: pre-wrap;">Start creating your app here</span></figcaption></figure><ul>
<li>Fill in the blanks about your app (make it good!)</li>
</ul>
<p><strong>Pro Tip:</strong> Be specific about your use case. Professional Social Network likes to know exactly how you'll be using their data. It's like telling your partner why you have been out for 5 nights in a row - the more details, the better!</p>
<h3 id="step-3-verifying-your-app"><strong>Step 3: Verifying your app</strong></h3>
<ul>
<li>After submitting your use case, you need to verify that the app is truly associated with the selected company (your company)</li>
<li>Navigate to the "Settings" tab and click on the "Verify" button</li>
</ul>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXerpv81UV5OMh9mV-V-W_v3YMK4lSCMh7ohik7aWHOBhS2rDzWFX1szJsV8HbJrkQvwAfK4CyHrpN-1htEAvS8O50x9vudDPtNbEf2HTuzcVH3IpQ__5FIkWD6ujbO8DIqoPVr1brg3VsQAHOJXOcSOcDLA?key=QQzZAUQMmKDScJ2e-aBDOA" class="kg-image" alt="Professional Social Network Developers portal on the Settings tab highlighting the “verify” button" loading="lazy" width="965" height="615"><figcaption><span style="white-space: pre-wrap;">Verifying your app</span></figcaption></figure><ul>
<li>Follow the instructions that come afterward. It's like proving you're really you but for your app!</li>
</ul>
<h3 id="step-4-requesting-api-access"><strong>Step 4: Requesting API access</strong></h3>
<ul>
<li>After the verification, you can now proceed with requesting API access</li>
<li>Navigate to the "Products" tab</li>
<li>Read through the API Terms of Use (yes, actually read it - we know, it's boring, but important!)</li>
<li>Finally, select the "Request access" button.</li>
</ul>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcDOv11iVgsM8Hqr8kpge1xPHayTQ64d7A4wCTmNgT5eZtTOdEJDy6cPKtli90XQDBgC89fjBXzkpEsA1PCRf1RA9RdUZz7L-RPNkVxI13nzANpv29031mZiJltPYH_TNa6XWYYcosaPm1DUoaTFwRiK19Z?key=QQzZAUQMmKDScJ2e-aBDOA" class="kg-image" alt="Professional Social Network’s Developers page showing a modal window for requesting Professional Social Network’s API access" loading="lazy" width="1224" height="801"><figcaption><span style="white-space: pre-wrap;">Here you can request to get access to the API</span></figcaption></figure><ul>
<li>Fingers crossed!</li>
</ul>
<h3 id="step-5-getting-your-api-credentials"><strong>Step 5: Getting your API credentials</strong></h3>
<ul>
<li>Once approved, in the dashboard, you'll get your Client ID and Client Secret:</li>
</ul>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXft2kKKt3RlAo-WFR6C8ruUnJGRnqy34vToJ6E1RRIdBNyUK8t4MeqEwnLPlrwYerTk8r0jbq3UcVD6EcjI251pgQu463Uszwi_1iWEg6kX725s491HlwxPRbLbrTAeiSmKuncLKunw_psMj-Bj9Tmnqg_6?key=QQzZAUQMmKDScJ2e-aBDOA" class="kg-image" alt="Professional Social Network Developers portal on the 'Auth' tab displaying application credentials containing the client ID and primary client secret." loading="lazy" width="1047" height="584"><figcaption><span style="white-space: pre-wrap;">Finally, you gotten access to the keys</span></figcaption></figure><ul>
<li>Guard these with everything you’ve got (or at least don't post them on GitHub). You’ll use them in your code (which we shall discuss next) to get the access token.</li>
</ul>
<p>Remember, my friend, while this guide is comprehensive, the official Professional Social Network API world is as changeable as a chameleon on a disco floor. Always double-check the [official Professional Social Network docs](<a href="https://learn.microsoft.com/en-us/Professional?ref=nubela.co">https://learn.microsoft.com/en-us/Professional</a> Social Network/) for the latest info. It's like checking the weather before a picnic - better safe than sorry!</p>
<h2 id="3-finally-approved-start-using-the-official-professional-social-network-company-api-with-python">3. Finally approved, start using the official Professional Social Network Company API with Python!</h2>
<p>Congratulations! If you're reading this, you've somehow managed to scale the fortress walls of accessing a Professional Social Network's developer account. You've survived the scrutiny of use-case evaluation and emerged victorious with your basic API access in hand. Now, it's time to claim your prize and dive into the data that awaits. <strong>Let’s turn that hard-earned access into pure data gold!</strong></p>
<h3 id="the-technical-landscape"><strong>The technical landscape</strong></h3>
<p>Before we dive into the code, let's get our hands dirty with some technical details. After all, knowing is half the battle!</p>
<ol>
<li>[<strong>Company Search API</strong>](<a href="https://learn.microsoft.com/en-us/Professional?ref=nubela.co">https://learn.microsoft.com/en-us/Professional</a> Social Network/marketing/community-management/organizations/company-search?view=li-lms-2024-09&amp;tabs=http): This is your go-to for finding companies using keywords, industry, location, and other criteria. Think of it as Professional Social Network's corporate search engine on steroids:
<ul>
<li>Returns a collection of matching companies</li>
<li>Each entry can contain an entity field represented by an organization URN (Uniform Resource Name)</li>
<li>Supports filters similar to Professional Social Network's Search results page</li>
</ul>
</li>
<li><a href="https://oauth.net/2/?ref=nubela.co"><strong>OAuth 2.0 authentication</strong></a>: Professional Social Network's bouncer at the door. Before you can party with the data, you need to get past this guy:
<ul>
<li>Required for member (user) authorization and API authentication</li>
<li>Essential for fetching data or accessing member information</li>
<li>Most permissions require explicit approval from Professional Social Network</li>
</ul>
</li>
<li>[<strong>Permissions and partner programs</strong>](<a href="https://learn.microsoft.com/en-us/Professional?ref=nubela.co">https://learn.microsoft.com/en-us/Professional</a> Social Network/shared/authentication/getting-access#open-permissions-consumer):
<ul>
<li>Open Permissions: The public library of Professional Social Network APIs - available to all developers without special approval</li>
<li>Restricted Permissions: The special collections - require Professional Social Network's explicit nod</li>
</ul>
</li>
</ol>
<p>Now that we've got the lay of the land, let's roll up our sleeves and dive into the code!</p>
<h3 id="step-1-getting-your-access-token-function"><strong>Step 1: Getting your access token function</strong></h3>
<p>In the API world, access tokens are like VIP passes to an exclusive club. Professional Social Network’s Company API uses the [Client Credential Flow](<a href="https://learn.microsoft.com/en-us/Professional?ref=nubela.co">https://learn.microsoft.com/en-us/Professional</a> Social Network/shared/authentication/client-credentials-flow?context=Professional Social Network%2Fcontext&amp;tabs=cURL1) (2-legged OAuth) to grant this backstage pass (access token). Remember our Client ID and Secret we saved earlier? It’s time to trade them for an access token:</p>
<pre><code class="language-python">import requests

# Your Professional Social Network App's Client ID and Client Secret
Professional Social Network_CLIENT_ID = 'your_client_id'
Professional Social Network_CLIENT_SECRET = 'your_client_secret'

def get_access_token():
    """
    Exchanges Professional Social Network app's client credentials for an access token.
    """
    token_url = 'https://www.professionalsocialnetwork.com/oauth/v2/accessToken'
    
    params = {
        'grant_type': 'client_credentials',
        'client_id': Professional Social Network_CLIENT_ID,
        'client_secret': Professional Social Network_CLIENT_SECRET,
    }
    
    headers = {
        'Content-Type': 'application/x-www-form-urlencoded'
    }
    
    response = requests.post(token_url, headers=headers, data=params)
    
    if response.status_code == 200:
        access_token = response.json().get('access_token')
        if access_token:
            print(f"Access Token acquired: {access_token}")
            return access_token
        else:
            print("Access token not found in the response.")
            return None
    else:
        print(f"Error {response.status_code}: {response.text}")
        return None

# Get the access token
access_token = get_access_token()
</code></pre>
<p><strong>Pro Tip:</strong> In my experience, it's crucial to treat your access token like your secret recipe for success. Store it securely and reuse it until it expires (typically after 30 minutes). After that, simply request a new one. Remember, sharing is caring, but not when it comes to access tokens!</p>
<h3 id="step-2-making-your-api-call-function"><strong>Step 2: Making your API call function</strong></h3>
<p>Now that we have our VIP pass (access token), let's fetch some company data! We'll use the Company Search API and its keyword search feature to find some cool companies:</p>
<pre><code class="language-python">def search_companies(access_token, search_query='Professional Social Network Corporation', filters=None):
    """
    Search for companies on Professional Social Network using the provided access token, query, and optional filters.
    """
    base_url = 'https://api.professionalsocialnetwork.com/v2/companySearch'
    params = {
        'q': 'search',
        'query': search_query,
        'projection': '(elements*(entity~(id,name,localizedName,vanityName,logoV2,locations)),paging)'
    }
    
    # Add filters if provided
    if filters:
        for key, value in filters.items():
            if isinstance(value, list):
                for i, v in enumerate(value):
                    params[f'filter.{key}[{i}]'] = v
            else:
                params[f'filter.{key}'] = value
    
    headers = {
        'Authorization': f'Bearer {access_token}',
        'X-Restli-Protocol-Version': '2.0.0'
    }
    
    url = f"{base_url}?{urlencode(params)}"
    response = requests.get(url, headers=headers)
    
    if response.status_code == 200:
        print("Data successfully retrieved!")
        return response.json()
    else:
        print(f"Error {response.status_code}: {response.text}")
        return None
</code></pre>
<p>This <code>search_companies</code> function will allow us to zoom in on the corporate landscape. Here's what makes it tick:</p>
<ul>
<li><strong>Query power</strong>: The <code>search_query</code> parameter defines the search term. It's like whispering a company name or industry keyword into the API's ear.</li>
<li><strong>Filter finesse</strong>: The <code>filters</code> parameter lets us refine our search. Want only tech giants? Or perhaps cozy startups? These filters are our corporate matchmakers.</li>
<li><strong>Data projection</strong>: We're asking for specific company details like <em>name</em>, <em>vanity name</em>, <em>logo</em>, and <em>locations</em>. It's like customizing our corporate baseball cards.</li>
<li><strong>Error handling</strong>: We've built in some safeguards. If something goes wrong, the function will let us know, rather than leaving us in the dark.</li>
<li><strong>Flexibility</strong>: We can easily modify the search query or filters to suit our various needs.</li>
</ul>
<h3 id="step-3-putting-it-all-together"><strong>Step 3: Putting it all together</strong></h3>
<p>Now that we have our access token function and our API call function, let's combine them into a main function that will orchestrate our Professional Social Network company search:</p>
<pre><code class="language-python">def search_companies(access_token, search_query='Professional Social Network Corporation', filters=None):
    """
    Search for companies on Professional Social Network using the provided access token, query, and optional filters.
    """
    base_url = 'https://api.professionalsocialnetwork.com/v2/companySearch'
    params = {
        'q': 'search',
        'query': search_query,
        'projection': '(elements*(entity~(id,name,localizedName,vanityName,logoV2,locations)),paging)'
    }
    
    # Add filters if provided
    if filters:
        for key, value in filters.items():
            if isinstance(value, list):
                for i, v in enumerate(value):
                    params[f'filter.{key}[{i}]'] = v
            else:
                params[f'filter.{key}'] = value
    
    headers = {
        'Authorization': f'Bearer {access_token}',
        'X-Restli-Protocol-Version': '2.0.0'
    }
    
    url = f"{base_url}?{urlencode(params)}"
    response = requests.get(url, headers=headers)
    
    if response.status_code == 200:
        print("Data successfully retrieved!")
        return response.json()
    else:
        print(f"Error {response.status_code}: {response.text}")
        return None
</code></pre>
<p>Here, we use the <code>query</code> parameter to search for companies by keyword. In this case, we're searching for "Professional Social Network Corporation", but feel free to replace it with any company name or industry keyword that piques your interest. Remember, you can adjust your search query, [add or remove filters](<a href="https://learn.microsoft.com/en-us/Professional?ref=nubela.co">https://learn.microsoft.com/en-us/Professional</a> Social Network/marketing/community-management/organizations/company-search?view=li-lms-unversioned&amp;tabs=curl#search-by-filters), and experiment with different [parameters](<a href="https://learn.microsoft.com/en-us/Professional?ref=nubela.co">https://learn.microsoft.com/en-us/Professional</a> Social Network/marketing/community-management/organizations/company-search?view=li-lms-unversioned&amp;tabs=curl#parameters) to refine your results. Don't be afraid to tweak the code and see what kind of company data you can uncover.</p>
<p>Remember, when using this API:</p>
<ul>
<li>All input is case-insensitive</li>
<li>Wildcards and Boolean logic are not supported</li>
<li>You should search for only a single company at a time (be aware of [Professional Social Network's API usage limits](<a href="https://learn.microsoft.com/en-us/Professional?ref=nubela.co">https://learn.microsoft.com/en-us/Professional</a> Social Network/shared/api-guide/concepts/rate-limits) and respect them in your code)</li>
</ul>
<p>For the [output](<a href="https://learn.microsoft.com/en-us/Professional?ref=nubela.co">https://learn.microsoft.com/en-us/Professional</a> Social Network/marketing/community-management/organizations/company-search?view=li-lms-unversioned&amp;tabs=curl#search-response), the actual fields returned may vary based on the company and the level of access your application has. Some fields might be missing or have different values. It's like a box of chocolates - you never know exactly what you're gonna get!</p>
<p>And there you have it! You've just made your first call to the Professional Social Network Company API. Feel that rush? That's the power of data at your fingertips!</p>
<p>But wait, there's a plot twist...</p>
<h2 id="limitations-of-this-professional-social-network-company-api"><strong>Limitations of this Professional Social Network Company API</strong></h2>
<p>If you’re using this official Professional Social Network Company API and it's working flawlessly, congratulations! You're one of the chosen few. But for many of us mere mortals, we might hit a few roadblocks. Don't worry, what you're facing is common, and Professional Social Network is notorious with the limitations they placed.</p>
<h3 id="limitation-1-rate-limits"><strong>Limitation #1: Rate limits</strong></h3>
<ol>
<li><strong>Daily limits:</strong>
<ul>
<li>Professional Social Network typically caps API calls at around 100,000 per day.</li>
<li>Sounds like a lot? Not when you're dealing with big data or building a scalable application.</li>
</ul>
</li>
<li><strong>Endpoint-specific limits:</strong>
<ul>
<li>Some endpoints are more restricted than others.</li>
<li>For example, company lookups might be limited to a mere 100 calls per day per company.</li>
</ul>
</li>
<li><strong>Unpredictable throttling:</strong>
<ul>
<li>Professional Social Network may decide to throttle your requests if they think you're being too eager.</li>
<li>It's like playing data roulette – you never know when you'll hit the "too many requests" jackpot.</li>
</ul>
</li>
</ol>
<p>Imagine you're building a sales intelligence tool. You want to enrich your CRM with fresh Professional Social Network corporate data daily. With these rate limits, you might be able to update a few hundred records a day. At that rate, by the time you finish updating your database, the first entries are already outdated!</p>
<h3 id="limitation-2-data-restriction"><strong>Limitation #2: Data restriction</strong></h3>
<ol>
<li><strong>Limited company information:</strong>
<ul>
<li>Basic company profiles? Sure.</li>
<li>Detailed employee information or comprehensive company updates? Not so fast.</li>
</ul>
</li>
<li><strong>Historical data constraints:</strong>
<ul>
<li>Want to analyze a company's growth over the past year? Good luck to you and yours.</li>
<li>Professional Social Network often restricts access to historical data, leaving you with a snapshot rather than a movie.</li>
<li>But here's some good news: We recently launched a historical data feature at Proxycurl. <a href="https://nubela.co/blog/historical-employee-growth-with-employee-count-endpoint/">Check out our article on historical employee growth</a> to see how you can get that movie after all!</li>
</ul>
</li>
<li><strong>Follower insights:</strong>
<ul>
<li>You can see follower counts, but detailed follower demographics? That's behind a velvet rope.</li>
</ul>
</li>
</ol>
<p>Let's say you're a market researcher trying to understand industry trends. You want to analyze how companies in a specific sector have evolved over the past five years. With these data restrictions, you're left with gaps in your analysis that could skew your entire report.</p>
<h3 id="limitation-3-when-professional-social-network-says-no"><strong>Limitation #3: When Professional Social Network says "No"</strong></h3>
<p>Picture this: You've got a brilliant idea for an app that will revolutionize how people find jobs. You're pumped, you're coding away, and then... Professional Social Network's terms of service [bring your dreams crashing down](<a href="https://nubela.co/blog/is-Professional">https://nubela.co/blog/is-Professional</a> Social Network-scraping-legal/#the-case-that-cemented-the-arguments-around-web-scrapinghiq-v-Professional Social Network).</p>
<ol>
<li><strong>Competitive features:</strong>
<ul>
<li>If your application competes with Professional Social Network's core offerings, you might be shown the door.</li>
<li>Building a recruiting platform? Professional Social Network might view you as a competition and restrict your API access.</li>
</ul>
</li>
<li><strong>Data usage restrictions:</strong>
<ul>
<li>Professional Social Network is very particular about how you can use their data.</li>
<li>Want to combine Professional Social Network data with other sources for a comprehensive business intelligence tool? You might be walking on thin ice.</li>
</ul>
</li>
<li><strong>Display guidelines:</strong>
<ul>
<li>There are strict rules about how you can display Professional Social Network data in your application.</li>
<li>It's like being told exactly how to arrange furniture in a house you thought you owned.</li>
</ul>
</li>
</ol>
<p>Imagine you've built an AI-powered career advisory tool that uses Professional Social Network’s corporate data to suggest optimal career paths. You're ready to launch, but Professional Social Network decides your app is too similar to their own career insight features. Suddenly, your API access is revoked, and months of work go down the drain.</p>
<p>Wait a minute. Don't get me wrong - the official Professional Social Network Company API is powerful. But it's like a temperamental sports car: high-performance but high-maintenance, too.</p>
<p>The plot thickens...</p>
<p>Now, imagine accessing comprehensive Professional Social Network company data without rate limits breathing down your neck or extensive approval processes. Picture pulling historical data that lets you analyze trends over time. Envision building that revolutionary app without fear of suddenly losing API access. Sounds too good to be true, right?</p>
<h2 id="enter-proxycurl-a-game-changing-alternative-to-the-official-professional-social-network-company-api"><strong>Enter Proxycurl: a game-changing alternative to the official Professional Social Network Company API</strong></h2>
<p>Alright, folks, it's time to introduce you to the superhero of our entire story. Remember all those official Professional Social Network Company API headaches we just talked about? Well, imagine if there was a magic wand that could make them disappear faster than you can say "rate limit."</p>
<p>Ladies and gentlemen, I welcome you to <a href="https://nubela.co/proxycurl/company-api?ref=nubela.co">Proxycurl</a> – your new best friend in the world of Professional Social Network data.</p>
<h3 id="why-proxycurl-company-api-four-key-features-and-advantages"><strong>Why Proxycurl Company API? Four key features and advantages</strong></h3>
<p>Let's break down why Proxycurl is the Robin Hood of Professional Social Network data, democratizing access for developers and associated companies everywhere:</p>
<ol>
<li><strong>Generous rate limits:</strong>
<ul>
<li>Say goodbye to those pesky <em>"Too Many Requests"</em> errors</li>
<li>Proxycurl offers <a href="https://nubela.co/proxycurl/pricing?ref=nubela.co">plans with credits</a> with up to millions of API calls per month</li>
<li>It's like going from a garden hose to a fire hydrant of data</li>
</ul>
</li>
<li><strong>Comprehensive data access:</strong>
<ul>
<li><a href="https://nubela.co/proxycurl/docs?ref=nubela.co#company-api">Full company profiles</a>, including employee counts, funding info, and more</li>
<li><a href="https://nubela.co/blog/historical-employee-growth-with-employee-count-endpoint/">Historical data</a> that lets you analyze trends over time</li>
<li>It's not just a snapshot; it's the whole movie of a company's Professional Social Network presence</li>
</ul>
</li>
<li><strong>Flexible use cases:</strong>
<ul>
<li>Build that revolutionary app without fear of suddenly losing access</li>
<li>Combine Professional Social Network data with other sources for powerful business intelligence</li>
<li>Your imagination is the limit, not some restrictive terms of service</li>
</ul>
</li>
<li><strong>Simple integration:</strong>
<ul>
<li><a href="https://blog.postman.com/rest-api-examples/?ref=nubela.co">RESTful API</a> that plays nice with most programming languages</li>
<li><a href="https://nubela.co/proxycurl/docs?ref=nubela.co">Clear documentation</a> that doesn't require a PhD to understand</li>
<li>It's so easy, you'll wonder why you ever wrestled with Professional Social Network's API</li>
</ul>
</li>
</ol>
<p>But don't just take my word for it. Let's see the Proxycurl Company API in action!</p>
<h2 id="seamless-transition-from-the-official-professional-social-network-company-api-to-proxycurl-company-api"><strong>Seamless transition from the official Professional Social Network Company API to Proxycurl Company API</strong></h2>
<p>Remember that company search through the official Professional Social Network Company API we wrestled with earlier? Well, prepare to have your mind blown. Here's how easy it is with [Proxycurl Company API](<a href="https://nubela.co/proxycurl/Professional?ref=nubela.co">https://nubela.co/proxycurl/Professional</a> Social Network/company):</p>
<pre><code class="language-python">import requests

def fetch_company_data(api_key, company_url, use_cache='if-present', fallback_to_cache='on-error'):
    """
    Fetch company data using Proxycurl API with cache control
    """
    api_endpoint = 'https://nubela.co/proxycurl/api/Professional Social Network/company'
    headers = {'Authorization': f'Bearer {api_key}'}
    params = {
        'url': company_url,
        'categories': 'include',
        'funding_data': 'include',
        'exit_data': 'include',
        'acquisitions': 'include',
        'extra': 'include',
        'use_cache': use_cache,
        'fallback_to_cache': fallback_to_cache
    }

    response = requests.get(api_endpoint, params=params, headers=headers, timeout=10)
    
    if response.status_code == 200:
        return response.json()
    else:
        print(f"Oops! Something went wrong. Status code: {response.status_code}")
        return None

# Example usage
if __name__ == "__main__":
    api_key = 'YOUR_API_KEY'
    company_url = 'https://www.professionalsocialnetwork.com/company/google/'
    
    # Fetch data with default cache settings
    company_data = fetch_company_data(api_key, company_url)
    
    # Or, fetch only recent data
    # company_data = fetch_company_data(api_key, company_url, use_cache='if-recent')
    
    # Or, never fallback to cache
    # company_data = fetch_company_data(api_key, company_url, fallback_to_cache='never')
    
    if company_data:
        print(f"Company Name: {company_data.get('name', 'N/A')}")
        print(f"Industry: {company_data.get('industry', 'N/A')}")
        print(f"Company Size: {company_data.get('company_size', 'N/A')}")
        print(f"Follower Count: {company_data.get('follower_count', 'N/A')}")
        print("And lots more corporate secrets!")
</code></pre>
<p>Look at that! Clean, simple, and powerful. Here's what makes our function shine:</p>
<ul>
<li><strong>API key magic</strong>: Your API key is the magic wand that grants you access to Proxycurl's treasure trove of data.</li>
<li><strong>Flexible fetching</strong>: By tweaking the <code>params</code> dictionary, we can adjust what kind of corporate intel we're after. Want funding data? Acquisitions? It's all at your fingertips!</li>
<li><strong>Error handling</strong>: If something goes awry in our data-summoning ritual, the function will let us know. No silent failures here!</li>
</ul>
<p>Thought we were done? Nah…</p>
<h3 id="cache-control"><strong>Cache-control</strong></h3>
<p>With the <em><code>use_cache</code></em> parameter, you're now the master of time (well, data freshness, at least):</p>
<ul>
<li><em><code>if-present</code></em> (default): "Give me what you've got, old or new!"</li>
<li><em><code>if-recent</code></em>: "I want the fresh stuff, no older than 29 days please!"</li>
</ul>
<h3 id="fallback-strategy"><strong>Fallback strategy</strong></h3>
<p>The <code>fallback_to_cache</code> parameter lets you decide what to do if fetching fresh data hits a snag:</p>
<ul>
<li><em><code>on-error</code></em> (default): "If something goes wrong, let's see what's in the cache."</li>
<li><em><code>never</code></em>: "I'd rather have no data than old data!"</li>
</ul>
<p>By the way, we're just scratching the surface in this example – there's so much more to explore! But before you start coding away, let's take a step back and dive into some important details about Proxycurl API.</p>
<h2 id="getting-started-with-proxycurl-api-7-things-to-note"><strong>Getting started with Proxycurl API: 7 things to note</strong></h2>
<p>I know you’re ready to dive into the world of Proxycurl API and unleash the full potential of Professional Social Network data, but before you jump in, let's cover some essential points to ensure you hit the ground running.</p>
<ol>
<li><strong>Sign Up and get your API key:</strong></li>
</ol>
<ul>
<li>Head over to <a href="https://nubela.co/proxycurl/auth/register?ref=nubela.co">Proxycurl's registration page</a>.</li>
<li>Fill in your details and create an account.</li>
<li>Once logged in, navigate to the API section in your dashboard.</li>
<li>There, you'll find your randomly generated secret key. Guard this with everything you’ve got!</li>
</ul>
<ol start="2">
<li><strong>Authentication:</strong></li>
</ol>
<ul>
<li>Proxycurl API uses bearer tokens for <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#proxycurl-overview-authentication">authentication</a>.</li>
<li>Simply include your API key in the <em><code>Authorization</code></em> header, as we did in the code above.</li>
</ul>
<ol start="3">
<li><strong>Rate limits:</strong> Hold onto your hats because this is where things get exciting:</li>
</ol>
<ul>
<li>
<p>Up to 300 requests per minute</p>
</li>
<li>
<p>Burst up to 1500 requests every 5 minutes</p>
<p><strong>Pro Tip:</strong> Handle 429 errors (<a href="https://nubela.co/proxycurl/docs?ref=nubela.co#proxycurl-overview-rate-limit">rate limit</a>) with exponential backoff. It's like doing a polite knock on the API's door instead of banging on it repeatedly.</p>
</li>
</ul>
<ol start="4">
<li><strong>Credits:</strong></li>
</ol>
<ul>
<li>Each <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#proxycurl-overview-credits">successful request</a> (even a 404) consumes at least 1 credit.</li>
<li>No charge for errors (except 404s, which aren't really errors).</li>
</ul>
<ol start="5">
<li><strong>API Response Time:</strong></li>
</ol>
<ul>
<li>
<p>The average <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#proxycurl-overview-timeouts-and-api-response-time">response time</a> is about 2 seconds. Faster than you can say "professional networking"!</p>
<p><strong>Pro Tip:</strong> Make <a href="https://nubela.co/blog/how-to-maximize-throughput-on-proxycurl/">concurrent requests</a> to maximize throughput. It's like opening multiple checkout lines at a supermarket.</p>
</li>
</ul>
<ol start="6">
<li><strong>Errors:</strong></li>
</ol>
<ul>
<li>Proxycurl API provides clear <a href="https://nubela.co/proxycurl/docs?python&ref=nubela.co#proxycurl-overview-errors">error codes and messages</a>. No more cryptic errors that make you question your entire career choice!</li>
</ul>
<ol start="7">
<li><strong>Backward compatibility:</strong></li>
</ol>
<ul>
<li>We promise not to pull the rug out from under you. We won't remove or change existing functionality without giving you a heads-up. Take that as <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#proxycurl-overview-backward-compatibility-guarantee">a promise</a> from us to you and yours!</li>
</ul>
<h2 id="proxycurl-company-api-6-powerful-endpoints-to-supercharge-your-data-game"><strong>Proxycurl Company API: 6 powerful endpoints to supercharge your data game</strong></h2>
<p>Ladies and gentlemen, we've seen a basic code snippet of what the <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#company-api">Proxycurl Company API</a> can do, but that's just the tip of the iceberg. Remember that simple company lookup we did? Well, hang onto your keyboards because Proxycurl isn't just an API - it's your all-access pass to the corporate data universe.</p>
<p>Let's dive into 6 endpoints of the Proxycurl Company API that'll make you feel like a data wizard.</p>
<h3 id="endpoint-1-company-profile-endpoint"><strong>Endpoint #1: Company Profile Endpoint</strong></h3>
<p>Think of the <a href="https://nubela.co/proxycurl/docs?python&ref=nubela.co#company-api-company-profile-endpoint">Company Profile Endpoint</a> as your one-stop shop for all things company-related. With just 1 credit per successful request, you get a treasure trove of structured data about a company profile. It's like having a corporate crystal ball at your fingertips!</p>
<p><strong>Pro Tip:</strong> This endpoint is perfect for enriching your CRM data or building detailed company databases. It's like turning a business card into a comprehensive company biography!</p>
<h3 id="endpoint-2-employee-listing-endpoint"><strong>Endpoint #2: Employee Listing Endpoint</strong></h3>
<p>Want to know who's who in a company? The <a href="https://nubela.co/proxycurl/docs?python&ref=nubela.co#company-api-employee-listing-endpoint">Employee Listing Endpoint</a> has got you covered. At 3 credits per employee returned, you get access to a goldmine of employee data. It's powered by <a href="https://nubela.co/proxycurl/linkdb?ref=nubela.co">LinkDB</a>, Proxycurl's comprehensive dataset of close to 500 million people and company profiles.</p>
<p><strong>Pro Tip:</strong> Use this for competitive analysis or to identify key decision-makers in target companies. It's like having an org chart on steroids!</p>
<h3 id="endpoint-3-employee-count-endpoint"><strong>Endpoint #3: Employee Count Endpoint</strong></h3>
<p>Sometimes, size does matter – especially when it comes to company data. This <a href="https://nubela.co/proxycurl/docs?python&ref=nubela.co#company-api-employee-count-endpoint">Employee Count Endpoint</a> gives you the total employee count from various sources, all for just 1 credit per successful request. It's like having a corporate headcount clicker, but way more accurate!</p>
<p><strong>Pro Tip:</strong> Great for market segmentation or identifying companies in specific growth stages. Watch those numbers grow!</p>
<h3 id="endpoint-4-company-profile-picture-endpoint"><strong>Endpoint #4: Company Profile Picture Endpoint</strong></h3>
<p>They say a picture is worth a thousand words. Well, the <a href="https://nubela.co/proxycurl/docs?python&ref=nubela.co#company-api-company-profile-picture-endpoint">Company Profile Picture Endpoint</a> gives you that picture for free (after your first top-up)! It's a quick and easy way to add visual flair to your company data displays.</p>
<p><strong>Pro Tip:</strong> Use this to enhance the UI of your company directories or business intelligence dashboards. Make your data look as good as it performs!</p>
<h3 id="endpoint-5-company-lookup-endpoint"><strong>Endpoint #5: Company Lookup Endpoint</strong></h3>
<p>Playing detective with company data? The <a href="https://nubela.co/proxycurl/docs?python&ref=nubela.co#company-api-company-lookup-endpoint">Company Lookup Endpoint</a> is your magnifying glass. For 2 credits per successful request, you can resolve a company's Professional Social Network profile from just a name, domain, or location. It's like turning a business card into a full Professional Social Network profile!</p>
<p><strong>Pro Tip:</strong> Perfect for verifying company information or enriching lead data in your sales processes. Sherlock Holmes, eat your heart out!</p>
<h3 id="endpoint-6-employee-search-endpoint"><strong>Endpoint #6: Employee Search Endpoint</strong></h3>
<p>Last but not least, this <a href="https://nubela.co/proxycurl/docs?python&ref=nubela.co#company-api-employee-search-endpoint">employee search endpoint</a> is your corporate talent scout. For 10 credits per successful request plus 6 per employee returned, you can search employees by job title. It's like having X-ray vision into a company's org chart!</p>
<p><strong>Pro Tip:</strong> Ideal for recruitment firms looking for specific talent or sales teams targeting particular roles. Finding a needle in a corporate haystack has never been easier!</p>
<h2 id="putting-it-all-together-the-proxycurl-company-api-advantage"><strong>Putting it all together: The Proxycurl Company API advantage</strong></h2>
<p>Now, I know what you're thinking: "This sounds great, but what sets these endpoints apart from the official Professional Social Network Company API?" Well, my friend, here's the secret sauce. Imagine you're building a competitive intelligence tool. With these Proxycurl Company API’s endpoints, you could:</p>
<ol>
<li><strong>Lead generation on steroids</strong>: Use the Company Profile Endpoint to get detailed info on target companies. You'll have a trawling net for leads in your target industry!</li>
<li><strong>Competitor analysis made easy</strong>: Leverage the Employee Listing Endpoint to understand team structures and keep tabs on your rivals. It's like having a spy in their boardroom, but totally legal!</li>
<li><strong>Growth tracking in real-time</strong>: Use the Employee Count Endpoint to track company growth over time. Spot emerging players and industry trends before they hit the mainstream!</li>
<li><strong>Visual appeal for your data</strong>: Spice up your UI with the Company Profile Picture Endpoint. Because who said data can't be pretty?</li>
<li><strong>Data enrichment on demand</strong>: Use the Company Lookup Endpoint to enrich your existing data. Turn business cards into comprehensive company profiles!</li>
<li><strong>Talent scouting reinvented</strong>: Harness the Employee Search Endpoint to identify key players in specific roles. HR folks, it's like having a heat-seeking missile for your dream team!</li>
</ol>
<p>And the best part? You get all this with <a href="https://nubela.co/proxycurl/pricing?ref=nubela.co">flexible pricing</a>, no stringent rate limits, and data that could be fresher than your morning coffee! Because with Proxycurl, the sky's not the limit - it's just the beginning!</p>
<p>So, whether you're a startup founder looking to disrupt the market, a data scientist hungry for insights, or a developer building the next big thing for your company, Proxycurl's Company API has got your back. It's time to stop wrestling with API limitations and start unleashing the full power of Professional Social Network data.</p>
<h2 id="professional-social-network-company-api-vs-proxycurl-company-api-9-key-differences"><strong>Professional Social Network Company API vs. Proxycurl Company API: 9 key differences</strong></h2>
<p>Now, it's time for the main event! In the red corner, we have the reigning champion, the official Professional Social Network Company API. And in the blue corner, the challenger, Proxycurl's Company API. Let's break down this matchup and see who comes out on top.</p>
<table>
<thead>
<tr>
<th style="text-align:left">Feature</th>
<th style="text-align:left">Professional Social Network API</th>
<th style="text-align:left">Proxycurl API</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left"><strong>Rate Limits</strong></td>
<td style="text-align:left">Strict (e.g., 100,000/day)</td>
<td style="text-align:left">Flexible credit system</td>
</tr>
<tr>
<td style="text-align:left"><strong>Data Completeness</strong></td>
<td style="text-align:left">Limited fields</td>
<td style="text-align:left">Comprehensive data fields</td>
</tr>
<tr>
<td style="text-align:left"><strong>Historical Data</strong></td>
<td style="text-align:left">Limited access</td>
<td style="text-align:left">Extensive historical data</td>
</tr>
<tr>
<td style="text-align:left"><strong>Use Case Flexibility</strong></td>
<td style="text-align:left">Restricted by Professional Social Network's TOS</td>
<td style="text-align:left">Flexible for various applications</td>
</tr>
<tr>
<td style="text-align:left"><strong>Integration Complexity</strong></td>
<td style="text-align:left">Complex OAuth process</td>
<td style="text-align:left">Simple API key authentication</td>
</tr>
<tr>
<td style="text-align:left"><strong>Pricing Model</strong></td>
<td style="text-align:left">Opaque, negotiation-based</td>
<td style="text-align:left">Transparent, credit-based system</td>
</tr>
<tr>
<td style="text-align:left"><strong>Support</strong></td>
<td style="text-align:left">Limited, often automated</td>
<td style="text-align:left"><a href="mailto:hello@nubela.co">Dedicated human support</a></td>
</tr>
<tr>
<td style="text-align:left"><strong>Data Compliance</strong></td>
<td style="text-align:left">Strict usage guidelines</td>
<td style="text-align:left">Ethical collection, flexible usage</td>
</tr>
</tbody>
</table>
<p>While the official Professional Social Network API has been the go-to or top-of-mind solution for many, the industry has since shifted to favour such data enrichment API solutions such as our own Proxycurl API products. Judging from the intense matchup laid out in the table above, it's pretty clear who emerged the champion (<em>ahem</em> it's Proxycurl).</p>
<h2 id="but-what-about-legality-and-data-compliance"><strong>But what about legality and data compliance?</strong></h2>
<p>Now, I know what you might be thinking: "This all sounds great, but is it actually legal?" It's a fair question and one that deserves a thorough answer.</p>
<p>Proxycurl takes data compliance and ethical collection very seriously. We've gone to great lengths to ensure our practices are above board. Still worried? Don't just take my word for it.</p>
<p>Here are some resources that dive deep into the legal aspects:</p>
<ul>
<li>Wondering about the legality of Professional Social Network scraping in general? Check out ["Is Professional Social Network Scraping Legal?"](<a href="https://nubela.co/blog/is-Professional">https://nubela.co/blog/is-Professional</a> Social Network-scraping-legal/). Spoiler alert: It's more nuanced than you might think!</li>
<li>Concerned about GDPR compliance? The article ["Is Professional Social Network Scraping GDPR compliant?"](<a href="https://nubela.co/blog/is-Professional">https://nubela.co/blog/is-Professional</a> Social Network-scraping-gdpr-compliant/) breaks it down in detail.</li>
<li>Want to know specifically about Proxycurl's GDPR compliance? We've got you covered with <a href="https://nubela.co/blog/is-proxycurl-compliant-with-gdpr/">"Is Proxycurl Compliant with GDPR?"</a>.</li>
<li>For those in California, you'll want to check out <a href="https://nubela.co/blog/what-is-proxycurls-ccpa-policy/">"What is Proxycurl's CCPA Policy?"</a>.</li>
</ul>
<p>These articles provide in-depth analyses of the legal landscape surrounding Professional Social Network data collection and data usage generally. They're not just reassuring - they're educational!</p>
<h2 id="beyond-company-api-6-other-proxycurl%E2%80%99s-api-solutions"><strong>Beyond Company API: 6 other Proxycurl’s API solutions</strong></h2>
<p>Before we wrap up, let's take a quick look at some other powerful tools in the Proxycurl arsenal. These products work seamlessly with the Company API to provide a comprehensive B2B data solution.</p>
<table>
<thead>
<tr>
<th style="text-align:left">Product</th>
<th style="text-align:left">Use Cases</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left"><strong><a href="https://nubela.co/proxycurl/people-api?ref=nubela.co">People API</a></strong></td>
<td style="text-align:left">Talent sourcing, sales lead generation</td>
</tr>
<tr>
<td style="text-align:left"><strong><a href="https://nubela.co/proxycurl/search-api?ref=nubela.co">Search API</a></strong></td>
<td style="text-align:left">Market research, competitor analysis</td>
</tr>
<tr>
<td style="text-align:left"><strong><a href="https://nubela.co/proxycurl/contact-api?ref=nubela.co">Contact API</a></strong></td>
<td style="text-align:left">Direct outreach, email marketing</td>
</tr>
<tr>
<td style="text-align:left"><strong><a href="https://nubela.co/proxycurl/school-api?ref=nubela.co">School API</a></strong></td>
<td style="text-align:left">Education sector analysis, alumni networking</td>
</tr>
<tr>
<td style="text-align:left"><strong><a href="https://nubela.co/proxycurl/jobs-api?ref=nubela.co">Jobs API</a></strong></td>
<td style="text-align:left">Job market trends, recruitment strategies</td>
</tr>
<tr>
<td style="text-align:left"><strong><a href="https://nubela.co/proxycurl/customer-api?ref=nubela.co">Customer API</a></strong></td>
<td style="text-align:left">Customer insights, retention strategies</td>
</tr>
</tbody>
</table>
<p>Thought we were done? There's more! Proxycurl offers even more solutions to supercharge your B2B data game:</p>
<ol>
<li><a href="https://nubela.co/proxycurl/linkdb?ref=nubela.co"><strong>LinkDB</strong></a>: An enterprise-level comprehensive data set with over 472 million public Professional Social Network\ profiles <em>(and growing)</em>. Perfect for building lead lists, identifying talent, or discovering investment opportunities. It's like having the entire professional world at your fingertips!</li>
<li><a href="https://sapiengraph.com/?ref=nubela.co"><strong>Sapiengraph</strong></a>: A user-friendly no-code tool for B2B enrichment. It's a 5-minute growth tool designed for anyone. If you can't get productive with it in 5 minutes, we offer a no-questions-asked refund. Talk about confidence in our product!</li>
</ol>
<p>Each of these tools can be integrated with Proxycurl’s Company API to create powerful, comprehensive B2B data solutions. Whether you're in sales, recruitment, market analysis, or any other field that relies on professional data, trust me, we definitely have a tool to supercharge your workflow.</p>
<p>Oh, and if you're hungry for more data-driven insights, check out our deep dive into <a href="https://nubela.co/blog/crm-data-enrichment-the-easiest-way-to-increase-your-sales-conversion-rates/">CRM data enrichment</a>. It's juicier than a gossip magazine and way more useful!</p>
<h2 id="supercharge-your-applications-with-professional-social-network-company-api"><strong>Supercharge your applications with Professional Social Network Company API</strong></h2>
<p>Whew, what a day! We've journeyed through the landscape of Professional Social Network data, from the challenges of the official Professional Social Network Company API to the liberating possibilities of Proxycurl. As we wrap up, let's recap the most important points.</p>
<h3 id="key-takeaways-5-things-to-remember"><strong>Key Takeaways: 5 Things to Remember</strong></h3>
<ol>
<li>Professional Social Network's official API is like a strict librarian - lots of rules, limited access, and a tendency to shush your enthusiasm.</li>
<li><a href="https://nubela.co/proxycurl?ref=nubela.co">Proxycurl</a>, on the other hand, is the cool librarian who legally sneaks you the restricted books and teaches you how to speed read.</li>
<li>With [Proxycurl's Company API](<a href="https://nubela.co/proxycurl/Professional?ref=nubela.co">https://nubela.co/proxycurl/Professional</a> Social Network/company), you're not just getting company profiles; you're getting the corporate equivalent of a tell-all memoir.</li>
<li>Ethical data collection isn't just good karma; it's good business. Always keep it clean, folks!</li>
<li>Proxycurl isn't a one-trick pony - from <a href="https://nubela.co/proxycurl/products?ref=nubela.co">People API to LinkDB to others</a>, we offer a suite of complementary products beyond the Company API.</li>
</ol>
<p>So there you have it, my friend! We've demystified the process of accessing Professional Social Network company data without the need for a secret handshake or sacrificing your firstborn to the API gods.</p>
<p>Remember, in the world of B2B data, knowledge truly is power. With Proxycurl, you're not just accessing data – you're unlocking insights that can drive your business forward, fuel innovation, and give you a competitive edge in your industry.</p>
<p>Whether you're a startup founder plotting world domination, a developer coding the next big thing in the B2B ecosystem, or a data scientist with an insatiable appetite for corporate data insights, Proxycurl is your key to unlocking the full potential of Professional Social Network's vast data ecosystem.</p>
<p><a href="https://nubela.co/proxycurl/auth/register?ref=nubela.co">Sign up for a Proxycurl account today</a> and unlock the full potential of B2B data at your fingertips. You get <strong>100 free credits</strong> if you register with a work email, <strong>10 free credits</strong> if you use a personal email.</p>
<p>Whatever your next step, remember that we’re always here at <a href="mailto:hello@nubela.co">hello@nubela.co</a> to support you on your data journey.</p>
<p>Now, if you'll excuse me, I have some APIs to wrangle and data to conquer. So go forth, code fearlessly, and may your databases be ever full and your API calls always successful.</p>
 ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ How to Automate Sales Prospecting &amp; Outreach with AI Agents ]]></title>
        <description><![CDATA[ A successfully set-up AI agents workflow involves quality data and clear, specific instructions. These are exactly what we&#39;re talking about here - getting quality B2B data based on your parameters, and building the workflow. ]]></description>
        <link>https://nubela.co/blog/automate-sales-prospecting-outreach-with-ai-agents/</link>
        <guid isPermaLink="false">66b29dbbdead420001d51e40</guid>
        <category><![CDATA[ proxycurl ]]></category>
        <dc:creator><![CDATA[ Zeha Irawan | Senior Marketing Dev ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/10/zz.jpeg"/>
        <pubDate>Tue, 15 Oct 2024 11:24:07 +0800</pubDate>
        <media:content url="" medium="image"/>
        <content:encoded><![CDATA[ <p>Ever since LLMs like ChatGPT have hit the scene, they've been all the rage and have fundamentally changed how many things are done—<a href="https://nubela.co/blog/how-cold-emailing-grew-my-b2b-startup-to-100k-mrr/">sales prospecting and outreach</a> included.</p>
<p>But the ultimate question is: how can you practically implement LLMs to improve your workflow, rather than just being something fun to play with?</p>
<p>You know, at what point does "AI" become something like we originally imagined it being—something that can complete entire tasks for you?</p>
<p>For many things, AI isn't quite there yet. But for sales prospecting and outreach, quite a few things can be automated, or at least heavily assisted by AI agents right now.</p>
<p>That's what this article will be all about.</p>
<p>First things first:</p>
<h2 id="what-is-an-ai-agent">What is an AI agent?</h2>
<p>Good question. It'll have a slightly different answer depending on who you ask.</p>
<p>For example, <a href="https://www.ibm.com/think/topics/ai-agents?ref=nubela.co">IBM</a> describes an AI agent as:</p>
<blockquote>
<p>a system or program that <strong>autonomously performs tasks for a user</strong> or another system by designing its workflow and utilizing available tools.</p>
</blockquote>
<p>On the other hand, <a href="https://aws.amazon.com/what-is/ai-agents/?ref=nubela.co">Amazon</a> defines an AI agent as:</p>
<blockquote>
<p>software that interacts with its environment, collects data, and uses it to <strong>perform self-determined tasks</strong> to meet goals set by humans.</p>
</blockquote>
<p>Then <a href="https://techcrunch.com/2024/07/13/what-exactly-is-an-ai-agent/?ref=nubela.co">TechCrunch</a> describes an AI agent as:</p>
<blockquote>
<p>AI-driven software that <strong>performs tasks traditionally done by humans</strong>, potentially crossing multiple systems and handling various jobs beyond just answering questions.</p>
</blockquote>
<p>Basically, at its core, an AI agent is a software program designed to perform tasks autonomously. These agents can process information, make decisions, and execute actions based on predefined rules and learning from data.</p>
<h2 id="how-can-ai-agents-benefit-sales-prospecting">How can AI agents benefit sales prospecting?</h2>
<p>For sales prospecting, an AI agent can accomplish three main things:</p>
<ul>
<li><strong>Lead identification and ranking:</strong> An AI agent can search for leads that fit your Ideal Customer Profile (ICP), identify and rank them, and prospect on your behalf.</li>
<li><strong>Automated outreach:</strong> The agent can automatically reach out to ideal prospects and <a href="https://nubela.co/blog/how-salesforge-integrates-rich-prospecting-data-with-chatgpt-to-automatically-personalize-emails/">write a series of outreach messages</a> tailored to their interests and needs.</li>
<li><strong>Inbox management:</strong> The AI agent can monitor your email inbox, automatically replying to interested leads and pushing them to book a call with you directly.</li>
</ul>
<p>For B2B sales, this means you can use AI agents to handle the majority of the sales workflow. All you need to do is show up for sales demos and close the deal.</p>
<h2 id="the-first-step-to-any-ai-agent-is-data">The first step to any AI agent is data</h2>
<p>To get an LLM to do anything useful, it needs an appropriate amount of data for the task at hand.</p>
<p>For example, if you're automating sales prospecting, the AI agent would need access to relevant prospecting data, such as <a href="https://nubela.co/proxycurl/contact-api?ref=nubela.co">email addresses</a>, <a href="https://nubela.co/proxycurl/company-api?ref=nubela.co">company information</a>, and so on.</p>
<p>Incorporating <a href="https://nordvpn.com/features/dark-web-monitor/?ref=nubela.co">dark web monitoring</a> can help ensure the security of this data by identifying and mitigating potential threats from the dark web, thereby protecting sensitive information from being compromised.</p>
<h2 id="how-to-programmatically-access-b2b-data">How to programmatically access B2B data</h2>
<p>Luckily since you're on the <a href="https://proxycurl.com/?ref=nubela.co">Proxycurl</a> blog, you'll have programmatic access to just about all of the B2B data you could ever possibly need.</p>
<p>We have millions of data points on people, jobs, companies, and more, and we provide acccess to it all via a REST API.</p>
<p>In this case, two very useful endpoints would be our <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#search-api-person-search-endpoint">Person Search Endpoint</a>, and our <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#contact-api-personal-email-lookup-endpoint">Personal Email Lookup Endpoint</a>.</p>
<h3 id="searching-for-prospects">Searching for prospects</h3>
<p>So, for example, to search for prospects via our Person Search Endpoint, you could do so via a simple cURL command:</p>
<pre><code class="language-bash">curl \
    -G \
    -H "Authorization: Bearer ${YOUR_API_KEY}" \
    'https://nubela.co/proxycurl/api/v2/search/person' \
    --data-urlencode 'country=US' \
    --data-urlencode 'current_role_title=founder' \
    --data-urlencode 'industries=Computer Software' \
    --data-urlencode 'page_size=10' \
    --data-urlencode 'enrich_profiles=enrich'
</code></pre>
<p>That would return you 10 "enriched" (more information) founders working in the computer software industry.</p>
<div class="kg-card kg-callout-card kg-callout-card-green"><div class="kg-callout-emoji">💡</div><div class="kg-callout-text"><b><strong style="white-space: pre-wrap;">Note: </strong></b>You can <a href="https://nubela.co/proxycurl/auth/register?ref=nubela.co" rel="noreferrer">create your Proxycurl account for free right here</a> and test out a few API queries using the trial credits you'll receive. <br>You'll get 100 trial credits if you sign up with a work email, 10 credits with a personal email.</div></div><p>Then, if you found a prospect of interest that was returned by our Person Search Endpoint and were interested in reaching out, you could use our Personal Email Lookup Endpoint to get their email.</p>
<h3 id="enriching-prospects-with-emails">Enriching prospects with emails</h3>
<p>Here's how:</p>
<pre><code class="language-bash">curl \
    -G \
    -H "Authorization: Bearer ${YOUR_API_KEY}" \
    'https://nubela.co/proxycurl/api/contact-api/personal-email' \
    --data-urlencode 'Professional Social Network_profile_url=https://www.professionalsocialnetwork.com/in/exampleprofile/'
</code></pre>
<p>That would take the given Professional Social Network URL from the Person Search Endpoint, and return you their personal email if available.</p>
<h3 id="generating-large-lead-lists-to-act-as-a-dataset-for-your-ai-agent">Generating large lead lists to act as a dataset for your AI agent</h3>
<p>Now let's say you want to generate a large lead list to use as a dataset for your AI agent.</p>
<p>We could use a little bit of <a href="https://www.python.org/?ref=nubela.co">Python</a> to help us accomplish this:</p>
<pre><code class="language-python">import requests
import os
import csv
import time

CSV_FILE_PATH = "./exported_data.csv"
API_KEY = "Your_API_KEY_Here"


# Function to search for people and handle pagination
def search_person(api_key, max_results):
    url = "https://nubela.co/proxycurl/api/v2/search/person"
    headers = {"Authorization": f"Bearer {api_key}"}

    params = {
        'country': 'US',
        'current_role_title': 'founder',
        'industries': 'Computer Software',
        'page_size': '10',
        'enrich_profiles': 'enrich'
    }

    results = []
    try:
        while len(results) &lt; max_results:
            response = requests.get(url, headers=headers, params=params)

            if response.status_code == 429:
                print("Rate limit hit, sleeping for a while...")
                time.sleep(10)
                continue

            response.raise_for_status()
            data = response.json()

            if not data.get("results"):
                print("No more results to fetch.")
                break

            results.extend(data.get("results", []))
            print(f"Fetched {len(results)} results so far.")

            if data.get("next_page") and len(results) &lt; max_results:
                url = data["next_page"]
            else:
                break

        return results[:max_results]
    except requests.exceptions.RequestException as e:
        print(f"Error in search_person: {e}")
        return []


# Lookup personal email function
def lookup_personal_email(api_key, Professional Social Network_url):
    url = 'https://nubela.co/proxycurl/api/contact-api/personal-email'
    headers = {'Authorization': f'Bearer {api_key}'}
    params = {'Professional Social Network_profile_url': Professional Social Network_url}

    try:
        response = requests.get(url, headers=headers, params=params)
        response.raise_for_status()
        data = response.json()
        return ', '.join(data.get('emails', [])) or 'N/A'
    except requests.exceptions.RequestException as e:
        print(f"Error fetching personal email for {Professional Social Network_url}: {e}")
        return 'N/A'


# Create new CSV if needed
def create_new_csv(file_name):
    with open(file_name, mode='w', newline='', encoding='utf-8') as file:
        writer = csv.writer(file)
        writer.writerow([
            "First Name", "Last Name", "Professional Social Network URL", "Occupation", "Summary",
            "Current Company", "Current Company Description", "Company URL",
            "Experiences", "Personal Email"
        ])
    print(f"New CSV file created: {file_name}")


# Export data to CSV with handling for missing profile data
def export_to_csv(data, file_name=CSV_FILE_PATH):
    print(f"Starting export to CSV: {file_name}")

    if not os.path.exists(file_name):
        create_new_csv(file_name)

    try:
        with open(file_name, mode='a', newline='', encoding='utf-8') as file:
            writer = csv.writer(file)

            for person in data:
                Professional Social Network_url = person.get("Professional Social Network_profile_url", "N/A")
                profile = person.get("profile", {})

                if not profile:
                    print(f"Profile missing for {Professional Social Network_url}, skipping...")
                    continue

                first_name = profile.get("first_name", "N/A")
                last_name = profile.get("last_name", "N/A")
                occupation = profile.get("occupation", "N/A")
                summary = profile.get("summary", "N/A")

                experiences = profile.get("experiences", [])
                experiences_list = []
                current_company = "N/A"
                current_company_description = "N/A"
                company_url = "N/A"

                if experiences and isinstance(experiences, list):
                    first_experience = experiences[0] if len(experiences) &gt; 0 else {}
                    current_company = first_experience.get("company", "N/A")
                    current_company_description = first_experience.get("description", "N/A")
                    company_url = first_experience.get("company_Professional Social Network_profile_url", "N/A")

                    for exp in experiences:
                        company_name = exp.get("company", "N/A")
                        title = exp.get("title", "N/A")
                        description = exp.get("description", "N/A")
                        start_date = exp.get("starts_at", {}).get("year", "N/A") if exp.get("starts_at") else "N/A"
                        end_date = exp.get("ends_at", {}).get("year", "N/A") if exp.get("ends_at") else "N/A"
                        exp_string = f"Company: {company_name}, Title: {title}, Description: {description}, Start: {start_date}, End: {end_date}"
                        experiences_list.append(exp_string)
                    experiences_str = " | ".join(experiences_list)
                else:
                    experiences_str = "N/A"

                personal_email = lookup_personal_email(API_KEY, Professional Social Network_url)

                writer.writerow([
                    first_name, last_name, Professional Social Network_url, occupation, summary,
                    current_company, current_company_description, company_url,
                    experiences_str, personal_email
                ])
                print(f"Added row for {first_name} {last_name}")

        print(f"Data successfully exported to {file_name}")
    except Exception as e:
        print(f"Error in export_to_csv: {e}")


# Start the process of fetching and exporting data
def start_process(max_results):
    try:
        search_results = search_person(API_KEY, max_results)
        if not search_results:
            print("No results found.")
            return
        export_to_csv(search_results)
    except Exception as e:
        print(f"Error in start_process: {e}")


if __name__ == '__main__':
    start_process(max_results=500)
</code></pre>
<h3 id="how-to-use-the-script">How to use the script</h3>
<p><strong>1.</strong> Make sure you have Python installed.</p>
<p>To run the script you would first need to have Python installed. An easy way to work with Python is to install an Integrated Development Environment (IDE) like <a href="https://www.jetbrains.com/pycharm/?ref=nubela.co">PyCharm</a>.</p>
<p>Also, install the <code>requests</code> module if you haven’t already using Python's package manager.</p>
<p>Just run the following command from your terminal or command prompt:</p>
<pre><code class="language-bash">pip3 install requests
</code></pre>
<p><strong>2.</strong> Replace <code>Your_API_Key_Here</code> with your actual <a href="https://nubela.co/proxycurl/dashboard/proxycurl-api/api-key/?ref=nubela.co">Proxycurl API key</a> in the script.</p>
<p><strong>3.</strong> Execute the script:</p>
<p><code>python3 your_script_name.py</code></p>
<p><strong>4.</strong> After running the above Python script, it would return you a <code>.CSV</code> list of <strong>500 founders of computer software companies</strong>.</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/10/script-output-1.png" class="kg-image" alt="An example of the CSV returned" loading="lazy" width="2852" height="1428"><figcaption><span style="white-space: pre-wrap;">An example of the CSV returned</span></figcaption></figure><p>The data points it includes are:</p>
<ul>
<li>First name</li>
<li>Last name</li>
<li>Professional Social Network profile URL</li>
<li>Occupation</li>
<li>Summary (a brief overview of the individual's profile)</li>
<li>Current company name</li>
<li>Current company description</li>
<li>Current company Professional Social Network URL</li>
<li>Experiences (a summary of job experiences, including company names, job titles, descriptions, start and end dates)</li>
<li>Personal email (if available)</li>
</ul>
<p>For all prospects, and can return even more if you want to add more of the results available on our Person Search Endpoint, which <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#search-api-person-search-endpoint">you can view on our documentation here</a>.</p>
<p>Note that this can consume quite a bit of credits, so you might want to <a href="https://nubela.co/proxycurl/pricing?ref=nubela.co">review our pricing here</a> first and lower the amount of results returned by the Python script by changing <code>max_results</code>.</p>
<h3 id="modifying-the-filtering-for-the-script">Modifying the filtering for the script</h3>
<p>You can adjust the search parameters in the params dictionary inside the <code>search_person</code> function.</p>
<p>For example, if you want to search for <strong>marketing managers in the UK</strong> instead of founders in the US, you can update the parameters like this:</p>
<pre><code class="language-python">params = {
    'country': 'GB',
    'current_role_title': 'marketing manager',
    'industries': 'Marketing and Advertising',
    'page_size': '10',
    'enrich_profiles': 'enrich'
}
</code></pre>
<p>But that's far from it when it comes to filtering and search options. <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#search-api-person-search-endpoint">You can view the available search parameters here</a>.</p>
<p>Feel free to modify the parameters to match your Ideal Customer Profile (ICP) based on job titles, industries, locations, or other available filters.</p>
<div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">💡</div><div class="kg-callout-text"><b><strong style="white-space: pre-wrap;">Note: </strong></b>The above script only uses "personal emails," but you'll find that sometimes personal emails as well as work emails will be returned. You can also add work emails to this via our <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#contact-api-work-email-lookup-endpoint" rel="noreferrer">Work Email Lookup Endpoint</a>, but you'll have to configure a webhook as this endpoint functions asynchronously. You could use something like <a href="https://flask.palletsprojects.com/en/3.0.x/?ref=nubela.co" rel="noreferrer">Flask</a> and <a href="https://ngrok.com/?ref=nubela.co" rel="noreferrer">ngrok</a> to accomplish that locally. I've skipped that for the sake of keeping this article to the point, but it isn't too difficult.</div></div><h2 id="creating-ai-agents-with-zapier-central">Creating AI agents with Zapier Central</h2>
<p>Cool. Now we have a dataset to work with.</p>
<p>For the next step, in order to bring this all together, we'll be using <a href="https://zapier.com/central?ref=nubela.co">Zapier Central</a>.</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/10/zapier.png" class="kg-image" alt="Zapier's AI assistants" loading="lazy" width="2000" height="1081"><figcaption><span style="white-space: pre-wrap;">Zapier's AI assistants</span></figcaption></figure><p>Zapier is well known for integrating systems/apps. It's what allows you to piece together all of the different moving parts of your workflow.</p>
<p>And now they've dipped their toes into AI agents too. Best of all they'll allow you 400 activities per month and live data sources plus web browsing <a href="https://zapier.com/l/central-pricing?ref=nubela.co">for free</a>.</p>
<div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">💡</div><div class="kg-callout-text"><b><strong style="white-space: pre-wrap;">Note: </strong></b>For a self-hosted option, <a href="https://n8n.io/integrations/agent/?ref=nubela.co" rel="noreferrer">you could also use n8n along with LangChain &amp; LLAMA 3</a> to create similar AI automation systems. But there are quite a bit more complexities, and I think you'll find you often don't save that much self-hosting things like this.</div></div><p>After creating your Zapier account, <a href="https://central.zapier.com/?ref=nubela.co">you can access Zapier Central right here</a>.</p>
<p>You'll then see a dashboard similar to below:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/10/zapier-central.png" class="kg-image" alt="Zapier Central's dashboard" loading="lazy" width="2000" height="1055"><figcaption><span style="white-space: pre-wrap;">Zapier Central's dashboard</span></figcaption></figure><p>Click the "Plus" icon to create a new AI agent:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/10/zapier-central-2.png" class="kg-image" alt="Creating a new AI agent" loading="lazy" width="2000" height="1127"><figcaption><span style="white-space: pre-wrap;">Creating a new AI agent</span></figcaption></figure><h2 id="ai-agents-for-lead-identification-and-ranking">AI agents for lead identification and ranking</h2>
<p>Next up you'll need a name and description, which is whatever you'd like. Then the instructions which will apply to every conversation.</p>
<p>In this case, we can use something like, <em>"your job is to be a member of my sales team and help me prospect plus close sales."</em></p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/10/zapier-3.png" class="kg-image" alt="Configuring your AI agent" loading="lazy" width="2111" height="1401"><figcaption><span style="white-space: pre-wrap;">Configuring your AI agent</span></figcaption></figure><p>As of right now, Zapier Central's best way to natively integrate with business suite tools is by using Google's suite of tools. Such as Google Docs and Gmail.</p>
<p>To be honest with you, though, for outreach, Gmail is one of the best options you can use as there are a significant amount of Gmail users, and Gmail would much prefer mail came from their own infrastructure. Google's line of products aren't <em>too</em> expensive.</p>
<p>Anyway, you'll want to authenticate Zapier with your Google account and you'll be able to directly sync.</p>
<p>Then for your actions:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/10/zapier-4.png" class="kg-image" alt="Zapier's AI actions" loading="lazy" width="1702" height="1194"><figcaption><span style="white-space: pre-wrap;">Zapier's AI actions</span></figcaption></figure><p>Select Gmail "Create draft," and Google Docs "Create document from text."</p>
<div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">💡</div><div class="kg-callout-text"><b><strong style="white-space: pre-wrap;">Note: </strong></b>You can also select "send email" instead of create draft, but this will indeed automatically and directly send the email. It's up to you if you want to review things before they get sent out or not.</div></div><p>Then upload the <a href="google.com"><code>.CSV</code> full of prospects</a> we generated earlier with Proxycurl as the data source:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/10/zapier-5.png" class="kg-image" alt="Adding your data source for your AI agent" loading="lazy" width="1708" height="1334"><figcaption><span style="white-space: pre-wrap;">Adding your data source for your AI agent</span></figcaption></figure><p>It should look similar to this:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/10/zapier-6.png" class="kg-image" alt="Everything configured" loading="lazy" width="2064" height="1400"><figcaption><span style="white-space: pre-wrap;">Everything configured</span></figcaption></figure><p>Then click "Save" and "Create assistant."</p>
<p>Next, open your assitant, and you'll see a page such as this:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/10/zapier-7.png" class="kg-image" alt="Your new AI assistant" loading="lazy" width="2000" height="1118"><figcaption><span style="white-space: pre-wrap;">Your new AI assistant</span></figcaption></figure><p>Click on "Behaviors" in the middle and then "Create behavior":</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/10/zapier-8.png" class="kg-image" alt="Creating your AI agents behaviors" loading="lazy" width="2000" height="1132"><figcaption><span style="white-space: pre-wrap;">Creating your AI agents behaviors</span></figcaption></figure><p>For the trigger, there are a couple of different options you can choose:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/10/ai-agents-trigger.png" class="kg-image" alt="Triggering your AI agent" loading="lazy" width="1713" height="1283"><figcaption><span style="white-space: pre-wrap;">Triggering your AI agent</span></figcaption></figure><p>Such as Slack, a scheduled time, a Gmail action, or more. In this case I'll simply select when I message the assistant the word "Start."</p>
<p>Next up you'll need to fill out the instructions to follow (prompt) section.</p>
<p>So, for mine, here's what I used:</p>
<pre><code>I work for Proxycurl, a B2B data provider &amp; API. We want to target technical founders that could use our B2B data in their business. I want you to use the .CSV and the data provided to first rank the top 100 prospects and give a brief explanation why, then save them in a Google Document. 

After that, get rid of the ones unlikely to convert, and  draft an outreach email to the rest pitching a simple and short email to book a call. It should utilize the data provided, such as the summary and position/role to personalize the email and convey value.

For each row in the Leads spreadsheet, do ALL of the following steps:
1. Use the name and email to populate contact information. 
2. Use any information available about the contact to create a draft an email. 
3. Generate the body and subject.
4. Sign the email with: "Looking forward to connecting!" and "[your name here]"

Here's an example for the company AgentHub with the contact AgentHub team: 

Hey AgentHub team,

Just checked out your platform, and I'm impressed with how easily one can drag and drop to create AI-driven workflow automations. I'd love to connect and explore  explore how our product could help you unlock more potential.

Here's a link to my calendar if you want to chat this week!
[https://calendly.com/proxycurl]
</code></pre>
<p>Of course you'll want to slightly alter it your liking and what fits you and your business.</p>
<p>Then click on the "Test behavior" button:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/10/zapier-9.png" class="kg-image" alt="Seeing how your AI agent will behave based on your instructions" loading="lazy" width="2000" height="1135"><figcaption><span style="white-space: pre-wrap;">Seeing how your AI agent will behave based on your instructions</span></figcaption></figure><p>It will display the following response, showing you <strong><em>step-by-step</em></strong> what it will be doing and the logic behind it: </p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/10/1.png" class="kg-image" alt="First, analyzing the .CSV file" loading="lazy" width="1584" height="1162"><figcaption><span style="white-space: pre-wrap;">First, analyzing the .CSV file</span></figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/10/2.png" class="kg-image" alt="Then, save the prospects in a document" loading="lazy" width="1648" height="1496"><figcaption><span style="white-space: pre-wrap;">Then, save the prospects in a document</span></figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/10/3.png" class="kg-image" alt="The preview of the prospects" loading="lazy" width="1666" height="1340"><figcaption><span style="white-space: pre-wrap;">The preview of the prospects</span></figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/10/4.png" class="kg-image" alt="Done" loading="lazy" width="1674" height="966"><figcaption><span style="white-space: pre-wrap;">Done</span></figcaption></figure><p>You can tell the AI agent to tweak it to your specific needs.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/10/5-1.png" class="kg-image" alt="Give it specific instructions" loading="lazy" width="1712" height="1314"><figcaption><span style="white-space: pre-wrap;">Give it specific instructions</span></figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/10/email-preview-1.png" class="kg-image" alt="The email draft created" loading="lazy" width="1672" height="1140"><figcaption><span style="white-space: pre-wrap;">The email draft created</span></figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/10/6.png" class="kg-image" alt="Done, do you want to further scale the actions?" loading="lazy" width="1698" height="800"><figcaption><span style="white-space: pre-wrap;">Done, do you want to further scale the actions?</span></figcaption></figure><p><br>Gmail draft result:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/10/result--email.png" class="kg-image" alt="Actual draft in Gmail" loading="lazy" width="1188" height="1216"><figcaption><span style="white-space: pre-wrap;">Actual draft in Gmail</span></figcaption></figure><p><br>Google document result:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/10/result---gdoc.png" class="kg-image" alt="The results automatically saved in Google Docs" loading="lazy" width="2320" height="1278"><figcaption><span style="white-space: pre-wrap;">The results automatically saved in Google Docs</span></figcaption></figure><h2 id="give-your-ai-agents-quality-data-clear-instructions-and-youre-all-set">Give your AI agents quality data &amp; clear instructions, and you're all set</h2>
<p>Neat, don't you think? You can now create reports automatically and even create highly personalized emails that are based on accurate data. Gone were the days when you have to manually copy and paste email addresses and read boring Excel spreadsheet to customize your email. Now you can just tell AI agent what you want and it will do it.</p>
<p>Is that all that you can do with it? No, of course. Truly, the limit is your imagination, find your most repetitive and boring task and let the AI agent do it!</p>
<p>Of course, us being at Proxycurl will emphasize the importance of having quality data to feed to your AI agents, so that they can perform their intended tasks to the best that they can.</p>
<div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">🚀</div><div class="kg-callout-text">At Proxycurl, we have a full suite of <a href="https://proxycurl.com/?ref=nubela.co">API products</a> and a <a href="https://nubela.co/proxycurl/linkdb?ref=nubela.co">LinkDB database</a> product consisting of close to 500 million profiles that powers many, many amazing applications and use cases, like AI agents. <br><a href="https://nubela.co/proxycurl/auth/register?ref=nubela.co" rel="noreferrer">Sign up for an account</a> and get started now!</div></div><p></p> ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ How To Build A Crunchbase Scraper In 2025 - With Code Demo ]]></title>
        <description><![CDATA[ We walk you through the process of building a Crunchbase scraper from scratch, including all the technical details and code using Python; and a great alternative: Proxycurl where you can pull the same company information using just a few lines of code. ]]></description>
        <link>https://nubela.co/blog/build-a-crunchbase-scraper/</link>
        <guid isPermaLink="false">6704e1b47e7620000156f2e9</guid>
        <category><![CDATA[ proxycurl ]]></category>
        <dc:creator><![CDATA[ Sese | Technical Writer ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/10/IMG_4677.jpeg"/>
        <pubDate>Wed, 09 Oct 2024 17:12:09 +0800</pubDate>
        <media:content url="" medium="image"/>
        <content:encoded><![CDATA[ <p>In a time where data is worth its weight in gold, Crunchbase is a goldmine. It’s home to thousands of company profiles, their investment data, leadership position, funding information, news and much more. Crunchbase scraping will allow you to get to the gold chunks (the insights you need) and filter out all the debris (all the other information irrelevant to you).</p>
<p>In this article, we’ll walk you through the process of building a Crunchbase scraper from scratch, including all the technical details and code using Python, with a working demo for you to follow along. With that being said, you should also understand that building a Crunchbase scraper is a time consuming task, with many challenges along the way. That is why we will also go through a demo of an alternative approach using Proxycurl, a paid API-based tool that does the work for you. With both options on the table, you can weigh their advantages and choose the one that best fits your needs.</p>
<p>Here’s a sneak peak at a basic Crunchbase scraper using Python to extract company name and headquarter city from the website.</p>
<pre><code class="language-python">import requests
from bs4 import BeautifulSoup

url = 'https://www.crunchbase.com/organization/apple'
headers = {'User-Agent': 'Mozilla/5.0'}

response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.content, 'html.parser')

name_section = soup.find('h1', class_='profile-name')
company_name = name_section.get_text(strip=True) if name_section else 'N/A'

headquarters_section = soup.find('span', class_='component--field-formatter field_type_text')
headquarters_city = headquarters_section.get_text(strip=True) if headquarters_section else 'N/A'

print(f"Company Name: {company_name}")
print(f"Headquarters City: {headquarters_city}")
</code></pre>
<p>Now, to our alternative approach, Proxycurl. It is a comparably efficient Crunchbase scraping tool and you can pull the same company information using just a few lines of code. The added benefit here is you won’t have to worry about HTML parsing or any scraping roadblocks with Proxycurl.</p>
<pre><code class="language-python">import requests

api_key = 'YOUR_API_KEY'
headers = {'Authorization': 'Bearer ' + api_key}
api_endpoint = 'https://nubela.co/proxycurl/api/Professional Social Network/company'
params = {
    'url': 'https://www.professionalsocialnetwork.com/company/apple/',
    }

response = requests.get(api_endpoint, params=params, headers=headers)
data = response.json()

print(f"Company Name: {data['company_name']}")
print(f"Company Headquarter: {data['hq']['city']}")
</code></pre>
<p>By the end of this article, you'll be familiar with both methods and be able to make an informed decision. So whether you're excited to roll up your sleeves and code your own scraper or you’re after a one stop solution, keep reading to set up your Crunchbase scraper.</p>
<h2 id="building-your-crunchbase-scraper-from-scratch">Building your Crunchbase Scraper from scratch</h2>
<p>Crunchbase contains several data types including acquisitions, people, events, hubs and funding rounds. For this article, we will go through building a simple Crunchbase scraper to parse out a company's description to retrieve as JSON data. Let’s go with Apple for our example.</p>
<p>First, we will need to define a function to extract the company description. The <code>get_company_description()</code> function searches for the <code>span</code> HTML element that contains the company’s description. It then extracts the text and returns it:</p>
<pre><code class="language-python">def get_company_description(raw_html):
    description_section = raw_html.find("span", {"class": "description"})
    return description_section.get_text(strip=True) if description_section else "Description not found"
</code></pre>
<p>This sends an HTTP GET request to the URL of the company profile you want to scrape, in this case, Apple’s profile. Here’s what the full code looks like:</p>
<pre><code class="language-python">import requests
from bs4 import BeautifulSoup

def get_company_description(raw_html):
    # Locate the description section in the HTML
    description_section = raw_html.find("span", {"class": "description"})
    
    # Return the text if found, else return a default message
    return description_section.get_text(strip=True) if description_section else "Description not found"

# URL of the Crunchbase profile to scrape
url = "https://www.crunchbase.com/organization/apple"
# Set the User-Agent header to simulate a browser request
headers = {"User-Agent": "Mozilla/5.0"}

# Send a GET request to the specified URL
response = requests.get(url, headers=headers)

# Check if the request was successful (status code 200)
if response.status_code == 200:
    # Parse the HTML content of the response using BeautifulSoup
    soup = BeautifulSoup(response.content, "html.parser")
    
    # Call the function to get the company description
    company_description = get_company_description(soup)
    
    # Print the retrieved company description
    print(f"Company Description: {company_description}")
else:
    # Print an error message if the request failed
    print(f"Failed to retrieve data. Status Code: {response.status_code}")
</code></pre>
<p>This script does the trick for pulling Apple’s company description from Crunchbase. Depending on your experience and what you are looking for, things can get a lot trickier. Handling large volumes of data, managing pagination, bypassing authwall mechanisms, there are a lot of hurdles along the way. Keep in mind that you will have to:</p>
<ul>
<li>Perform this action for every single field you’re interested in.</li>
<li>Stay updated with any modifications in the web page. Even a small change in how a field is presented in the website can result in a minor or a significant tweak in the scraping logic.</li>
</ul>
<p><em><strong>Note</strong>: Check the website’s terms of service and <code>robots.txt</code> file to ensure you're scraping responsibly and within legal limits.</em></p>
<h2 id="why-is-building-a-crunchbase-scraper-challenging">Why is building a Crunchbase Scraper challenging?</h2>
<p>Building your own Crunchbase scraper is a viable option, but before you go Gung-ho, be aware of what challenges await you.</p>
<h3 id="accuracy-and-completeness">Accuracy and completeness</h3>
<p>Your efforts will be meaningless if the extracted data is false. Manually scraping raises the margin of error, and the code may overlook important data if the page doesn't fully load or if some content is embedded in iframes or external resources.</p>
<h3 id="crunchbases-structure-and-changes">Crunchbase's structure and changes</h3>
<p>Parsing the HTML of a webpage to extract specific data fields is a basic step in scraping. Crunchbase's HTML is complex, with dynamic elements and multiple layers of containers. It is a task in itself to identify and target the right data. This added with the website’s changing structure can make your job tenfold tougher.</p>
<h3 id="handling-authwalls-and-anti-scraping-mechanisms">Handling authwalls and anti-scraping mechanisms</h3>
<p>Crunchbase protects most of their data behind an authwall and will require login credentials or a premium account. Handling login sessions, tokens, or cookies in the scraper manually makes the task more complex, especially for maintaining these sessions across multiple requests. Similarly, Crunchbase uses bot detection systems and rate-limits requests. You run a risk of getting blocked, and bypassing these protections means implementing techniques such as rotating proxies or handling CAPTCHAs, which is easier said than done.</p>
<p>Building your own Crunchbase scraper gives you flexibility and a sense of accomplishment, but weigh that against the challenges involved. It demands deep technical expertise, constant monitoring and effort to get the data you want. This is without mentioning how time-consuming and prone to errors the process can be. Consider whether the effort and maintenance are truly worth it for your needs.</p>
<h2 id="the-hassle-free-way-to-set-up-a-crunchbase-scraper">The hassle-free way to set up a Crunchbase Scraper</h2>
<p>Phew! Building your Crunchbase Scraper from scratch sure is some serious work. Not only do you have to dedicate a lot of your time and effort, but also keep an eye out for potential challenges. Thank god <a href="https://nubela.co/proxycurl/?ref=nubela.co">Proxycurl</a> exists!</p>
<p>Take advantage of Proxycurl’s endpoints and get all the data you could ever wish for in JSON format. And since Crunchbase only provides public data available on the company, there is no data out of your reach. Any private information scraping attempt will result in 404. Rest assured, you will never be charged for a request that returns an error code.</p>
<p>Proxycurl provides you with a list of standard fields under the <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#company-api">Company Profile Endpoint</a>. You can see a full example of any response in the documentation on the right-hand side below the request that generated it. Proxycurl has the ability to scrape the following fields at your request:</p>
<ul>
<li><code>categories</code></li>
<li><code>funding_data</code></li>
<li><code>exit_data</code></li>
<li><code>acquisitions</code></li>
<li><code>extra</code></li>
</ul>
<p>Each of these fields that you request comes at an additional credit cost, so choose only the parameters you require. But when you do need them, Proxycurl puts them a single parameter away!</p>
<p>Now that we are familiar with Proxycurl, let's walk through a working demo. We'll include two examples, for Postman and then for Python.</p>
<h2 id="crunchbase-scraping-with-proxycurl-via-postman">Crunchbase scraping with Proxycurl via Postman</h2>
<h3 id="step-1-set-up-your-account-and-get-your-api-key">Step 1: Set up your account and get your API key</h3>
<p>Create an account with <a href="https://nubela.co/proxycurl/auth/register?ref=nubela.co">Proxycurl</a> and you’ll be assigned with a unique API key. Proxycurl is a paid API, and you would need to authenticate every request with a bearer token (your API key). You will also receive <strong>100 credits</strong> if you signed up with your work email, <strong>10 credits</strong> if you used personal email. Then you can start experimenting immediately! Here’s what your dashboard should look like.</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/10/Proxycurl-dashboard-1.jpg" class="kg-image" alt="Proxycurl dashboard where you can get your API key" loading="lazy" width="2000" height="1131"><figcaption><span style="white-space: pre-wrap;">Proxycurl dashboard where you can get your API key</span></figcaption></figure><p>From here, you can scroll down and choose to work with <a href="https://nubela.co/proxycurl/people-api?ref=nubela.co">Person Profile Endpoint</a> or the <a href="https://nubela.co/proxycurl/company-api?ref=nubela.co">Company Profile Endpoint</a>. The Person Profile Endpoint is a useful tool if you're looking to scrape Professional Social Network. Check out [How to Build a Professional Social Network Data Scraper](<a href="https://nubela.co/blog/how-to-build-a-Professional">https://nubela.co/blog/how-to-build-a-Professional</a> Social Network-data-scraper/) for further details.<br>
For this use case, we’ll just be working with the Company Profile Endpoint.</p>
<h3 id="step-2-run-postman-and-set-your-bearer-token">Step 2: Run Postman and set your bearer token</h3>
<p>Go to <a href="https://pxlcl.co/proxycurl-postman-collection?ref=nubela.co">Proxycurl's collection in Postman</a>, click on the Company Profile Endpoint doc and find the orange button that says "Run in Postman" and click it. Then click "Fork Collection" and log in however you like. It should look something like this. We have a full tutorial on <a href="https://nubela.co/blog/tutorial-to-test-proxycurl-apis-with-postman-beginners-guide/">how to set up Proxycurl API in Postman</a>.</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcynLmxv_xilq9mjeg-CfflUeQRycZ9LmVtGbnofSADZ61BJ_kuc-RwTzoIHtPJYNLRWbWWTV8ID7nrQMfzDNEeKRr07c78RaUfQrpJVEwZQMemxDsnlVUcHmEgMLLJLygBDkeTNRFBk4b4xSOuJ2NjC5Y?key=3kyG2jBGWleZ6m1_0vABVA" class="kg-image" alt="Setting up Proxycurl API in Postman" loading="lazy" width="1600" height="905"><figcaption><span style="white-space: pre-wrap;">Setting up Proxycurl API in Postman</span></figcaption></figure><p>Once you’re in Postman, go to Authorization, choose Bearer Token and add your token (your API Key) and limit it to Proxycurl. You can do this from the Variables tab or from the pop-up that appears when you start typing into the "Token" field. Name the token to your liking, or just go with the name, Bearer Token.</p>
<p>Verify that the Authorization type is set to "Bearer Token" and that you have typed {{Bearer Token}} into the Token field and click Save in the upper right-hand corner. <em>Remember to click Save!!</em> Your page should look like this:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfvC_3ei0sPFVYpl84jIu-8jDekEP1YH8zHnc97OeXpE3aaoSpCagcTLrtxSrQwA8HbAfq27R05VeZ2oyEDjW092RHSonrlaZawl_8e6pRrWDoEMFGESHFC5BxCD_TkJ4CHRcrzXubqi81SjzCnDqUK210?key=3kyG2jBGWleZ6m1_0vABVA" class="kg-image" alt="Add Bearer Token as the Authorization type" loading="lazy" width="1600" height="371"><figcaption><span style="white-space: pre-wrap;">Add Bearer Token as the Authorization type</span></figcaption></figure><h3 id="step-3-navigate-to-your-workspace">Step 3: Navigate to your workspace</h3>
<p>On the left-hand side, under "My workspace", go to your Proxycurl collection and then the Company API. You will find a list of options on the dropdown menu, but here’s what you will need to know:</p>
<ul>
<li><a href="https://nubela.co/proxycurl/company-api?ref=nubela.co">Company Profile Endpoint</a>: Enriches company profile with Crunchbase data like funding, acquisitions, etc. You will need to use the company’s Professional Social Network profile URL as input parameter to the API.</li>
<li><a href="https://nubela.co/proxycurl/docs?ref=nubela.co#company-api-company-lookup-endpoint">Company Lookup Endpoint</a>: Input a company’s website and get its Professional Social Network URL.</li>
<li><a href="https://nubela.co/proxycurl/docs?ref=nubela.co#search-api-company-search-endpoint">Company Search Endpoint</a>: Input various search parameters and find a list of companies that matches that search criteria, and then pull Crunchbase data for these companies.</li>
</ul>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdLHSPUp1Rox76urpfU55qri2yo1EGKUfHjYnTwTyWO9NSSbOJ7KvcwruhKDcSrQZQ_25H833tfSbyx1BA77fkx5JapRgvFUkQJxXv5GAh2JltEnnMcc0XaGR_TGU-ou7FFQIEnxPFV2kkt4QWVFnHBg3a2?key=3kyG2jBGWleZ6m1_0vABVA" class="kg-image" alt="The various company-related endpoints" loading="lazy" width="744" height="676"><figcaption><span style="white-space: pre-wrap;">The various company-related endpoints</span></figcaption></figure><h3 id="step-4-edit-your-params-and-send">Step 4: Edit your params and send!</h3>
<p>Go to Company Profile Endpoint and from there, you can uncheck some of the fields if you want or modify others. For instance, you might want to change <code>use_cache</code> from <code>if-present</code> to <code>if-recent</code> to get the most up-to-date info, but maybe you don't need the acquisitions information this time.</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdCjSyWAzdWkb-N-NL6iMkgAo-io8kGVkj2NGJeZhiSZWBjF5WfZEk_ICMNc_I9hlUTsG9F3MnjrUcFZV7aUVnfUvbaorNQ7a00Xy5HWPegSnvuFb39zxePQBvIQo4JeAO3Uq3hmmuBVL56e0X-6BEZAZ-4?key=3kyG2jBGWleZ6m1_0vABVA" class="kg-image" alt="Choose the relevant fields that you need. Some cost extra credits." loading="lazy" width="600" height="188"><figcaption><span style="white-space: pre-wrap;">Choose the relevant fields that you need. Some cost extra credits.</span></figcaption></figure><p>Once you've modified all the fields to your liking, click the blue "Send" button in the upper left-hand corner. Your output should look something like this.</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXe1OmI25157HHoN6KRy34j04uyIrPCsj1YMqMFBWfMC1cQCAP4_dnh_1ax_vUykMYKeeVaoTT0mmif6iPggsagI7Rdof0b2wJguw-BNXf91pBn1Hp-2m3bIzbPrkj4hGOrJymEyGSf1nQkKiE7LU_bDKCIC?key=3kyG2jBGWleZ6m1_0vABVA" class="kg-image" alt="Output from Proxycurl's Company Profile Endpoint" loading="lazy" width="1600" height="889"><figcaption><span style="white-space: pre-wrap;">Output from Proxycurl's Company Profile Endpoint</span></figcaption></figure><p>If you come across a 401 status code, it is most likely you forgot to hit Save after setting the Authorization type to {{Bearer Token}} in Step 2. A good way to troubleshoot this is to see if you can fix it by editing the Authorization tab for this specific query to be the {{Bearer Token}} variable. If that fixes it, then the auth inheritance isn't working, which probably means you forgot to save.</p>
<h2 id="crunchbase-scraping-with-proxycurl-via-python">Crunchbase scraping with Proxycurl via Python</h2>
<p>Now let’s try and do the same with Python. In the Proxycurl docs under <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#company-api-company-profile-endpoint">Company Profile Endpoint</a>, you can toggle between shell and Python. We’ll use the company endpoint to pull Crunchbase-related data, and it’s as simple as switching to Python in the API docs.</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXe83WwDPg5YVG7N8WH5tH-2gMmuHTVWT8x5Vnti0z0yIYwq91Tddu-G4WfAKNfR5sn8ta1g5tBC3m1x8K_i08P-OWdL83uz9pMjPR_WLZZn4Rvq-5aL1-YcoHYYbJ1elizVc2-gvPr92-f5hr4fws8iyS4?key=3kyG2jBGWleZ6m1_0vABVA" class="kg-image" alt="Toggle between shell and Python" loading="lazy" width="600" height="628"><figcaption><span style="white-space: pre-wrap;">Toggle between shell and Python</span></figcaption></figure><p>Now, we can paste in our API key where it says <code>YOUR_API_KEY</code>. Once we have everything set up, we can extract the JSON response and print it. Here’s the code for that, and you can make changes to it as needed:</p>
<pre><code class="language-python">import requests

api_key = 'YOUR_API_KEY'
headers = {'Authorization': 'Bearer ' + api_key}
api_endpoint = 'https://nubela.co/proxycurl/api/Professional Social Network/company'
params = {
    'url': 'https://www.professionalsocialnetwork.com/company/apple/',
    'categories': 'include',
    'funding_data': 'include',
    'exit_data': 'include',
    'acquisitions': 'include',
    'extra': 'include',
    'use_cache': 'if-present',
    'fallback_to_cache': 'on-error',
}

response = requests.get(api_endpoint, params=params, headers=headers)
print(response.json())
</code></pre>
<p>Now, what you get is a structured JSON response that includes all the fields that you have specified. Something like this:</p>
<pre><code class="language-python">"Professional Social Network_internal_id": "162479",
   "description": "We're a diverse collective of thinkers and doers, continually reimagining what's possible to help us all do what we love in new ways. And the same innovation that goes into our products also applies to our practices -- strengthening our commitment to leave the world better than we found it. This is where your work can make a difference in people's lives. Including your own.\n\nApple is an equal opportunity employer that is committed to inclusion and diversity. Visit apple.com/careers to learn more.",
   "website": "http://www.apple.com/careers",
   "industry": "Computers and Electronics Manufacturing",
   "company_size": [
       10001,
       null
   ],
   "company_size_on_Professional Social Network": 166869,
   "hq": {
       "country": "US",
       "city": "Cupertino",
       "postal_code": "95014",
       "line_1": "1 Apple Park Way",
       "is_hq": true,
       "state": "California"
   },
   "company_type": "PUBLIC_COMPANY",
   "founded_year": 1976,
   "specialities": [
       "Innovative Product Development",
       "World-Class Operations",
       "Retail",
       "Telephone Support"
   ],
   "locations": [
       {
           "country": "US",
           "city": "Cupertino",
           "postal_code": "95014",
           "line_1": "1 Apple Park Way",
           "is_hq": true,
           "state": "California"
        }
                 ]
...... //Remaining Data
}
</code></pre>
<p>Great! Congratulations on your journey from zero to data!</p>
<h2 id="is-any-of-this-legal">Is any of this legal?</h2>
<p>Yes, scraping Crunchbase is legal. The legality of scraping is based on different factors like the type of data, the website’s terms of service, data protection laws like GDPR, and much more. The idea is to scrape for <strong>publicly available data</strong> within these boundaries. Since Crunchbase only houses public data, it is absolutely legal to scrape by operating within the <a href="https://about.crunchbase.com/terms-of-service/?ref=nubela.co">Crunchbase Terms of Service</a>.</p>
<h2 id="final-thoughts">Final thoughts</h2>
<p>A DIY Crunchbase scraper can be an exciting project and gives you full control over the data extraction process. But be mindful of the challenges that come with it. Facing a roadblock in each step can make scraping a time-consuming and often fragile process that requires technical expertise and constant maintenance.</p>
<p>Proxycurl provides a simpler and more reliable alternative. Follow along with the steps and you can access structured company data through an API without worrying about any roadblocks. Dedicate your time by focusing on using the data and leave the hard work and worry to Proxycurl!</p>
<p>We'd love to hear from you! If you build something cool with our API, let us know at <a href="mailto:hello@nubela.co">hello@nubela.co</a>! And if you found this guide useful, there's more where it came from - sign up for our newsletter!</p>
 ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ Get Historical Employee Growth With Proxycurl&#x27;s Employee Count Endpoint ]]></title>
        <description><![CDATA[ We added a new feature to the Employee Count Endpoint: the `at_date` parameter, which will fetch historical employee count data of any company. Check out our docs. ]]></description>
        <link>https://nubela.co/blog/historical-employee-growth-with-employee-count-endpoint/</link>
        <guid isPermaLink="false">66f60e685ad68b0001185e7f</guid>
        <category><![CDATA[ proxycurl ]]></category>
        <dc:creator><![CDATA[ Steven Goh | CEO ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2019/05/square.jpg"/>
        <pubDate>Tue, 08 Oct 2024 15:11:49 +0800</pubDate>
        <media:content url="" medium="image"/>
        <content:encoded><![CDATA[ <p>I am excited to introduce you to the new <code>at_date</code> parameter to the Employee Count Endpoint, which will allow you to fetch historical employee count data of <em>any</em> company. Effectively, you will be able to build historical employee growth charts like this:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/10/NVIDIA-employee-growth-chart.jpg" class="kg-image" alt="NVIDIA historical employee growth chart" loading="lazy" width="1540" height="943"><figcaption><span style="white-space: pre-wrap;">Nvidia's employee growth trajectory over the past 4 years</span></figcaption></figure><p>Or employee count in tables like such:</p>
<table>
<thead>
<tr>
<th>Date</th>
<th>Professional Social Network Employee Count</th>
</tr>
</thead>
<tbody>
<tr>
<td>2022-12-01</td>
<td>31008</td>
</tr>
<tr>
<td>2023-01-01</td>
<td>31157</td>
</tr>
<tr>
<td>2023-02-01</td>
<td>31238</td>
</tr>
<tr>
<td>2023-03-01</td>
<td>31233</td>
</tr>
<tr>
<td>2023-04-01</td>
<td>31231</td>
</tr>
<tr>
<td>2023-05-01</td>
<td>31391</td>
</tr>
<tr>
<td>2023-06-01</td>
<td>31532</td>
</tr>
<tr>
<td>2023-07-01</td>
<td>31701</td>
</tr>
<tr>
<td>2023-08-01</td>
<td>31774</td>
</tr>
<tr>
<td>2023-09-01</td>
<td>31959</td>
</tr>
<tr>
<td>2023-10-01</td>
<td>32203</td>
</tr>
<tr>
<td>2023-11-01</td>
<td>32409</td>
</tr>
<tr>
<td>2023-12-01</td>
<td>32603</td>
</tr>
<tr>
<td>2024-01-01</td>
<td>33081</td>
</tr>
<tr>
<td>2024-02-01</td>
<td>33307</td>
</tr>
<tr>
<td>2024-03-01</td>
<td>33532</td>
</tr>
<tr>
<td>2024-04-01</td>
<td>33755</td>
</tr>
<tr>
<td>2024-05-01</td>
<td>34160</td>
</tr>
<tr>
<td>2024-06-01</td>
<td>34429</td>
</tr>
<tr>
<td>2024-07-01</td>
<td>34550</td>
</tr>
<tr>
<td>2024-08-01</td>
<td>34577</td>
</tr>
<tr>
<td>2024-09-01</td>
<td>34496</td>
</tr>
</tbody>
</table>
<p>For more information, see the API documentation for the <code>at_date</code> parameter for the <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#company-api-employee-count-endpoint">Employee Count Endpoint</a>.</p>
<h2 id="how-to-use-the-atdate-parameter">How To Use The <code>at_date</code> Parameter?</h2>
<p>Effectively, the <code>at_date</code> parameter lets you time travel into the past with a date with the ISO8601 representation of <code>YYYY-MM-DD</code>.</p>
<p>For example, this is how you can get Nvidia's employee count in September 2024:</p>
<pre><code class="language-python">curl \
  -G \
  -H "Authorization: Bearer ${YOUR_API_KEY}" \
  'https://nubela.co/proxycurl/api/Professional Social Network/company/employees/count' \
  --data-urlencode 'url=https://www.professionalsocialnetwork.com/company/nvidia/' \
  --data-urlencode 'Professional Social Network_employee_count=include' \
  --data-urlencode 'at_date=2024-09-01' \
  --data-urlencode 'employment_status=current'
</code></pre>
<p>Note the <code>at_date=2024-09-01</code> parameter.</p>
<p>The response of this will be:</p>
<pre><code class="language-json">{
  "total_employee": 21854,
  "Professional Social Network_employee_count": 35023,
  "linkdb_employee_count": 21854
}
</code></pre>
<p>You will see that there are 2 employee counts under 2 similar looking labels, which might seem a bit confusing. Let me clarify:</p>
<ul>
<li><code>Professional Social Network_employee_count</code>: The employee count of this company from <em>its Professional Social Network profile</em> at the stated <code>at_date</code>.</li>
<li><code>linkdb_employee_count</code>: The total number of employees found in LinkDB for this company at the stated <code>at_date</code>. This value is limited by pre-crawled Professional Social Network profiles stored in <a href="https://nubela.co/proxycurl/linkdb?ref=nubela.co">LinkDB</a>.</li>
</ul>
<p><strong>In general, you will want to use the</strong> <code>Professional Social Network_employee_count</code> value.</p>
<hr>
<p>Similarly, to fetch the employee count for August 2024, all we have to do is to replace the <code>at_date</code> parameter with a new date: <code>at_date=2024-08-01</code> parameter, like this:</p>
<pre><code class="language-python">curl \
  -G \
  -H "Authorization: Bearer ${YOUR_API_KEY}" \
  'https://nubela.co/proxycurl/api/Professional Social Network/company/employees/count' \
  --data-urlencode 'url=https://www.professionalsocialnetwork.com/company/nvidia/' \
  --data-urlencode 'Professional Social Network_employee_count=include' \
  --data-urlencode 'at_date=2024-08-01' \
  --data-urlencode 'employment_status=current'
</code></pre>
<h2 id="historical-employee-growth-as-an-investment-signal">Historical Employee Growth As An Investment Signal</h2>
<p>Historical employee growth data is a great way to judge a company's past performance, and hence a <a href="https://nubela.co/proxycurl/solutions/alternative-data-for-investment-firms?ref=nubela.co">great investment signal</a>. A company which is growing very fast is a good proxy for how fast they are growing in revenue; or if they had just raised a venture capital round.</p>
<p>The only quirk is that historical employee count data is a backwards looking metric. If you are seeking a forward looking metric, we have a <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#jobs-api-jobs-listing-count-endpoint">Job Listing Count API Endpoint</a>, which lets you identify how many open job posts there are for a given company. The total job post count is a good proxy for how fast a company might grow in the very near future.</p>
<h2 id="how-does-it-work">How does it work?</h2>
<p>In March 2023, we built a prototype to [count employees via historical snapshots](<a href="https://nubela.co/blog/using-proxycurls-historic-Professional">https://nubela.co/blog/using-proxycurls-historic-Professional</a> Social Network-employee-count-tool-for-investment-research/) and wrote a blog post about it while <a href="https://github.com/nubelaco/historic-employee-count-tool?ref=nubela.co">open sourcing the code</a> which leverages Proxycurl API as the data backend. It has proven to work extremely well, but the raw cost of Proxycurl primitive API endpoints makes it prohibitively expensive. It will cost tens if not hundreds of dollars per company to get a full historical employee count snapshot of any company.</p>
<p>The way the time travel feature is made possible via the introduction of the <code>at_date</code> parameter, is that it uses Proxycurl's APIs to scrape employee information from Professional Social Network, calculating employee trends by leveraging historical snapshots and employee profiles. For more details, you can refer to the full article about the [historical employee count tool that we built here](<a href="https://nubela.co/blog/using-proxycurls-historic-Professional">https://nubela.co/blog/using-proxycurls-historic-Professional</a> Social Network-employee-count-tool-for-investment-research/).</p>
<h2 id="how-much-does-it-cost">How much does it cost?</h2>
<p>The <code>at_date</code> parameter will cost <code>1</code> extra credit on top of the base cost of the endpoint for users on the <a href="https://nubela.co/proxycurl/pricing?ref=nubela.co">Growth or larger subscription</a>. For all other users, it will cost <code>5</code> extra credits.</p>
<p>If you are not already on our subscription plan, do consider upgrading! You will see <a href="https://nubela.co/blog/announcement-new-annual-plans-and-pricing-updates-2024/">everything on Proxycurl start to become cheaper</a>.</p>
<h2 id="questions">Questions?</h2>
<p>Should you have any questions about time travelling into the past via the <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#company-api-employee-count-endpoint">Employee Count Endpoint</a> and fetching the historical employee count, shoot me an email at <a href="mailto:hello@nubela.co">hello@nubela.co</a> !</p>
 ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ Build a Lusha Sales Prospecting Clone with NextJS, Tailwind &amp; Proxycurl ]]></title>
        <description><![CDATA[ I built a minimal clone of Lusha&#39;s sales prospecting feature using NextJS, Tailwind CSS, and Proxycurl. Here you&#39;ll get a step-by-step guide with full codebase, paired with a working demo to replicate Lusha&#39;s prospect search feature, search Professional Social Network profiles, export data to CSV, a ]]></description>
        <link>https://nubela.co/blog/build-a-lusha-sales-prospecting-clone-with-nextjs-tailwind-proxycurl/</link>
        <guid isPermaLink="false">66ff5f4a5ad68b00011860eb</guid>
        <category><![CDATA[ proxycurl ]]></category>
        <dc:creator><![CDATA[ Zeha Irawan | Senior Marketing Dev ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/10/zz.jpeg"/>
        <pubDate>Mon, 07 Oct 2024 16:23:00 +0800</pubDate>
        <media:content url="" medium="image"/>
        <content:encoded><![CDATA[ <p>I built a minimal clone of Lusha's sales prospecting feature, and in this article you'll get to see exactly how I did that:</p><ul><li>Where to get the data for the clone</li><li>Build the search &amp; filter functions based on various person's parameters</li><li>Cache past searches</li><li>How to build the UI</li><li>And more</li></ul><p>At the very end of it, I appended the full code for this clone, which you can use it straight away to build your own Lusha sales prospecting minimal clone to get that <a href="https://nubela.co/blog/i-cold-emailed-our-way-to-1m-arr-in-18-months-heres-the-story/">$1M ARR in 18 months</a>.</p><p>Enough talking, let's get to it.</p><p><a href="https://lusha-clone-by-procxycurl.vercel.app/?ref=nubela.co">Access the demo clone here</a>.</p><p>How it will look like with a list of profiles returned:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/10/people-prospector-1.png" class="kg-image" alt="A list of CFOs based on search input on the left" loading="lazy" width="2734" height="1576"><figcaption><span style="white-space: pre-wrap;">You get a list of CFOs based on your search input on the left</span></figcaption></figure><p><br><br>Here is a quick sneak peek of the whole thing:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/10/62473d246fecdad923269ca0_You-Belong-In-Tech-Product-Design.gif" class="kg-image" alt="The full GIF tour of Lusha sales prospecting clone by Proxycurl" loading="lazy" width="500" height="327"><figcaption><span style="white-space: pre-wrap;">A close-to fully functioning prospector with filters based on location, role and company</span></figcaption></figure><h2 id="features-of-the-lusha-sales-prospecting-clone">Features of the Lusha sales prospecting clone</h2><p>This is the feature of Lusha that I cloned, their prospect search feature:<br></p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/10/lusha.png" class="kg-image" alt="Lusha's sales prospect search image on homepage" loading="lazy" width="1380" height="862"><figcaption><span style="white-space: pre-wrap;"> This is the Lusha's prospect search feature I'm cloning. Source: Lusha homepage</span></figcaption></figure><p>The clone won't have all the filters you see on the left above, because that'll be as good as building a full SaaS tool already. Nevertheless, the clone is still comprehensive enough that your end users can use.</p><p>The app will have the following features</p><ul><li>Search Professional Social Network profiles with country, job title and company</li><li>Export Professional Social Network profiles to CSV</li><li>Save last 10 queries to recent searches in local storage</li><li>Save API key to local storage</li><li>View details modal to display person experiences &amp; education</li></ul><h2 id="prerequisites">Prerequisites</h2><p>You'll need these to get started:</p><ul><li>Node v18+</li><li>A Proxycurl account - this is where you'll get the data to populate the app</li><li>Basic knowledge of React.js &amp; Next.js</li><li>Basic knowledge of Tailwind CSS</li></ul><p>Now, let's get building.</p><h2 id="register-for-a-proxycurl-account">Register for a Proxycurl account</h2><p><a href="https://proxycurl.com/?ref=nubela.co">Proxycurl</a> is a data enrichment company offering APIs that pull various data such as person data, company data, contact info, and more. Users raved about the ease of use - the ability to pull data from the getgo with just the API key - and the data freshness.</p><p>For the same reasons, it is the data enrichment tool that I'm using to feed into the Lusha sales prospecting clone <em>(and of course the fact that I'm from Proxycurl)</em>.</p><ol><li><a href="https://nubela.co/proxycurl/auth/register?ref=nubela.co">Register for an account here</a></li><li>Get <strong>100 free credits</strong> if you sign up with a work email, or <strong>10 credits</strong> for personal email</li><li><a href="https://nubela.co/proxycurl/dashboard/proxycurl-api/api-key/?ref=nubela.co">Get your API key in the dashbord here</a></li></ol><h2 id="create-a-new-nextjs-project">Create a new Next.js project</h2><pre><code class="language-bash">npx create-next-app@latest hursa
cd hursa &amp;&amp; npm run dev
</code></pre><p>Make sure to enable Tailwind CSS, the rest of the Next.js options is up to your preference.</p><p>Let's start by building the tabs, to save time I'll use <a href="https://ui.shadcn.com/docs/components/tabs?ref=nubela.co">shadcn components, here</a>.</p><p>And for the icons let's use React Icons.</p><pre><code class="language-bash">npx shadcn@latest add tabs button input accordion checkbox dialog
npm install react-icons --save
</code></pre><p>Then modify <code>app/page.js</code> to:</p><pre><code class="language-jsx">"use client";
import { Tabs, TabsList, TabsTrigger, TabsContent } from "@/components/ui/tabs";
import { BsPeopleFill, BsBuildingsFill } from "react-icons/bs";
import { Button } from "@/components/ui/button";
import PeopleFilter from "@/components/PeopleFilter";
import { useState } from "react";

export default function Home() {
  const [peoplePayload, setPeoplePayload] = useState(
    {
      country: "",
      current_role: "",
      current_company_name: "",
    }
  );

  return (
    &lt;div className="p-8 bg-gray-200 min-h-full"&gt;
      &lt;Tabs defaultValue="people" className="max-w-7xl mx-auto relative"&gt;
        &lt;TabsList&gt;
          &lt;TabsTrigger
            value="people"
            className="flex items-center gap-2 flex-grow-0"
          &gt;
            &lt;BsPeopleFill /&gt;
            People
          &lt;/TabsTrigger&gt;
          &lt;TabsTrigger
            value="company"
            className="flex items-center gap-2 flex-grow-0"
          &gt;
            &lt;BsBuildingsFill /&gt;
            Companies
          &lt;/TabsTrigger&gt;
        &lt;/TabsList&gt;
        &lt;div className="absolute right-0 top-0 flex gap-6"&gt;
          &lt;Button className="flex items-center gap-2 bg-blue-600 text-white px-4 rounded-md py-2 disabled:opacity-50 font-semibold"&gt;
            Settings
          &lt;/Button&gt;
          &lt;Button className="flex items-center gap-2 bg-white text-blue-600 px-4 rounded-md py-2 disabled:opacity-50 font-semibold"&gt;
            Recent Searches
          &lt;/Button&gt;
          &lt;Button className="flex items-center gap-2 bg-blue-600 text-white px-4 rounded-md py-2 disabled:opacity-50 font-semibold"&gt;
            Export to CSV
          &lt;/Button&gt;
        &lt;/div&gt;

        &lt;TabsContent value="people" className="w-full mt-6 min-h-56"&gt;
          &lt;div className="flex gap-6"&gt;
            &lt;div className="w-1/4 bg-white rounded-lg p-4"&gt;
              &lt;h3 className="font-bold"&gt;Filters&lt;/h3&gt;
            &lt;/div&gt;
            &lt;div className="w-3/4 bg-white rounded-lg p-4"&gt;
              &lt;h3 className="font-bold"&gt;People profiles results&lt;/h3&gt;
            &lt;/div&gt;
          &lt;/div&gt;
        &lt;/TabsContent&gt;
        &lt;TabsContent value="company" className="w-full mt-6"&gt;
          &lt;div className="flex gap-6"&gt;
            &lt;div className="w-1/4 bg-white rounded-lg p-4"&gt;
              &lt;h3 className="font-bold"&gt;Filters&lt;/h3&gt;
            &lt;/div&gt;
            &lt;div className="w-3/4 bg-white rounded-lg p-4"&gt;
              &lt;h3 className="font-bold"&gt;Company profiles results&lt;/h3&gt;
            &lt;/div&gt;
          &lt;/div&gt;
        &lt;/TabsContent&gt;
      &lt;/Tabs&gt;
    &lt;/div&gt;
  );
}
</code></pre><p>You should now be able to see:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/10/filter.png" class="kg-image" alt="Building the necessary modals of the sales prospecting Lusha clone" loading="lazy" width="1798" height="668"><figcaption><span style="white-space: pre-wrap;">First step down.</span></figcaption></figure><h2 id="building-filters-for-people-prospector">Building filters for people prospector</h2><p>Instead of <a href="https://nubela.co/blog/build-a-lusha-sales-prospecting-clone-with-nextjs-tailwind-proxycurl/#features-of-the-lusha-sales-prospecting-clone" rel="noreferrer">building a full Lusha app</a> with all possible filters, for this clone I'm using only these 3 parameters for now:</p><ol><li><code>country</code>, which we will label as <code>Location</code></li><li><code>current_role_title</code>, which we will label as <code>Job title</code></li><li><code>current_company_name</code>, which we will label as <code>Current Company</code></li></ol><p>These are parameters available with <a href="https://nubela.co/proxycurl/search-api?ref=nubela.co">Proxycurl's Person Search API</a>, which we're using to build the search function for the clone. The Person Search API has other parameters too, such as <code>Professional Social Network_groups</code>, <code>skills</code>, <code>past_company_name</code> and many more. You can read more about it <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#search-api-person-search-endpoint">in the docs here</a>.</p><h3 id="implementing-people-filter-component">Implementing people filter component</h3><p>To make filter UI cleaner we will use accordion instead of multiple input field displayed at once.</p><p>Create <code>components/PeopleFilter.jsx</code>:</p><pre><code class="language-jsx">import React from "react";
import {
  Accordion,
  AccordionContent,
  AccordionItem,
  AccordionTrigger,
} from "@/components/ui/accordion";
import { IoMdBriefcase } from "react-icons/io";
import { FaBuilding } from "react-icons/fa";
import { IoLocationSharp } from "react-icons/io5";
import { Button } from "@/components/ui/button";
import { Input } from "@/components/ui/input";

const PeopleFilter = ({ payload, setPayload }) =&gt; {
  return (
    &lt;div&gt;
      &lt;h3 className="font-bold"&gt;Filters&lt;/h3&gt;
      &lt;Accordion type="single" collapsible&gt;
        &lt;AccordionItem value="country"&gt;
          &lt;AccordionTrigger className="flex justify-start gap-2"&gt;
            &lt;IoLocationSharp
              style={{ transform: "rotate(0deg)" }}
              className="h-5 w-5  text-blue-600 inline-block"
            /&gt;
            &lt;span className="text-lg font-bold"&gt;Location&lt;/span&gt;
          &lt;/AccordionTrigger&gt;
          &lt;AccordionContent&gt;
            {/* Autocomplete component here */}
          &lt;/AccordionContent&gt;
        &lt;/AccordionItem&gt;

        &lt;AccordionItem value="current-role"&gt;
          &lt;AccordionTrigger className="flex justify-start gap-2"&gt;
            &lt;IoMdBriefcase
              style={{ transform: "rotate(0deg)" }}
              className="h-5 w-5  text-blue-600 inline-block"
            /&gt;
            &lt;span className="text-lg font-bold"&gt;Job Title&lt;/span&gt;
          &lt;/AccordionTrigger&gt;
          &lt;AccordionContent&gt;
            &lt;Input
              type="text"
              placeholder="Software Engineer"
              className="border border-gray-300 rounded-md p-2"
              value={payload.current_role_title}
              onChange={(e) =&gt;
                setPayload({ ...payload, current_role_title: e.target.value })
              }
            /&gt;
          &lt;/AccordionContent&gt;
        &lt;/AccordionItem&gt;

        &lt;AccordionItem value="current-company"&gt;
          &lt;AccordionTrigger className="flex justify-start gap-2"&gt;
            &lt;FaBuilding
              style={{ transform: "rotate(0deg)" }}
              className="h-5 w-5  text-blue-600 inline-block"
            /&gt;
            &lt;span className="text-lg font-bold"&gt;Current Company&lt;/span&gt;
          &lt;/AccordionTrigger&gt;
          &lt;AccordionContent&gt;
            &lt;Input
              type="text"
              placeholder="Current Company"
              className="border border-gray-300 rounded-md p-2"
              value={payload.current_company_name}
              onChange={(e) =&gt;
                setPayload({ ...payload, current_company_name: e.target.value })
              }
            /&gt;
          &lt;/AccordionContent&gt;
        &lt;/AccordionItem&gt;

        &lt;div className="flex justify-center"&gt;
          &lt;Button
            className="w-full mt-4 bg-blue-600 text-white text-md font-semibold"
          &gt;
            Apply
          &lt;/Button&gt;
        &lt;/div&gt;
      &lt;/Accordion&gt;
    &lt;/div&gt;
  );
};

export default PeopleFilter;
</code></pre><p>And then in <code>app/page.js</code>:</p><pre><code class="language-jsx">import PeopleFilter from "@/components/PeopleFilter";
import { useState } from "react"

const [peoplePayload, setPeoplePayload] = useState({
  country: "",
  current_role: "",
  current_company_name: "",
});

const [peopleResults, setPeopleResults] = useState([]);

// and then inside people tab
// replace &lt;h3 className="font-bold"&gt;Filters&lt;/h3&gt; with
&lt;PeopleFilter payload={peoplePayload} setPayload={setPeoplePayload} /&gt;
</code></pre><p>Now you have the filters built:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/10/filter-component-1.png" class="kg-image" alt="Filters built for the Lusha's sales prospecting clone" loading="lazy" width="2000" height="750"><figcaption><span style="white-space: pre-wrap;">Filters - done.</span></figcaption></figure><h3 id="country-iso-autocomplete-component">Country ISO Autocomplete component</h3><p>To deliver the best UX for the user, instead of select element with a long list of countries we will be building custom autocomplete for the location.</p><p>First we need this json for the option <code>lib/countryISO.json</code>:</p><pre><code class="language-json">[
  { "value": "AD", "label": "Andorra" },
  { "value": "AE", "label": "United Arab Emirates" },
  { "value": "AF", "label": "Afghanistan" },
]
</code></pre><p>Rest of the json is available here <a href="https://github.com/nubelaco/use-case-examples/blob/main/people-prospector/lib/countryISO.json?ref=nubela.co" rel="noreferrer">on our GitHub repo</a>.</p><p>Create <code>components/Autocomplete.jsx</code>:</p><pre><code class="language-jsx">import React, { useState, useRef, useEffect } from 'react';
import options from '../lib/countryISO.json';
import { Input } from '@/components/ui/input';

const AutoComplete = ({ setSelectedOption }) =&gt; {
    const [inputValue, setInputValue] = useState('');
    const [filteredOptions, setFilteredOptions] = useState([]);;
    const dropdownRef = useRef(null); 

    const handleChange = (e) =&gt; {
        const value = e.target.value;
        setInputValue(value);
        setFilteredOptions(options.filter(option =&gt; option.label.toLowerCase().includes(value.toLowerCase())));
    };

    const handleSelect = (option) =&gt; {
        setSelectedOption(option.label);
        setInputValue(option.label);
        setFilteredOptions([]);
    };

    const handleClickOutside = (event) =&gt; {
        if (dropdownRef.current &amp;&amp; !dropdownRef.current.contains(event.target)) {
            setFilteredOptions([]);
        }
    };

    useEffect(() =&gt; {
        document.addEventListener('mousedown', handleClickOutside);
        return () =&gt; {
            document.removeEventListener('mousedown', handleClickOutside);
        };
    }, []);

    return (
        &lt;div className="relative" ref={dropdownRef}&gt;
            &lt;Input
                type="text" 
                value={inputValue} 
                onChange={handleChange} 
                placeholder="United States" 
                className="border border-gray-300 rounded p-2 w-full mt-6"
            /&gt;
            {filteredOptions.length &gt; 0 &amp;&amp; (
                &lt;ul className="relative bg-white border border-gray-300 rounded mt-1 w-full z-10  max-h-40 overflow-y-auto"&gt; 
                    {filteredOptions.map((option, index) =&gt; (
                        &lt;li 
                            key={index} 
                            onClick={() =&gt; handleSelect(option)} 
                            className="p-2 hover:bg-gray-200 cursor-pointer z-50"
                        &gt;
                            {option.label} 
                        &lt;/li&gt;
                    ))}
                &lt;/ul&gt;
            )}
        &lt;/div&gt;
    );
};

export default AutoComplete;
</code></pre><p>And then import it into the <code>components/PeopleFilter.jsx</code>:</p><pre><code class="language-jsx">import AutoComplete from "./AutoComplete";
// ...existing code
// replace  {/* Autocomplete component here */}
&lt;AutoComplete setSelectedOption={(value) =&gt; setPayload({ ...payload, country: value })} /&gt;

</code></pre><p>Now there'll be a dropdown list of countries relevant to what the users are inputting. A much better UX:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/10/autocomplete.png" class="kg-image" alt="Countries dropdown for the filter of Lusha's sales prospecting clone" loading="lazy" width="1804" height="1250"><figcaption><span style="white-space: pre-wrap;">We don't just build things that work, we build things that are nice to use too.</span></figcaption></figure><h2 id="building-the-people-result-component">Building the people result component</h2><p>Let's mock the result from and call it <code>personSearchMock.json</code> in <code>lib/</code> directory so we can start building the UI.</p><p>You can get it from the sample response in our <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#search-api-person-search-endpoint">Person Search Endpoint docs</a> or <a href="https://github.com/nubelaco?ref=nubela.co">from our GitHub repo</a>.</p><pre><code class="language-jsx">import mockPersonSearch from "@/lib/personSearchMock.json";

const [peopleResults, setPeopleResults] = useState(mockPersonSearch.results);
// ...rest of code and then replace 
//  &lt;h3 className="font-bold"&gt;People profiles results&lt;/h3&gt; with
 &lt;PeopleResult results={peopleResults} /&gt;
</code></pre><p>Now create <code>components/PeopleResult.jsx</code>:</p><pre><code class="language-jsx">import React from "react";
import { FaProfessional Social Network } from "react-icons/fa";
import { IoLocationSharp } from "react-icons/io5";
import { Checkbox } from "@radix-ui/react-checkbox";
import Link from "next/link";
import { Button } from "@/components/ui/button";

const PeopleResult = ({ results, selectedPeople, setSelectedPeople }) =&gt; {
  return (
    &lt;div&gt;
      {results.map((person) =&gt; {
        return (
          &lt;div
            key={person.profile.public_identifier}
            className="flex border-b-2 border-gray-200 py-4"
          &gt;
            &lt;Checkbox
              className="mr-6 self-center"
              checked={selectedPeople.includes(person)}
              onCheckedChange={(checked) =&gt; {
                if (checked) {
                  setSelectedPeople([...selectedPeople, person]);
                } else {
                  setSelectedPeople(
                    selectedPeople.filter(
                      (p) =&gt;
                        p.profile.public_identifier !==
                        person.profile.public_identifier,
                    ),
                  );
                }
              }}
            /&gt;
            &lt;div className="flex flex-col border-r-2 border-gray-200 w-[400px] truncate pr-4"&gt;
              &lt;div className="flex items-center gap-2 flex-0"&gt;
                &lt;a
                  className="text-black block text-md font-semibold"
                  href={person.Professional Social Network_profile_url}
                  target="_blank"
                  rel="noopener noreferrer"
                &gt;
                  {person.profile.full_name}
                &lt;/a&gt;
                &lt;FaProfessional Social Network className="text-blue-600" /&gt;
              &lt;/div&gt;
              &lt;p className="text-sm"&gt;{person.profile.experiences[0].title}&lt;/p&gt;
              &lt;div className="flex items-center gap-2 mt-2"&gt;
                &lt;IoLocationSharp className="text-gray-500" /&gt;
                &lt;span className="text-gray-500 text-sm"&gt;{`${person.profile.city}, ${person.profile.state}, ${person.profile.country}`}&lt;/span&gt;
              &lt;/div&gt;
            &lt;/div&gt;

            &lt;div className="w-[300px] truncate px-4"&gt;
              {person.profile.experiences[0].company_Professional Social Network_profile_url ? (
                &lt;Link
                  href={
                    person.profile.experiences[0].company_Professional Social Network_profile_url
                  }
                  target="_blank"
                  rel="noopener noreferrer"
                &gt;
                  &lt;span className="text-blue-600 text-sm font-semibold"&gt;
                    {person.profile.experiences[0].company}
                  &lt;/span&gt;
                &lt;/Link&gt;
              ) : (
                &lt;span className="text-sm font-semibold"&gt;
                  {person.profile.experiences[0].company}
                &lt;/span&gt;
              )}

              {person.profile.experiences[0].location ? (
                &lt;span className="block text-sm text-gray-500 "&gt;
                  {person.profile.experiences[0].location}
                &lt;/span&gt;
              ) : null}
            &lt;/div&gt;

            &lt;div className="ml-auto"&gt;
              &lt;Button
                // onClick={() =&gt; handleViewDetails(person)}
                className="border-2 border-blue-600 bg-white text-blue-600 px-4 py-2 rounded-md hover:text-white"
              &gt;
                View Details
              &lt;/Button&gt;
            &lt;/div&gt;
          &lt;/div&gt;
        );
      })}
    &lt;/div&gt;
  );
};

export default PeopleResult;
</code></pre><p>Tada! Now you get a person profile in the result modal.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/10/result.png" class="kg-image" alt="Results modal for the Lusha sales prospecting clone." loading="lazy" width="2000" height="567"><figcaption><span style="white-space: pre-wrap;">The first result now shown!</span></figcaption></figure><p>Next, let's build the modal component that shows experiences &amp; educations when the "View Details" button is clicked.</p><p><code>components/Modal.jsx</code></p><pre><code class="language-jsx">import React from "react";
import {
  Dialog,
  DialogContent,
  DialogDescription,
  DialogHeader,
  DialogTitle,
  DialogTrigger,
} from "@/components/ui/dialog";

const Modal = ({ isOpen, setIsOpen, viewDetails }) =&gt; {
  if (!viewDetails) return null;
  return (
    &lt;Dialog open={isOpen} onOpenChange={setIsOpen}&gt;
      &lt;DialogContent className="max-w-5xl"&gt;
        &lt;DialogTitle&gt;
          &lt;span className="truncate"&gt;{`${viewDetails.profile.full_name} - ${viewDetails.profile?.headline}`}&lt;/span&gt;
        &lt;/DialogTitle&gt;
        &lt;DialogHeader&gt;
          &lt;DialogDescription&gt;
            &lt;span className="truncate text-sm"&gt;
              &lt;span&gt;
                {viewDetails.profile.city &amp;&amp; viewDetails.profile.city}
              &lt;/span&gt;
              &lt;span&gt;
                {viewDetails.profile.state &amp;&amp; `, ${viewDetails.profile.state}`}
              &lt;/span&gt;
              &lt;span&gt;
                {viewDetails.profile.country &amp;&amp;
                  `, ${viewDetails.profile.country}`}
              &lt;/span&gt;
            &lt;/span&gt;

            {viewDetails.profile.experiences.length &gt; 0 &amp;&amp; (
              &lt;&gt;
                &lt;h2 className="text-lg font-bold mt-6 mb-2"&gt;Experiences&lt;/h2&gt;

                &lt;div className="flex flex-col gap-2"&gt;
                  {viewDetails.profile.experiences.map((experience, index) =&gt; (
                    &lt;div key={experience.title}&gt;
                      &lt;span
                        key={index}
                        className="block text-sm text-gray-600 font-semibold"
                      &gt;{`${experience.title} at ${experience.company}`}&lt;/span&gt;
                      &lt;span className="block text-sm text-gray-500"&gt;
                        {experience.starts_at?.day &amp;&amp;
                          `${experience.starts_at.day}/${experience.starts_at.month}/${experience.starts_at.year} - `}

                        {experience.ends_at?.day
                          ? `${experience.ends_at.day}/${experience.ends_at.month}/${experience.ends_at.year}`
                          : "Present"}
                      &lt;/span&gt;
                    &lt;/div&gt;
                  ))}
                &lt;/div&gt;
              &lt;/&gt;
            )}

            {viewDetails.profile.education.length &gt; 0 &amp;&amp; (
              &lt;&gt;
                &lt;h2 className="text-lg font-bold mt-6 mb-2"&gt;Education&lt;/h2&gt;
                &lt;div className="flex flex-col gap-2"&gt;
                  {viewDetails.profile.education.map((education, index) =&gt; (
                    &lt;div key={education.degree_name}&gt;
                      &lt;span
                        key={index}
                        className="block text-sm text-gray-600 font-semibold"
                      &gt;{`${education.degree_name} in ${education.field_of_study} at ${education.school}`}&lt;/span&gt;
                      &lt;span className="block text-sm text-gray-500"&gt;
                        {education.starts_at?.day &amp;&amp;
                          `${education.starts_at.day}/${education.starts_at.month}/${education.starts_at.year} - `}

                        {education.ends_at?.day
                          ? `${education.ends_at.day}/${education.ends_at.month}/${education.ends_at.year}`
                          : "Present"}
                      &lt;/span&gt;
                    &lt;/div&gt;
                  ))}
                &lt;/div&gt;
              &lt;/&gt;
            )}
          &lt;/DialogDescription&gt;
        &lt;/DialogHeader&gt;
      &lt;/DialogContent&gt;
    &lt;/Dialog&gt;
  );
};

export default Modal;

</code></pre><p>And then modify <code>components/PeopleResult.jsx</code>:</p><pre><code class="language-jsx">import Modal from "./Modal";

  const [isModalOpen, setIsModalOpen] = useState(false);
  const [viewDetails, setViewDetails] = useState(null);

  const handleViewDetails = (person) =&gt; {
    setViewDetails(person);
    setIsModalOpen(true);
  };

// ... existing code
  &lt;Button
                onClick={() =&gt; handleViewDetails(person)}
                className="border-2 border-blue-600 bg-white text-blue-600 px-4 py-2 rounded-md hover:text-white"
              &gt;
                View Details
              &lt;/Button&gt;
// ... existing code

  &lt;Modal
        isOpen={isModalOpen}
        setIsOpen={setIsModalOpen}
        viewDetails={viewDetails}
      /&gt;
    &lt;/div&gt;

</code></pre><p>This is the result with experiences and education shown:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/10/modal.png" class="kg-image" alt="Full results - with experiences and education for the Lusha sales prospecting clone" loading="lazy" width="2040" height="788"><figcaption><span style="white-space: pre-wrap;">Full results - with experiences and education</span></figcaption></figure><p>Now to prepare for the fetching of data from Proxycurl's API, let's create a loader while we wait for the response.</p><p>Create this file<code>components/Loader.jsx</code>:</p><pre><code class="language-jsx">import React from 'react'

const Loader = () =&gt; {
  return (
    &lt;div className="flex flex-col justify-center items-center h-screen"&gt;
      &lt;div className="animate-spin rounded-full h-32 w-32 border-t-4 border-b-4 border-blue-600"&gt;&lt;/div&gt;
      &lt;div className="text-2xl font-bold mt-6"&gt;Loading...&lt;/div&gt;
    &lt;/div&gt;
  );
}

export default Loader;
</code></pre><p>And then modify <code>app/page.js</code>:</p><pre><code class="language-jsx"> const [isLoading, setIsLoading] = useState(true);

//...existing code
&lt;div className="w-3/4 bg-white rounded-lg p-4"&gt;
  {isLoading &amp;&amp; &lt;Loader /&gt;}
  {!isLoading &amp;&amp; (
    &lt;&gt;
      &lt;h3 className="font-bold"&gt;People profiles results&lt;/h3&gt;
      &lt;PeopleResult
        results={peopleResults}
        selectedPeople={selectedPeople}
        setSelectedPeople={setSelectedPeople}
      /&gt;
    &lt;/&gt;
  )}
&lt;/div&gt;
</code></pre><p>Now, you get this beautiful spinning thing that users see while they wait for the results to load:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/10/loader.gif" class="kg-image" alt="Loader for the Lusha sales prospecting clone" loading="lazy" width="1080" height="530"><figcaption><span style="white-space: pre-wrap;">Another great UX implementation.</span></figcaption></figure><h2 id="inputting-proxycurl-api-key">Inputting Proxycurl API key</h2><p>In the clone, I built a way for you to input your Proxycurl API key for the clone to work <em>(the "Settings" button on top)</em>. But in your own application meant for end users, feel free to remove this part if your users do not need input any API key.</p><p>First, create <code>components/SettingsModal.jsx</code>:</p><pre><code class="language-jsx">import React from "react";
import { Dialog, DialogContent, DialogTitle } from "@/components/ui/dialog";
import { Input } from "@/components/ui/input";
import { Button } from "@/components/ui/button";

const SettingsModal = ({ isSettingsOpen, setSettingsOpen, apiKey, setApiKey }) =&gt; {

  const handleSaveApiKey = () =&gt; {
    localStorage.setItem("apiKey", apiKey);
    setSettingsOpen(false);
  };

  return (
    &lt;Dialog open={isSettingsOpen} onOpenChange={setSettingsOpen}&gt;
      &lt;DialogContent&gt;
        &lt;DialogTitle&gt;Settings&lt;/DialogTitle&gt;
        &lt;h1&gt;Add your API key&lt;/h1&gt;
        &lt;Input
          type="text"
          placeholder="API key"
          value={apiKey}
          onChange={(e) =&gt; setApiKey(e.target.value)}
        /&gt;
        &lt;Button className="w-min mt-4" onClick={handleSaveApiKey}&gt;
          Save
        &lt;/Button&gt;
      &lt;/DialogContent&gt;
    &lt;/Dialog&gt;
  );
};

export default SettingsModal;
</code></pre><p>And modify <code>app/page.js</code>:</p><pre><code class="language-jsx">//...existing code

const [apiKey, setApiKey] = useState(null);
const [isSettingsOpen, setIsSettingsOpen] = useState(false);

 useEffect(() =&gt; {
    const apiKey = localStorage.getItem("apiKey");
    if (apiKey) {
      setApiKey(apiKey);
    }
  }, []);

// ...existing code
&lt;/Tabs&gt;
  &lt;SettingsModal isSettingsOpen={isSettingsOpen} setSettingsOpen={setIsSettingsOpen} apiKey={apiKey} setApiKey={setApiKey} /&gt;
&lt;/div&gt;
</code></pre><p>Now, you can add your API key. A reminder that you can get your <a href="https://nubela.co/proxycurl/dashboard/proxycurl-api/api-key/?ref=nubela.co">API key from Proxycurl's dashboard here</a>.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/10/input-api-key.gif" class="kg-image" alt="Proxycurl API input modal for the Lusha sales prospecting clone" loading="lazy" width="1042" height="530"><figcaption><span style="white-space: pre-wrap;">Simply input your Proxycurl API to get the data needed for the app</span></figcaption></figure><h2 id="make-a-call-to-the-live-api">Make a call to the live API</h2><p>Modify <code>components/PeopleFilter.jsx</code>:</p><pre><code class="language-jsx">const PeopleFilter = ({ setIsLoading, setPeopleResults, apiKey }) =&gt; {
 
const [error, setError] = useState([]);

const [payload, setPayload] = useState({
    country: "",
    current_role: "",
    current_company_name: "",
});

const handleSearch = async () =&gt; {
setError([]);
let hasError = false;

if (payload.country === "") {
  setError((prev) =&gt; [...prev, "Country is required"]);
  hasError = true;
}
if (!apiKey) {
  setError((prev) =&gt; [
    ...prev,
    "Please enter your API key in the settings",
  ]);
  hasError = true;
}

if (hasError) return;

try {
  setIsLoading(true);

  const params = new URLSearchParams({
    country: countryISO.find((country) =&gt; country.label === payload.country)
      .value,
    page_size: 10,
    enrich_profiles: "enrich",
  });

  if (payload.current_role) {
    params.append("current_role_title", payload.current_role);
  }
  if (payload.current_company_name) {
    params.append("current_company_name", payload.current_company_name);
  }

  await fetch(`/api/peopleSearch?${params.toString()}`, {
    method: "GET",
    headers: {
      Authorization: `Bearer ${apiKey}`,
    },
  })
    .then((response) =&gt; response.json())
    .then((data) =&gt; {
      setPeopleResults(data.results);
    });
} catch (error) {
  console.log(error, "error");
}
setIsLoading(false);
};
//...existing code
{error &amp;&amp;
error.map((err) =&gt; (
  &lt;p
    className="text-red-500 text-sm font-semibold text-center mt-2"
    key={err}
  &gt;
    {err}
  &lt;/p&gt;
))}
&lt;/Accordion&gt;
    &lt;/
</code></pre><p>Now when users search with an empty API key or location/country, we get this error:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/10/error.png" class="kg-image" alt="Error message from no input on the Lusha sales prospecting clone" loading="lazy" width="654" height="798"><figcaption><span style="white-space: pre-wrap;">Error message from no input</span></figcaption></figure><p>Next, let's handle the empty state in <code>components/PeopleResult.jsx</code>:</p><pre><code class="language-jsx">// first div
    &lt;div&gt;
      {!isLoading &amp;&amp; results.length === 0 &amp;&amp; (
        &lt;div&gt;
          &lt;span className="flex items-center gap-4 w-full justify-center mt-24"&gt;
            &lt;FaArrowLeft className="text-5xl" /&gt;
            &lt;span className="text-3xl font-semibold"&gt;
              Find your prospects here
            &lt;/span&gt;
          &lt;/span&gt;
        &lt;/div&gt;
      )}
</code></pre><p>You get this view that is without any input in the filters:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/10/empty-state--1-.png" class="kg-image" alt="This is empty state view of the Lusha sales prospecting clone" loading="lazy" width="2030" height="840"><figcaption><span style="white-space: pre-wrap;">Empty state view of the Lusha sales prospecting clone</span></figcaption></figure><p>Lastly, we need to create Next.js API route to make the API call.</p><p>Create <code>app/api/peopleSearch/route.js</code>:</p><pre><code class="language-js">import { NextResponse } from "next/server";

export async function GET(request) {
  const params = request.url.split("?")[1];

  try {
    const response = await fetch(
      `https://nubela.co/proxycurl/api/v2/search/person?${
       params
      }`,
      {
        headers: {
          Authorization: request.headers.get("Authorization"),
        },
      },
    );

    const data = await response.json(); 
    return NextResponse.json(data); 
  } catch (error) {
    console.log(error);
    return NextResponse.json({ error });
  }
}

</code></pre><p>And there you go, you've successfully created this masterpiece which is the Lusha sales prospecting clone.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/10/final.gif" class="kg-image" alt="The completed Lusha sales prospecting clone" loading="lazy" width="1090" height="658"><figcaption><span style="white-space: pre-wrap;">Voila! Try it yourself!</span></figcaption></figure><h2 id="proxycurl-powers-many-amazing-applications-like-this">Proxycurl powers many amazing applications like this</h2><p>Congratulations, you made it to the end.</p><p>This is your reward as promised: <a href="https://github.com/nubelaco/use-case-examples/tree/main/people-prospector?ref=nubela.co" rel="noreferrer">the full code on our GitHub repo</a>.</p><p>And the link to <a href="https://lusha-clone-by-procxycurl.vercel.app/?ref=nubela.co">the clone that I built</a> again.</p><p>At Proxycurl, we have a full suite of <a href="https://proxycurl.com/?ref=nubela.co">API products</a> and a <a href="https://nubela.co/proxycurl/linkdb?ref=nubela.co">LinkDB database</a> product consisting of close to 500 million profiles that powers many, many use cases of our customers. Ranging from HR recruitment, sales prospecting, marketing growth, investment prospecting and more, you can see <a href="https://nubela.co/proxycurl/use-cases?ref=nubela.co"><em>all the Proxycurl use cases here</em></a>.</p><p>We are a developer-first company, so we know a developer's painpoints when using such data enrichment API solutions, and we always iterate to close these gaps. This is why our customers love us.</p><p>Have fun building, and reach out to us <a href="mailto:hello@nubela.co" rel="noreferrer">via email</a> or live chat if you have any questions</p><blockquote>We recently launched a writing program for our developer community. If you're interested to write such technical piece for us, reach out to us at <a href="mailto:marketing@nubela.co" rel="noreferrer">marketing@nubela.co</a>. We'll be glad to get in touch.</blockquote> ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ How CoffeeSpace Powers Its Tinder-Like Cofounder Matching App with Proxycurl ]]></title>
        <description><![CDATA[ We at Proxycurl have had the privilege of speaking with Hazim, the CEO and co-founder of CoffeeSpace, a Tinder/Hinge-like platform for co-founder matching.


Intrigued? We’re here to tell you all about it: its origins, core idea and features, challenges faced, and the tech stack that powers its data-matching ]]></description>
        <link>https://nubela.co/blog/coffeespace-powers-its-cofounder-matching-app-with-proxycurl/</link>
        <guid isPermaLink="false">66f65aa45ad68b0001185e8f</guid>
        <category><![CDATA[ proxycurl ]]></category>
        <dc:creator><![CDATA[ Joseph Lim | Head of Marketing ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2023/03/Screenshot-2023-03-13-at-5.30.12-PM-min.png"/>
        <pubDate>Tue, 01 Oct 2024 14:52:18 +0800</pubDate>
        <media:content url="" medium="image"/>
        <content:encoded><![CDATA[ <p>We at Proxycurl have had the privilege of speaking with Hazim, the CEO and co-founder of <a href="https://www.coffeespace.com/?ref=nubela.co">CoffeeSpace</a>, a Tinder/Hinge-like platform for co-founder matching.</p>
<p>Intrigued? We’re here to tell you all about it: its origins, core idea and features, challenges faced, and the tech stack that powers its data-matching algorithm.</p>
<p>The space that CoffeeSpace is delving into is a relatively new and innovatively-disruptive space, insofar that they earned a spot in TechCrunch Disrupt 2024’s <a href="https://techcrunch.com/events/tc-disrupt-2024/startup-battlefield/?ref=nubela.co">Startup Battlefield 200</a>, a premier startup competition by TechCrunch.</p>
<p>Here’s CoffeeSpace’s elevator pitch: Similar to dating apps, users/co-founders can swipe left or right through profiles on the platform. A match occurs when two co-founders swipe right on each other. They can then start chatting and connecting.</p>
<p>Watch the full interview here:</p>
<figure class="kg-card kg-embed-card"><iframe width="200" height="113" src="https://www.youtube.com/embed/Ag48N0hGvuI?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen="" title="Interview with CoffeeSpace - a tinder-like cofounder matching appp"></iframe></figure><p>Still intrigued? Keep reading.</p>
<h2 id="this-was-how-coffeespace-started">This was how CoffeeSpace started</h2>
<p>Hazim was a finance graduate from MIT with experience in prominent financial roles like the World Bank, yet he always had a passion for startups and innovation.</p>
<p>During the peak of the Covid pandemic, <a href="https://www.professionalsocialnetwork.com/in/hazimmohamad/?ref=nubela.co">Hazim</a>, like all of us, found himself with a sudden availability of ample time at home. It was during the same period that he met <a href="https://www.professionalsocialnetwork.com/in/carin-gan/?ref=nubela.co">Carin</a>, now the co-founder and CTO of CoffeeSpace. They had countless hours and days of brainstorming and realized there was a significant gap in the co-founder matching space, stemming from their own challenges in finding compatible co-founder partners.</p>
<p>And so, CoffeeSpace was born.</p>
<h2 id="coffeespace%E2%80%99s-core-idea-and-features">CoffeeSpace’s core idea and features</h2>
<p>CoffeeSpace stands out as a disruptive and innovative solution to this notorious and “age-old” struggle within the startup scene of finding co-founders. Traditionally, co-founder matching often involves organizing meetups, or tapping on a community’s existing network such as <a href="https://www.ycombinator.com/cofounder-matching?ref=nubela.co">Y Combinator’s own co‑founder matching network</a>. These meetings are however not easily discoverable, necessitate in-person meet-ups limited to certain cities, and are not scalable.</p>
<p>This is exactly the gap that CoffeeSpace strives to solve.</p>
<p>CoffeeSpace drew major inspiration from popular dating apps like Tinder and Hinge and deployed the familiar "swipe right" feature and algorithms to match users to potential co-founders. They aim to streamline the entire process of finding and connecting with potential co-founders onto a single app platform.</p>
<p>Users can download the app for free. Upon creating a new account, users are prompted to complete a series of quick questionnaires that help the algorithm construct the users’ co-founder profile. This profile will then be displayed and used to match with other users/co-founders.</p>
<p>Here are some snapshots of the questionnaire interface:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/09/CoffeeSpace-onboarding-questionnaire.png" class="kg-image" alt="CoffeeSpace onboarding questionnaire" loading="lazy" width="2100" height="1200"><figcaption><span style="white-space: pre-wrap;">Users are greeted with this questionnaire during onboarding, which builds their CoffeeSpace profiles</span></figcaption></figure><h2 id="how-does-proxycurl-power-coffeespace-behind-the-scenes">How does Proxycurl power CoffeeSpace behind the scenes?</h2>
<p><a href="https://proxycurl.com/?ref=nubela.co">Proxycurl</a> is a full-fledged data enrichment API provider, where developers can pull data at scale about people, companies, contact info, jobs, and more. Our APIs and <a href="https://nubela.co/proxycurl/linkdb?ref=nubela.co">dataset products</a> power many such applications like CoffeeSpace.</p>
<p>In the series of screenshots shared above, the very first question that CoffeeSpace asks of users during onboarding is their Professional Social Network profile URL. CoffeeSpace then uses <a href="https://nubela.co/proxycurl/people-api?ref=nubela.co">Proxycurl’s Person Profile Endpoint</a> to enrich the users’ profiles with their educational backgrounds and work experiences automatically. These all happen behind the scenes automatically and at scale for all users during onboarding.</p>
<p>Using Bill Gates as an example. Say he’s looking for a co-founder, he proceeded to download CoffeeSpace and register for an account, this is likely CoffeeSpace’s code input that pulls Bill Gates’ enriched data programmatically via Proxycurl’s People API.</p>
<pre><code class="language-python">import requests

api_key = 'YOUR_API_KEY'
headers = {'Authorization': 'Bearer ' + api_key}
api_endpoint = 'https://nubela.co/proxycurl/api/v2/Professional Social Network'
params = {
    'Professional Social Network_profile_url': 'https://www.professionalsocialnetwork.com/in/williamhgates/',
    'extra': 'include',
    'github_profile_id': 'include',
    'facebook_profile_id': 'include',
    'twitter_profile_id': 'include',
    'personal_contact_number': 'include',
    'personal_email': 'include',
    'inferred_salary': 'include',
    'skills': 'include',
    'use_cache': 'if-present',
    'fallback_to_cache': 'on-error',
}
response = requests.get(api_endpoint,
                        params=params,
                        headers=headers)
</code></pre>
<p>The above code includes other parameters that aren’t directly related to CoffeeSpace’s use case, but it shows the various parameters that can be used with Proxycurl’s Person Profile Endpoint.</p>
<p>And this is the response - specific to CoffeeSpace’s use case - the users’ Professional Social Network profile picture, education background and work experience:</p>
<pre><code class="language-json">{
    "public_identifier": "williamhgates",
    "profile_pic_url": "https://s3.us-west-000.backblazeb2.com/proxycurl/person/williamhgates/profile?X-Amz-Algorithm=AWS4-HMAC-SHA256&amp;X-Amz-Credential=0004d7f56a0400b0000000001%2F20240927%2Fus-west-000%2Fs3%2Faws4_request&amp;X-Amz-Date=20240927T050405Z&amp;X-Amz-Expires=3600&amp;X-Amz-SignedHeaders=host&amp;X-Amz-Signature=f3959b437dc80e9281bb864bbad28f53312565ab1cd7776bfd6e8e17cea4dc90",
    "experiences": [
        {
            "starts_at": {
                "day": 1,
                "month": 1,
                "year": 2000
            },
            "ends_at": null,
            "company": "Bill &amp; Melinda Gates Foundation",
            "company_Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/company/bill-&amp;-melinda-gates-foundation",
            "company_facebook_profile_url": null,
            "title": "Co-chair",
            "description": null,
            "location": null,
            "logo_url": "https://s3.us-west-000.backblazeb2.com/proxycurl/company/bill-%26-melinda-gates-foundation/profile?X-Amz-Algorithm=AWS4-HMAC-SHA256&amp;X-Amz-Credential=0004d7f56a0400b0000000001%2F20240927%2Fus-west-000%2Fs3%2Faws4_request&amp;X-Amz-Date=20240927T050405Z&amp;X-Amz-Expires=1800&amp;X-Amz-SignedHeaders=host&amp;X-Amz-Signature=77937a411477b30790ce699266efabd2cca85edea619f2af747cb5e0f9697884"
        },
        {
            "starts_at": {
                "day": 1,
                "month": 1,
                "year": 2015
            },
            "ends_at": null,
            "company": "Breakthrough Energy ",
            "company_Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/company/breakthrough-energy",
            "company_facebook_profile_url": null,
            "title": "Founder",
            "description": null,
            "location": null,
            "logo_url": "https://s3.us-west-000.backblazeb2.com/proxycurl/company/breakthrough-energy/profile?X-Amz-Algorithm=AWS4-HMAC-SHA256&amp;X-Amz-Credential=0004d7f56a0400b0000000001%2F20240927%2Fus-west-000%2Fs3%2Faws4_request&amp;X-Amz-Date=20240927T050405Z&amp;X-Amz-Expires=1800&amp;X-Amz-SignedHeaders=host&amp;X-Amz-Signature=92e52762e76f15b03c35704c35a74b9667c06be40019789485423b169d7a9724"
        },
        {
            "starts_at": {
                "day": 1,
                "month": 1,
                "year": 1975
            },
            "ends_at": null,
            "company": "Microsoft",
            "company_Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/company/microsoft",
            "company_facebook_profile_url": null,
            "title": "Co-founder",
            "description": null,
            "location": null,
            "logo_url": "https://s3.us-west-000.backblazeb2.com/proxycurl/company/microsoft/profile?X-Amz-Algorithm=AWS4-HMAC-SHA256&amp;X-Amz-Credential=0004d7f56a0400b0000000001%2F20240927%2Fus-west-000%2Fs3%2Faws4_request&amp;X-Amz-Date=20240927T050405Z&amp;X-Amz-Expires=1800&amp;X-Amz-SignedHeaders=host&amp;X-Amz-Signature=6436aebfa6d4e4aaf00ca41d011ff9011e0985006c5697015617cf4d1ded37ad"
        }
    ],
    "education": [
        {
            "starts_at": {
                "day": 1,
                "month": 1,
                "year": 1973
            },
            "ends_at": {
                "day": 31,
                "month": 12,
                "year": 1975
            },
            "field_of_study": null,
            "degree_name": null,
            "school": "Harvard University",
            "school_Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/company/1646/",
            "school_facebook_profile_url": null,
            "description": null,
            "logo_url": "https://s3.us-west-000.backblazeb2.com/proxycurl/company/harvard-university/profile?X-Amz-Algorithm=AWS4-HMAC-SHA256&amp;X-Amz-Credential=0004d7f56a0400b0000000001%2F20240927%2Fus-west-000%2Fs3%2Faws4_request&amp;X-Amz-Date=20240927T050405Z&amp;X-Amz-Expires=1800&amp;X-Amz-SignedHeaders=host&amp;X-Amz-Signature=f364c50c234e9eb9f06a39c3c92a6a5331ca30096f57f405da5472ce3bf39894",
            "grade": null,
            "activities_and_societies": null
        },
        {
            "starts_at": null,
            "ends_at": null,
            "field_of_study": null,
            "degree_name": null,
            "school": "Lakeside School",
            "school_Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/company/30288/",
            "school_facebook_profile_url": null,
            "description": null,
            "logo_url": "https://s3.us-west-000.backblazeb2.com/proxycurl/company/lakeside-school/profile?X-Amz-Algorithm=AWS4-HMAC-SHA256&amp;X-Amz-Credential=0004d7f56a0400b0000000001%2F20240927%2Fus-west-000%2Fs3%2Faws4_request&amp;X-Amz-Date=20240927T050405Z&amp;X-Amz-Expires=1800&amp;X-Amz-SignedHeaders=host&amp;X-Amz-Signature=4ef24eca69fdada887d5faa63ceb5606718be833439c930e75d8813638f7f157",
            "grade": null,
            "activities_and_societies": null
        }
    ],
   }

</code></pre>
<p>The data retrieved using the Person Profile Endpoint also plays a key role in providing CoffeeSpace with insights into their most prevalent co-founder demographics, informing them about their ideal customer profiles (ICPs) and more, quoting Hazim,</p>
<blockquote>
<p>Stanford is our number one user pool by school.</p>
</blockquote>
<p>With this information, they know better who their key ICPs are.</p>
<p>In addition to front-end features, Hazim leverages <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#people-api-person-profile-endpoint">Proxycurl’s Person Profile Endpoint</a> to access data about new users for background verification purposes. This proves especially useful when users provide incomplete information or when their Professional Social Network profiles are missing crucial details. In such cases, he retrieves users' data from alternative sources using Proxycurl's API endpoint.</p>
<h2 id="what-if-users-uninstall-the-app-after-a-successful-match">What if users uninstall the app after a successful match?</h2>
<p>During the interview, a pressing question was on our minds: Will most users uninstall the app after a successful match? We were glad Hazim gave us a great response to this question.</p>
<p>The short answer is, no. This is because CoffeeSpace’s use case extends beyond just co-founder matching. It also caters to early-stage hiring and networking within the startup scenes as founders continue to find the need to seek talents for their companies.</p>
<p>Even if a successful match is made, co-founders may find that they are not compatible in real life and may need to search for another like-minded partner, again using CoffeeSpace.</p>
<p>Some statistics:</p>
<ul>
<li>The average lifespan of a startup is typically 6-12 months, indicating that users may return to CoffeeSpace to find new co-founders for other ideas.</li>
<li>Early-stage hiring is crucial to the survival of startups <a href="https://rdcu.be/dVfEW?ref=nubela.co">(citation)</a>, indicating matched co-founders might still use CoffeeSpace to find talents</li>
</ul>
<p>In short, users do stick around even after successful co-founder matching.</p>
<h2 id="that%E2%80%99s-exciting-what%E2%80%99s-next-for-coffeespace%E2%80%99s-future">That’s exciting. What’s next for CoffeeSpace’s future?</h2>
<h3 id="improving-the-cofounder-matching-algorithm">Improving the cofounder matching algorithm</h3>
<p>CoffeeSpace’s superpower lies in its matching algorithm, and that remained the top priority in their product roadmap, to continually improve the algorithm.</p>
<p>One strategy involves leveraging LLM solutions like OpenAI to enhance semantic understanding. This includes interpreting user input, preferences, and enriched profile data to better grasp user personas and enhance matching accuracy.</p>
<p>Besides drawing inspiration from popular dating apps like Tinder and Hinge, CoffeeSpace is also getting inspiration from major social networking sites like TikTok on how to improve its algorithm. Improvements involving tracking various users’ behaviors such as profile views, time spent on profiles, and scrolling habits.</p>
<p>Beyond person data, CoffeeSpace could also pull company data related to their users to enhance that part of their algorithm relating to the users’ professional backgrounds. For instance, with <a href="https://nubela.co/proxycurl/company-api?ref=nubela.co">Proxycurl’s Company API</a>, a plethora of additional data points such as a company’s funding history, acquisition information, company size, and more can be pulled to improve user matching.</p>
<h3 id="expanding-into-the-vc-and-startup-investment-matching-space">Expanding into the VC and startup investment matching space</h3>
<p>CoffeeSpace has already been attracting interest from investment firms and venture capitalists due to the valuable data insights it possesses on its extensive user base of <em>really</em>-early stage co-founders.</p>
<p>It is common for investment companies to rely on <a href="https://nubela.co/proxycurl/solutions/alternative-data-for-investment-firms?ref=nubela.co">investment signals</a> such as tracking the movements of potential startup founders to identify investment prospects. However, investors will know of this information only after a founder founded a startup and updated his/her social profiles. In some cases like stealth startups, they won’t even know.</p>
<p>Through CoffeeSpace however, VCs can tap into the huge reservoir of potential startup founders even <em><strong>before</strong></em> they start a company, even as early as when they’re exploring ideas or finding a co-founder on CoffeeSpace’s platform.</p>
<h2 id="to-better-algorithm-data-and-co-founder-matching">To better algorithm, data, and co-founder matching</h2>
<p>We are stoked to be part of CoffeeSpace’s remarkable growth. Launched in March 2024, CoffeeSpace now has a whooping 5600 users (and growing) and secured $500k in funding.</p>
<p>Similar to the evolution seen in the dating app industry, there initially was a lot of stigma around such tech and algorithms in matching people for love, and now for starting a company. The skepticism was that it’s just odd for tech to connect people for such an intimate and complex endeavor as love, or in this case the startup journey. Over time though, dating apps have become the norm. We believe it’ll happen for the work that CoffeeSpace is doing here too.</p>
<div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">💡</div><div class="kg-callout-text">Looking for a solution to pull person and company data programmatically at scale? Explore the suite of <a href="https://nubela.co/proxycurl/?ref=nubela.co">Proxycurl API</a> and <a href="https://nubela.co/proxycurl/linkdb?ref=nubela.co">database</a> products.<br><br>• Scraping public profiles legally <br>• High rate limit - 300 requests/minute <br>• Fast - APIs respond in ~2s <br>• Fresh data - 88% of data is scraped in real-time <br>• High accuracy <br>• Built for developers, by developers<br><br><a href="https://nubela.co/proxycurl/auth/register?ref=nubela.co" rel="noreferrer">Get your API key &amp; free credits to test now</a> ➡️</div></div><hr><h3 id="coffeespace-interview-transcipt">CoffeeSpace Interview Transcipt</h3><p><strong>Colton: </strong>Hi I'm Colton here with Proxycurl. Normally you would find me over on the blog but today you'll find me either on the blog or on YouTube. And I'm here with Hazim, the founder of CoffeeSpace. So I'm going to go ahead and let him introduce himself.</p><p><strong>Hazim: </strong>So I'm Hazim, co-founder CEO of CoffeeSpace. We're building the Tinder for people exploring ideas to find co-founders essentially, that's the easiest way to explain it.</p><p>Short background about myself. I'm from Malaysia, born and raised. Went to the UK for my undergrad. Came to the US about 8 years ago, slightly more than 8 years now. I came from my grad school, I was in MIT, I was doing the Masters of Financial Engineering, the MFin program over there. Went to the World Bank for about 5 years. I was in DC, much colder weather than it is in SF. So I move from the worst weather of Boston to like, yeah, that has been the gradual shift. I was with the World Bank for 5 years I was doing basically quantitative risk for the treasury portfolio management. So my team managed basically the risk of like a 45 billion portfolios. Which is completely different than what CoffeeSpace is of course.</p><p>What led me to CoffeeSpace was Covid actually. Because of Covid many of the things, you know, the social elements of work was not there. I have a bit more time now working from home in DC and let's explore some ideas. So I posted about a problem space, CoffeeSpace was not the first iteration of the idea explored actually. I posted about the problem space I was passionate about on Facebook, Professional Social Network. My co-founder Carin reached out, we did not know each other, and this ties up to why we believe CoffeeSpace is so important. Because I thought about an idea for two years, didn't do anything about it, till Karin reached out. She was a stranger, we met at a random event years before that never kept in touch but because of this article we connected. We explored things over weekends. When you don't go to school together have work together you need to build that foundation of a relationship of trust, that working relationship. So what we did was, she was at Facebook at the time. We explored things over weekends, we had a call every Sunday night, two three hours. We'll talk about the things we want to learn, read, watch or explore, validate over the next week, and that was what was for months. We didn't know we wanted to do a start up full time, we were perfectly happy with our jobs. But yeah you explore something enough and it gets somewhere.</p><p><strong>Colton: </strong>What was your primary role in CoffeeSpace in comparison to like how your partner complimented your role as well. </p><p><strong>Hazim: </strong>So we, in terms of interest, personality we couldn't be further apart, and that is why it's so perfect right. We cover absolutely, I mean, we compliment each other perfectly in that sense. So she is the engineer, she handles the product side essentially. Like the app you saw, she built alone in two months, frontend, backend, design algo. My co-founder handles the engineering technical side, I handle everything else essentially. So fundraise is on me, customer support, growth, getting users on board, legal, finance, all the things that you need to keep a company going, your team has to do everything right, when it was just a two three person team. It was just the two of us, we added the third co-founder rather recently.</p><p><strong>Colton: </strong>Now I also have a question for you, I forget which Tinder-like dating app does this or or says this, but one of them has like a slogan like, we're the app that's designed to be uninstalled. So my question to you is is essentially, if your app is to work probably, ideally they would find their partner and then not need the app anymore. Is that correct? Have you ever thought about that? </p><p><strong>Hazim: </strong>I mean that was the assumption, that was the assumption we needed to validate essentially. Is it true that when people find a co-founder, they're gone from the app? We've been around long enough, we launched our app in March so it's been over six months since launch. But no that is not true, for three reasons people&nbsp;stick around. So the first reason is this is not like dating in the sense you find your partner&nbsp;you got to leave the apps right? Like you can't just stay on Tinder if you're in a committed&nbsp;relationship, generally that that is the societal convention. But no, not for co-founders. You could find a third co-founder, we added a third co-founder. So they will be as actively swiping. They're open to it because a co-founding team can very well be three people if not up to four people. It is rare to see beyond four person founding team. So this is not like a marriage with one to one generally. </p><p>So second reason is people are already finding their early hires on CoffeeSpace. So employee number one two three for example they're very close to a co-founder in nature. So we had double trial periods with people who could be our first founding hirers as well. Through CoffeeSpace, they swiped on us. So they told us, "I'm exploring ideas but I don't mind being a founding hire as well." So this is the natural expansion again, people are sticking around for that, we have not optimized the platform for that purpose yet, we are not publicly stating that, but it is a use case that we are actively exploring given that it is already happening on the platform. A third of the people who have told us, they are working together right now are actually of early hires. They might need more than just that first original founding team. </p><p>The third reason, so the third reason is just the velocity of startup life, like 6-12 months is roughly the lifespan of startup. Marriages is a lot longer, 15-20 years. So within 6-12 months we see them coming back because even if it's a good co-founder relationship, if the idea is invalidated and they need to explore something else, we have users who come back, like you know, okay we need to explore something. As long as you have the startup bug yeah you always need something. That is very fair like startup founders rarely just start one. It's just the nature of this space right, it's very hard to have a startup immediately succeed usually it takes a few iterations just like ourselves it took us three iterations before we got to this idea. So that actually helps people come back and yeah so the LTV you know the tail life of people on our platform is a lot longer than we initially assumed.</p><p><strong>Colton: </strong>What is the app built with? </p><p><strong>Hazim: </strong>So on the frontend it's built with FlutterFlow, so that's the frontend. Backend is Firebase. But yeah Proxycurl is one of the tools we use to enrich the users profiles. We have the founder profile, the co-founder preferences but you do want basically the enrichment of Professional Social Network information, the experience, education. </p><p><strong>Colton: </strong>So you said that you used Flutter for the frontend but what was the backend? </p><p><strong>Hazim: </strong>Firebase. The simple reason it just integrated really quickly and easily with Flutter Flow. Because we're using Flutter Flow on the frontend it affects many of the decisions of the other tools we use, for example we chose Revenue Cats for subscription management instead of Stripe because it just integrates easier with Flutter Flow. </p><p><strong>Colton: </strong>I'm going to look that up really quick.</p><p><strong>Hazim:</strong> Yeah I never heard of Revenue Cats before that but yeah they've done the job for us we've been very happy using the platform. They are basically an alternative to Stripe for subscription management. </p><p><strong>Colton: </strong>So the general app is essentially like we were talking about a little bit earlier, it's kind of just being about like the Tinder for startup founders essentially. So it's just it's all centered around like finding the missing puzzle piece for your startup idea. So like if you're maybe you know the business, marketing, sale- oriented side, you might want the technical co-founder on the other hand. So it's just about about integrating and connecting these people at the end of the day. </p><p><strong>Hazim: </strong>So basically we collect data points and based on these data points we match people up algorithmically. People can change their preferences and all it's quite, I mean ,the UI is quite similar to Hinge. That was our main source of inspiration Yeah like Tinder yes, or the Tinder no. So you can't exactly swipe but this is deliberate right because when you can just swipe you're going to too long, you're not going to deliberate too much on a profile. So that's why Hinge you have to like a specific part of the profile, to optimize for a match, to optimize for connection. So that is the model we will be, we are going after essentially. We will not introduce a swipe element anytime soon until validated people will still put in the time deliberation as they should.</p><p><strong>Colton:</strong> Okay and then so when you sign up you have to insert your Professional Social Network URL right. So you're using our API on the backend, Proxycurl to populate a lot of the profile information from that&nbsp;Professional Social Network URL?</p><p><strong>Hazim: </strong>That's right, profile picture, education, experience mainly. There are other elements which we might use in the future depending on what users tell us they want, what the algorithm needs but yeah, that is what we are doing and that saves users a lot of time. </p><p><strong>Colton: </strong>So that's, that right there is primarily how you're using Proxycurl right now.</p><p><strong>Hazim: </strong>But it's also for the initial review of users right. We are now building an auto, thus far, I have reviewed every single person you know the 5,600 people have joined CoffeeSpace. </p><p><strong>Colton: </strong>So that's how many people that, I was going to ask that as well. </p><p><strong>Hazim: </strong>Yeah that's how many people we have on CoffeeSpace right now. We need to know that it's an actual person right. You are verifying right now you're verifying individually everybody that's most people go through of course but yeah there are specific things we look for within the Professional Social Network profile to approve it otherwise right it's likely that this person has not because people don't even populate their Professional Social Network profiles too much it's hard for us to believe they are serious about. There are there are some people that are you know qualified business individuals that relatively empty education experience. If it's zero experience, zero education, it will require my manual intervention to look at but this also you know number of followers. If they've only started the account you know with 10 followers for example. It's not a definite so it's like there's an auto approval process not an auto denial. I will be reviewing the edge cases for me to see like you know if this is a suitable to be on the app.</p><p><strong>Colton: </strong>Have you received any funding yet for CoffeeSpace? </p><p><strong>Hazim: </strong>Yeah so we have raised a total of half a million thus far, so these are mainly from angels, many of these angels are actually our users so it's interesting right because these people are in the startup space quite a few of them are angel investors. They're exploring some ideas themselves but yeah we have raised $500,000 to date from angels. yeah. Nice. </p><p><strong>Colton: </strong>When I was using the app it kind of looks like your monetization strategy is just to make it easier to find partners, is that fair, like that's your monetization?</p><p><strong>Hazim:</strong> We're motivated to solve it faster. So the basic version, the minimum version free version of CoffeeSpace is good enough to give people leads consistently but if you really want more leads fast so it's basically creating differentiated experiences with artificial scarcity you basically lock certain things which the most motivated people will want. For example I can give an example of a premium filter, it's prior startup experience if you want a filter for people who have sold a company before, started a company before or worked in a startup before at least right then these are premium filters. You don't need a co-founder who has sold a company before if you want that. So if you paid for the premium subscription, you would have the ability to essentially filter for more qualified individuals, you get more leads per day, you get premium filters, your invites go up of the top of the list instead of chronologically. If for example you had 10 invites the person with the premium account would have their invites go right up to the list but yeah these are all strategies dating apps have used that we have learned from essentially. </p><p><strong>Colton: </strong>Gotcha. What are you doing to grow? What is the future? Like what do you have planned for? </p><p><strong>Hazim:</strong> yeah so We're getting users through a few main ways. One is of course word of mouth. People who are looking for co-founders have spoken to other people looking for co-founders. So because we're so niche at this point not many people are serving the co-founder matching space. Apart from Y-combinators co-founder matching platform there are not really that many other incredible, very established or other platforms out there. So word of mouth is one, users post testimonials about this like we did a Product Hunt launch. So these big events like Product Hunt, like TechCrunch, they give us waves of new word of mouth, like new engagement. Professional Social Network I've been building in public so I've been posting our progress almost every week basically on Professional Social Network, Twitter has been another major source but yeah these have been our main ways of get to users. </p><p><strong>Colton: </strong>Mostly just organic word of mouth just getting your name out there.</p><p><strong>Hazim:</strong> More or less, social media, PR basically we've had multiple people publish about this on their blogs and we've been featured in a few sites.</p><p><strong>Colton: </strong>I could imagine sites like Indiehackers could be useful for you or even like even like college campuses in the United States as well.</p><p><strong>Hazim:</strong> I mean funny you say that because yeah one of our users, so Stanford is our number one user pool by school. Stanford people make up about 10% of the users pool of CoffeeSpace right now. So what one of our users did was he published us, he wrote a simple email in a newsletter, in a mailing list called Stanford Venture groups. Everyone in Stanford, generally at grad school and above building is start up. 80 people signed up overnight just from that one email. So schools have been where word of mouth has been propagated by users sharing about it in mailing list, Slack groups WhatsApp groups.</p><p><strong>Colton:</strong> For the future what do you guys have planned do you have anything major planned uh for the near future?</p><p><strong>Hazim:</strong> I mean of course right we're preparing for Tech Crunch. Some of the things we're working on in house is of course is improving the algorithm itself right. That is a consistent thing, a continuous process we are doing but there are three main phases to it. The first one is what we already have on the app is called the Boolean level, are you within 50 miles of me, are you technical or not technical, are you open to an equal split or like you're fully negotiable equity wise. So these are like just yes no parameters, but the next level is what we are now able to start exploring because of Proxycurl actually. This is what we call the social bar level. With Professional Social Network information I can actually start defining what are the similar people to those you're swiping right on. As you swipe we can actually now you swipe data to say, hey you've been, you haven't told us this preference within your profile setup but you keep swiping on people with seven plus years experience in Fintech. This is a data point we will use to further self teach the algorithm to get better, to learn what what is relevant to you. So this is the second level.</p><p>The third level is what we call the semantic level. This is where we're going to use some OpenAI embeddings to start defining the semantic level. If you and I are both building in travel, we define our ideas, we post this information through the OpenAPI and these are the two statements of our ideas. If our ideas are 90% match we should be ranked higher than just some random non-matching ideas etc. But yeah we can do the same for working style, this is my motivation to build start up, this is my working style, this is what I want to devote my life to. So the algorithm will be a big part of what we continue to do to make this better as the number of user scale because we need to guarantee, I mean, we need to ensure relevance as this thing scales. Otherwise you have a million people on it, it's going to be much harder for you to find the right person if it doesn't learn from you. Second is basically exploring, this second or third problem space, co-founder matching will be our focus at least for the next year, year and a half, up to Series A most likely but beyond that like it's these two problems spaces, it's either the early hire space or the one we feel is more synergistic immediately is just basically unlocking the value of the data. Because accelerators, early stage investors have already told us, Hazim you have information that is very valuable within your database. Essentially you know before anyone else when someone wants to build, before they apply to VCs, because we people only apply to VCs when they have a co-founder. But we know before they have that. If I want to be the first check to these founders that is very valuable information. So it's basically creating a backend equivalent where investors will be able to see profiles of users who opt in for this. So users will be triggered a notification, hey there are investors who might want to look at your profile, would you want to opt-in. I've interviewed dozens of users, there's this the time as share my, you know, share my information with them, if you tell me five people 5 VCs view my profile this week I'm going to be very motivated to check my profile. Not only that but make it updated.</p><p><strong>Colton:</strong> That is very valuable data for sure.</p><p><strong>Hazim: </strong>It's a living network instead of Crunchbase Pitchbook which is more passive data. Why Professional Social Network is so available is because it's active data is a network but that is the equivalent we will do on CoffeeSpace essentially because it is a living network.</p><p><strong>Colton: </strong>Is there anything else you'd like to like to share?</p><p><strong>Hazim:</strong> There is of course, there's a lot of uncertainties maybe even stigma against people finding co-founders on such a platform. The general perception is that you must know your co-founder through school, through like you know this history right because there is trust, you know the startup journey is very difficult so you need that strong bond, at least that is the perceived. But it's the same thing as online dating, I would say 10 years ago no one would believe online dating could be a thing, should be a thing. Now 30% Americans find their long-term partners online, and it's the same for co-founder matching.</p><p><strong>Colton:</strong> Actually I'm part of that statistics.</p><p><strong>Hazim:</strong> Exactly my co-founder found her partner on Hinge herself. It's just yeah it's a stigma before it becomes mainstream, it's the same thing here, like YC has already funded 28 companies, 28 pairs who met through their co-founder matching platform. If you do the math they're only taking in 1-2% of people which means hundreds if not not more than a thousand, 2,000 pairs have formed just through YC's co-founder matching. And as this becomes more mainstream we feel like what Tinder, Bumble. Hinge did for online dating, that is what we want to do for people starting companies globally. So that is what CoffeeSpace, that is the long-term vision of CoffeeSpace essentially and that's what makes us excited each day to work on this everyday.</p><p><strong>Colton: </strong>Awesome, honestly I love the idea. I really like the Tinder for startup founders twist. angle. I think it's really cool, I wish you the best best of luck, thanks for watching guys. </p> ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ The Most In-Depth Guide to 18 Clearbit Competitors &amp; Alternatives ]]></title>
        <description><![CDATA[ Possibly the most in-depth breakdown of 18 Clearbit competitors &amp; alternatives that covers features, ratings, prices and more. Specially made for sales and marketing teams. ]]></description>
        <link>https://nubela.co/blog/clearbit-competitors-alternatives/</link>
        <guid isPermaLink="false">66f661265ad68b0001185eac</guid>
        <category><![CDATA[ alternatives ]]></category>
        <dc:creator><![CDATA[ Jo Chng | Technical Writer ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/09/WhatsApp-Image-2024-09-27-at-4.03.46-PM-1.jpeg"/>
        <pubDate>Fri, 27 Sep 2024 16:42:16 +0800</pubDate>
        <media:content url="" medium="image"/>
        <content:encoded><![CDATA[ <p>“Is there another way I can do this?”&nbsp;</p><p>That’s a question I ask myself all the time. If you’re here, that means you’re the same. You like having options because B2B sales is all about options-it’s about making yourself look like the best option while searching for better options. And while Clearbit has positioned themselves as one of the major giants in sales and marketing intelligence, the truth is they aren’t the only option you have.&nbsp;</p><p>Great news. You don’t have to do the legwork. I’ve done it for you. I present to you, a summary of 18 Clearbit Alternatives!&nbsp;</p><h2 id="tldr-table"><strong>TL;DR Table</strong></h2><p>Obligatory disclaimer: I’ve done my best to crosscheck the information here but every company has a different way of presenting their information and it changes over time, so I have to put a few disclaimers here.</p><ol><li>The average rating is an average across G2, Capterra, and Trustradius. Data accuracy is always going to be an issue with all these platforms so please take complaints and praises of data accuracy with a grain of salt.</li><li>I’m only comparing the lowest prices of each service per month for 1 single user, without any sorts of discount codes/referrals, etc. Most of these companies offer long contracts so you will probably get a better deal with annual plans.&nbsp;</li><li>Some companies only mention ‘company profiles’ and some mention ‘personal profiles’. I mark personal profiles/contact information with a ‘*’ as these tend to have higher numbers than company profiles. </li><li>The refresh rates refer to whatever I can find on the company websites, but they may not be a reflection of whether their data is accurate or not.&nbsp;&nbsp;</li></ol>
<!--kg-card-begin: html-->
<table style="border:none;border-collapse:collapse;"><colgroup><col width="169"><col width="124"><col width="99"><col width="172"><col width="124"></colgroup><tbody><tr style="height:21.599999999999998pt"><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Platform</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Average Rating</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Price/Month</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Database </span><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"><br></span><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">(Published Profiles)</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Refresh Rate</span></p></td></tr><tr style="height:21.599999999999998pt"><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Clearbit</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">4.4</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Custom</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">50M, 389M*</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Daily</span></p></td></tr><tr style="height:21.599999999999998pt"><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Proxycurl</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">3.9</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">49</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">19M, 493M*</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Real-Time</span></p></td></tr><tr style="height:21.599999999999998pt"><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Sapiengraph</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">-</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">49</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">19M, 493M*</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Real-Time</span></p></td></tr><tr style="height:21.599999999999998pt"><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">ZoomInfo</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">4.2</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Custom</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">104M, 321M*</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">30 Days</span></p></td></tr><tr style="height:21.599999999999998pt"><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Apollo.io</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">4.4</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">49</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">35M, 220M*</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Real-Time</span></p></td></tr><tr style="height:21.599999999999998pt"><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Cognism</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">4.3</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Custom</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">10M, 400M*</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Daily</span></p></td></tr><tr style="height:21.599999999999998pt"><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Lusha</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">4.1</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">49</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">15M, 100M*</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Real-Time</span></p></td></tr><tr style="height:21.599999999999998pt"><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Lead411</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">4.6</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">99</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">20M, 450*</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">30 days</span></p></td></tr><tr style="height:21.599999999999998pt"><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">UpLead</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">3.7</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">99</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">16M, 155M*</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">30 days</span></p></td></tr><tr style="height:21.599999999999998pt"><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">RocketReach</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">4.1</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">70</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">35M, 700M*</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">30 days</span></p></td></tr><tr style="height:21.599999999999998pt"><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Leadfeeder</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">4.2</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">99</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">175M*</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Real-Time</span></p></td></tr><tr style="height:21.599999999999998pt"><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">6sense</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">4.2</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Custom</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">65M, 415M*</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">14 days</span></p></td></tr><tr style="height:21.599999999999998pt"><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Adapt.io</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">4.0</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">49</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">12M, 250M*</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Daily</span></p></td></tr><tr style="height:21.599999999999998pt"><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Professional Social Network Sales Navigator</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">4.4</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">99</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">67M, 1.9B*</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">12 hours</span></p></td></tr><tr style="height:21.599999999999998pt"><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Seamless.ai</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">3.7</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Custom</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">121M, 1.3B*</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Real-Time</span></p></td></tr><tr style="height:21.599999999999998pt"><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">LeadForensics</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">4.1</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Custom</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">-</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">-</span></p></td></tr><tr style="height:21.599999999999998pt"><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Demandbase</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">4.3</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Custom</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">99M, 150M*</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">30 days</span></p></td></tr><tr style="height:21.599999999999998pt"><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">LeadIQ</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">4.0</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">45</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">-</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Real-Time</span></p></td></tr><tr style="height:21.599999999999998pt"><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">FullContact</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">4.1</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">99</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">247M*</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">15 minutes</span></p></td></tr></tbody></table>
<!--kg-card-end: html-->
<h2 id="what-does-clearbit-do"><strong>What does Clearbit do?</strong></h2><p>At their core, Clearbit is an all-in-one sales intelligence platform that gives you information on your current clients and potential clients.&nbsp;</p><p>Still confused? I’ll break it down for you.&nbsp;</p><p>So you need to sell your product. It’s homemade artisan ice cream. Currently, you have a grand total of 2 shops who resell your ice cream. But you want to take your business to the next level. You want to sell more ice cream, to more people, to bigger companies. How do you do that? You need information.</p><p>Companies like Clearbit take a look at your existing customers i.e. that one corner store who stocks your homemade ice cream in their tiny freezer, and the coffee shop on the next block who sells hipster coffee, and then compares it with their list of shops. Then they tell you, “Hey, there are two more hipster coffee shops and three mom-and-pop stores in the area, why don’t you ask them if they want to stock your ice-cream?”</p><p>Sure, you could have walked around the block casing all the coffee shops and local grocery stores, making your own list, and then going up to them one by one, asking to meet the owner. But that would have taken a lot of time. And the chances are, they might not be interested and you wouldn’t find out until you got there.&nbsp;</p><p>Sales intelligence platforms like Clearbit reduce the amount of legwork you have to do because they have a giant database of company information. They can give you a list of companies that are similar to the ones already in your current customer base. On top of that, most of them can give you the direct contact information of the people who make the decisions. So instead of having to ask someone to “Get me your manager”, you can get a phone number or email directly from Clearbit and contact the person easily.&nbsp;</p><p>In recent years, Clearbit has expanded their offerings to include a multitude of other sales tools - like telling you who’s been searching up ‘homemade ice-cream’ near you, browser extensions that connect you to ice cream aficionados around the world, and AIs that can help you write emails about why your ice cream is the tastiest one on the block.&nbsp;</p><h3 id="clearbit-pricing"><strong>Clearbit Pricing</strong></h3><p>All this is sounding a little too good to be true. Which it probably is. There’s no such thing as a free lunch and Clearbit’s menu doesn’t have any prices. After digging through some of the internet, it seems that their basic package starts at $99. That’s a little steep for startups and small businesses! If you head over to their G2 (4.4/5), Capterra (4.4/5), and Trustradius (8.1/10) reviews, you might notice that some people aren’t quite as satisfied with their interface and the quality of their data.&nbsp;</p><p>But don’t worry, you’ve got options! I’m gonna give you 18 Clearbit competitors that you should consider.</p><h2 id="proxycurl"><strong>Proxycurl</strong></h2><p>Are you a developer? Are you looking for an API solution that will get you fresh B2B data at scale? It’s us. We got your back. I’m not going to pretend that <a href="https://proxycurl.com/?ref=nubela.co" rel="noreferrer">Proxycurl</a> is a full-fledged alternative for Clearbit or some of the other companies listed here. </p><p>We don’t have dashboards telling you how many people are looking at your website. We don’t analyze your customers and suggest ICPs with an algorithm. We don’t write emails for you and tell you when you should call or text a prospect.&nbsp;</p><p>Instead, we’re a fully self-managed REST API that pulls fresh, raw B2B data for your applications.&nbsp;</p><figure class="kg-card kg-image-card"><a href="https://nubela.co/proxycurl/people-api?ref=nubela.co"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/09/Proxycurl-People-API.jpeg" class="kg-image" alt="Proxycurl People API pulls and enriches people data programatically " loading="lazy" width="1816" height="1445"></a></figure><p>You want to search for companies in your ICP? We have a <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#search-api-company-search-endpoint" rel="noreferrer">Company Search API Endpoint</a>. Want to look for people in your buyer personas? We have the <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#search-api-person-search-endpoint" rel="noreferrer">Person Search API Endpoint</a>. Need to track job changes of prospects? We wrote about it here on how to <a href="https://nubela.co/blog/how-to-automatically-track-Professional%20Social%20Network-job-changes/#monitoring-job-changes-with-a-Professional%20Social%20Network-profile-url" rel="noreferrer">track their job changes programatically</a>. Found an email, can’t find the person? Use our <a href="https://nubela.co/proxycurl/demo/reverse-email-lookup?ref=nubela.co" rel="noreferrer">Reverse Email Lookup Endpoint</a>. Or maybe you found the person, but can’t find their contact information. Our <a href="https://nubela.co/proxycurl/contact-api?ref=nubela.co" rel="noreferrer">Contact API</a> can get those for you.</p><figure class="kg-card kg-image-card"><img src="https://nubela-blog.sgp1.digitaloceanspaces.com/sapiengraph-live/2024/09/px-features.png" class="kg-image" alt="Proxycurl's API offerings that include person API Business API" loading="lazy" width="1047" height="777"></figure><p>Our data enrichment API products is fully compliant with the GDPR and CCPA data and privacy laws, and is also in the process of getting <a href="https://sprinto.com/blog/soc-2-certification-complete-guide/?ref=nubela.co" rel="noreferrer">SOC2 Type 2 certified</a>.&nbsp;</p><p>Where does this data come from? It’s updated daily from public profiles pulled from major sites like Professional Social Network and Crunchbase, that’s why we guarantee that the information is less than 29 days old.&nbsp;</p><p>If you need a more comprehensive lead list with more data, Proxycurl offers up <a href="https://nubela.co/proxycurl/linkdb?ref=nubela.co" rel="noreferrer">LinkDB</a>. It's an exhaustive dataset of all the close to 500M of profiles we have. You can buy it at a standalone price, or choose to get quarterly updates to ensure your data keeps up with global changes. The best thing is that you can segment the data according to your needs so you don’t end up with profiles from a different part of the world that you’re never going to target.</p><figure class="kg-card kg-image-card"><a href="https://nubela.co/proxycurl/linkdb?ref=nubela.co"><img src="https://nubela-blog.sgp1.digitaloceanspaces.com/sapiengraph-live/2024/09/px-linkdb.png" class="kg-image" alt="Proxycurl's LinkDB, an exhaustive data set of 474 million public Professional Social Network profiles." loading="lazy" width="840" height="757"></a></figure><h3 id="proxycurl-ratings-and-reviews-3950"><strong>Proxycurl ratings and reviews (3.9/5.0)</strong></h3><p>Proxycurl is rated 3.9 on G2. Most regular B2B companies tend to go for full service platforms over pure developer REST APIs so we don’t have a lot of reviews yet. (Maybe you can leave us one after you test our API with 100 free credits?)</p><p>Most of our customers are satisfied with how fast and easy to use our API, (Thanks dev team!) and how it does exactly what it says it will. Most of the developers like our documentation. It’s easy to read!&nbsp;</p><p>The biggest complaint about Proxycurl so far is that we only have annual plans paid by monthly installments, which I understand, is not everyone’s cup of tea.</p><h3 id="proxycurl-pricing"><strong>Proxycurl pricing</strong></h3><p>Proxycurl has both annual (paid in monthly installments or in one lump sum) and pay-as-you-go (PAYG) plans. The starter annual plan averages out to be $49/month with 2500 credits.&nbsp;</p><figure class="kg-card kg-image-card"><img src="https://nubela-blog.sgp1.digitaloceanspaces.com/sapiengraph-live/2024/09/px-pricing.png" class="kg-image" alt="Proxycurl's annual subscription plan, paid monthly, starting at $49/month for 2500 credits. " loading="lazy" width="1122" height="757"></figure><p>I think this is pretty straightforward. You get 2500 credits every month and they expire after 30 days. The amount of data enrichment you can pull wholly depends on which parameters you use because some are premium parameters that consume 30 credits per profile returned, and some of them just cost 1 credit.</p><p>But maybe you don’t want to commit just yet. That’s okay! We have PAYG plans starting from $10 for 100 credits.&nbsp;&nbsp;</p><figure class="kg-card kg-image-card"><img src="https://nubela-blog.sgp1.digitaloceanspaces.com/sapiengraph-live/2024/09/px-pricing-2.png" class="kg-image" alt="Proxycurl's flexible Pay-as-you-go pricing plan with 18 months validity" loading="lazy" width="1117" height="672"></figure><p>Credits on the PAYG plan don’t expire unless your account has been inactive for more than 18 months so you don’t have to rush to finish them all in a month. Start with 800 or so, test it out, and then buy more as you need them.&nbsp;</p><h3 id="who-should-try-proxycurl"><strong>Who should try Proxycurl?</strong></h3><p>Companies looking for an easy-to-use REST API for their B2B data enrichment needs. OR developers who want the code, nothing but the code, and the whole code without having to pay exorbitant or opaque prices to access APIs.&nbsp;</p><h2 id="sapiengraph"><strong>Sapiengraph&nbsp;</strong></h2><p>Okay, so you’re NOT a developer and everything I said in the previous section made your eyes glaze over. You just want to search for leads and enrich data. You want something you can just jump into without spending 5 hours on uploading or syncing data from your regular CRMs.</p><p>Well, <a href="https://sapiengraph.com/?ref=nubela.co"><u>Sapiengraph</u></a> is the home of 5 minute growth tools, easy tools that you can start using immediately without extensive know-how.&nbsp;</p><p>Right now, we have a <a href="https://sapiengraph.com/prospector?ref=nubela.co"><u>prospector tool</u></a>. You can search for CEOs, CTOs or any other key-decision makers via your dashboard. Just fill out the filters, hit enter. You can even choose to return only profiles with emails or personal numbers attached.&nbsp;</p><figure class="kg-card kg-image-card"><img src="https://nubela-blog.sgp1.digitaloceanspaces.com/sapiengraph-live/2024/09/SG-Prospector.png" class="kg-image" alt="Sapiengraph's Sales Prospector that allows people to find leads in 5 minutes" loading="lazy" width="1543" height="751"></figure><p>Sapiengraph also has a browser extension that allows you to use <a href="https://sapiengraph.com/spreadsheet-formulas?ref=nubela.co"><u>custom Google Sheet formulas</u></a>, and a free <a href="https://sapiengraph.com/blog/sapiengraphs-job-change-monitor-feature-track-opportunities-in-sales-investment/?ref=nubela.co"><u>job change monitor</u></a>. You can get B2B data immediately in your own spreadsheets without having to learn how to use a new platform.&nbsp;&nbsp;</p><figure class="kg-card kg-image-card"><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdvrgYElaCm9nfVZHgT74Pu6T8OJquR2xkxeOxGqqGgUk8Rc4cgkM39T2zdSGeCD2iRlg5bCsSmxHwhqyFvAKdlKbFIOfPqHM6rB9-4cHj_iQ79wsRxrn0gLVazJwhplEanVkMuQboi6ZMb6QO_zcA0koMw?key=1c3B0mSdyL6BIr9N-JhFRA" class="kg-image" alt="Sapiengraph's browser extension enables job change monitoring on Professional Social Network." loading="lazy" width="1211" height="666"></figure><p>If you want to monitor someone’s employment, all you need to do is enable the extension and click monitor job change on their Professional Social Network profile. You can monitor up to 20 profiles for free!</p><h3 id="sapiengraph-ratings-and-reviews"><strong>Sapiengraph ratings and reviews</strong></h3><p>Our review page is waiting for you to try out our growth tools and leave your comments. </p><h3 id="sapiengraph-pricing"><strong>Sapiengraph pricing</strong></h3><p>Sapiengraph has monthly plans that start at $49 for 12500 credits that expire every billing period.</p><figure class="kg-card kg-image-card"><img src="https://nubela-blog.sgp1.digitaloceanspaces.com/sapiengraph-live/2024/09/SG-pricing-1.png" class="kg-image" alt="Sapiengraph's pricing plan, starting at $49 for 12500 credits. " loading="lazy" width="1473" height="726"></figure><p>12500 credits can get you anywhere from 150 to 250 enriched leads. You can try it out with 100 free credits just by signing up for an account. Please note that the type of enrichment you perform consumes a different amount of credits! You can see how much each formula costs in our API documentation.&nbsp;</p><h3 id="who-should-try-sapiengraph"><strong>Who should try Sapiengraph?&nbsp;</strong></h3><p>Companies and people who love spreadsheets and easily get overwhelmed by long setup processes that some other alternatives require before you can get the full value of their services.&nbsp;</p><h2 id="zoominfo"><strong>ZoomInfo</strong></h2><p>If you’ve heard of Clearbit, then you’ve probably heard of ZoomInfo. They are one of the more well-known Clearbit competitors out there. It’s pretty large in its own right. They have an all-in-one platform that gives their users information on who to reach and how to reach them.&nbsp;&nbsp;</p><figure class="kg-card kg-image-card"><img src="https://nubela-blog.sgp1.digitaloceanspaces.com/sapiengraph-live/2024/09/zoominfo-database.png" class="kg-image" alt="ZoomInfo's database of people profiles, company profiles, and contact information." loading="lazy" width="1683" height="816"></figure><p>Like Clearbit, ZoomInfo started out as a B2B company data provider. Over time, they expanded to cover all aspects of business management like marketing, operations, data services, and talent management.&nbsp;</p><figure class="kg-card kg-image-card"><img src="https://nubela-blog.sgp1.digitaloceanspaces.com/sapiengraph-live/2024/09/zoominfo-features-platforms.png" class="kg-image" alt="" loading="lazy" width="1482" height="747"></figure><p>If you’re running a big business and you’re tired of using 5 or 6 different providers to manage your sales, marketing, operations, data, and talent, you might want to consider ZoomInfo. Their comprehensive tools and extensive integrations mean that you can use them with your existing CRMs and other tools easily. Perfect if you’ve already gotten other parts of your business set up the way you like it.</p><p>Not only do they have an extensive database, (1.3B companies recorded, 100M published), they also have features like advanced search filters and an AI copilot. Included in their extensive search filters is something called Scoops that allows you to get really, really specific about what you’re searching for. And I do mean specific.&nbsp;</p><figure class="kg-card kg-image-card"><img src="https://nubela-blog.sgp1.digitaloceanspaces.com/sapiengraph-live/2024/09/zoominfo-feature-scoops.png" class="kg-image" alt="ZoomInfo's Scoops Feature with filters checked" loading="lazy" width="552" height="873"></figure><p>&nbsp;Their AI copilot also helps you to stay on top of your pipeline by suggesting actions for you to take in a timely fashion.</p><figure class="kg-card kg-image-card"><img src="https://nubela-blog.sgp1.digitaloceanspaces.com/sapiengraph-live/2024/09/Zoominfo-feature-ai.png" class="kg-image" alt="ZoomInfo's AI copilot providing recommended actions." loading="lazy" width="940" height="517"></figure><p>While other data providers may refresh their data points a few times a month, ZoomInfo says that they refresh data points on a daily basis. While this doesn’t preclude the possibility of having outdated information, they have a pretty solid track record of great data.</p><h3 id="zoominfo-ratings-reviews-425"><strong>ZoomInfo ratings &amp; reviews (4.2/5)</strong></h3><p>Right off the bat, we can see that the company is pretty highly rated on G2, Capterra, and Trustradius.&nbsp;</p><figure class="kg-card kg-image-card"><img src="https://nubela-blog.sgp1.digitaloceanspaces.com/sapiengraph-live/2024/09/zoominfo-rating.png" class="kg-image" alt="ZoomInfo reviews from G2, Capterra, Trustradius" loading="lazy" width="794" height="511"></figure><p>ZoomInfo has an average rating of 4.2. Not a surprise because they bring a lot to the table.&nbsp;</p><p>However, because of the vast amount of features they have, users can sometimes get lost or frustrated by the amount of effort needed to get everything set up in the initial stages. There’s a bit of a learning curve (as with any large product) and users have reported feeling frustrated with the lack of customer support available.&nbsp;</p><h3 id="zoominfo-pricing"><strong>ZoomInfo pricing</strong></h3><p>Like Clearbit, ZoomInfo doesn’t list their prices on their website. Cue, chorus of groaning from introverts around the world.&nbsp;</p><figure class="kg-card kg-image-card"><img src="https://nubela-blog.sgp1.digitaloceanspaces.com/sapiengraph-live/2024/09/zoominfo-pricing.png" class="kg-image" alt="ZoomInfo's pricing page." loading="lazy" width="1778" height="855"></figure><p>You have to get in touch with their sales team in order to figure out a custom package because they tailor their prices according to how many features you want to use and how many people in your company need access to the platform.&nbsp;</p><p>The good news is that you can sign up for only the features that you want. However, Will Aitken (Co-Founder of Sales Feed)mentioned that getting access to their data enrichment tools easily costs about $1000 a month, making it pretty much unaffordable for small businesses.&nbsp;</p><h3 id="who-should-try-zoominfo"><strong>Who should try ZoomInfo?</strong></h3><p>Large enterprises that are looking for an all-in-one solution and are scaling up their sales should definitely look into ZoomInfo for their data enrichment needs. For mid-sized and smaller companies, you can keep scrolling!</p><h2 id="apolloio"><strong>Apollo.io</strong></h2><p>Apollo.io is another popular end-to-end platform for sales teams out there. Unlike Clearbit and ZoomInfo which aim to become a comprehensive all-in-one solution for businesses, Apollo is more focused on the sales pipeline. Boasting 275M contacts from all over the world, they have a pretty large database of company information.</p><figure class="kg-card kg-image-card"><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdJu4nwsphrfx6N7dqD8H7B-OXk7q46rUMKCXkEkgy2huXoQP9jxsDJCLtH8-I3aMAkS0WWAr64quHBoX7PDT2WIAUm2jOYCZam1mkkRyE-USbKExxtEUynV9vlXd-7HfJ9DEiL6RLTzB2AsuCXvhz4ECy9?key=1c3B0mSdyL6BIr9N-JhFRA" class="kg-image" alt="Apollo.io's database and accuracy guarantee" loading="lazy" width="1402" height="727"></figure><p>If you’ve got existing CRMs or systems in place, you don’t need to worry because Apollo.io works with many of the popular platforms like Salesforce and Hubspot.&nbsp;</p><p>Apollo updates data signals like job changes or emails and phone numbers in real time, and runs monthly refreshes of their database to ensure that data accuracy.&nbsp;</p><p>They do a great job with workflow automation, letting you create something known as ‘Sequences’. These sequences let you automate multi-step processes for sales outreach like sending emails and making calls.&nbsp;</p><p>Like ZoomInfo, Apollo.io has an AI writing assistant that helps you create personalized emails for your prospects.</p><figure class="kg-card kg-image-card"><img src="https://nubela-blog.sgp1.digitaloceanspaces.com/sapiengraph-live/2024/09/apollo-feature-ai-writer.png" class="kg-image" alt="Apollo.io's AI writing assistant" loading="lazy" width="2766" height="1406"></figure><p>&nbsp;The AI writing assistant has a pretty helpful section in their personalization settings. You don’t need to manually prompt the AI, just fill in the empty boxes with the pertinent information and the AI will do the rest!</p><p>Personally, I was intrigued by Apollo’s in-built dialer. You don’t need to pick up your phone or type in numbers because Apollo can do it for you!&nbsp;</p><figure class="kg-card kg-image-card"><img src="https://nubela-blog.sgp1.digitaloceanspaces.com/sapiengraph-live/2024/09/apollo-feature-dialer.png" class="kg-image" alt="Apollo.io's inbuilt dialer" loading="lazy" width="3018" height="1522"></figure><p>Users from inside the US and Canada can use local numbers whereas users from other countries will have to request international phone numbers. International numbers are only available on certain plans so make sure you get the right one!</p><p>Apollo.io takes their regulations and compliance seriously so using their in-built dialer requires a lot of documentation. Check their requirements so that you don’t miss out on any!</p><h3 id="apolloio-ratings-reviews"><strong>Apollo.io ratings &amp; reviews</strong></h3><p>Apollo.io is pretty well-received and has an average rating of 4.5 across G2, Capterra, and Trustradius.&nbsp;</p><figure class="kg-card kg-image-card"><img src="https://nubela-blog.sgp1.digitaloceanspaces.com/sapiengraph-live/2024/09/apollo-rating.png" class="kg-image" alt="Apollo.io reviews from G2, Capterra, Trustradius" loading="lazy" width="794" height="511"></figure><p>Overall, users like Apollo.io’s intuitive interface and multiple integrations, particularly Bombora, which shows buying intent. Sales teams spent less time on trying to find email addresses or phone numbers and more time moving their leads through the pipeline instead.&nbsp;</p><p>Other users have run into issues with data accuracy, which is a common issue for all data providers when you’re crawling the interwebs for billions of contact data.</p><h3 id="apolloio-pricing"><strong>Apollo.io pricing</strong></h3><p>I’d like to thank Apollo.io for having a transparent pricing structure on their page. They have a free plan which is perfect for testing the waters. Their free plan comes with unlimited email credits (Yes you heard that right, it’s unlimited!), 60 mobile credits, and 120 export credits that are renewed every year. It’s not a lot for businesses that are aiming to pull in 50-100 sales a month, but it’s a good starting point for a startup.&nbsp;</p><figure class="kg-card kg-image-card"><img src="https://nubela-blog.sgp1.digitaloceanspaces.com/sapiengraph-live/2024/09/apollo-pricing.png" class="kg-image" alt="Apollo.io's pricing plan." loading="lazy" width="1681" height="818"></figure><p>Apollo.io’s most basic plan comes in at $49 per month for each user, which is still within the realm of affordable, and also gives you the option to add on credits if you run out at one point.</p><h3 id="who-should-try-apolloio"><strong>Who should try Apollo.io?</strong></h3><p>Small to mid-sized companies who only want a sales management solution can benefit from getting Apollo.io. Their affordable price and flexible credit system makes it easier to scale up as you go and they’re considerably easier to navigate compared to the vastness of bigger platforms!</p><h2 id="cognism"><strong>Cognism</strong></h2><p>Do you need three times more live conversations? That’s what Cognism promises to bring you. This UK based company says that they can connect you to 87% of your leads list because they verify all their contact numbers!&nbsp;</p><p>“Oh c’mon, surely all B2B databases verify contact information?”</p><p>Most of them do, but not all of them verify the numbers via phone. Cognism has something called Diamond Data where they verify the validity of their contacts by calling each of them one by one. Might sound a little crazy, but that’s what they do.</p><figure class="kg-card kg-image-card"><img src="https://nubela-blog.sgp1.digitaloceanspaces.com/sapiengraph-live/2024/09/cognism-feature-diamond-data.png" class="kg-image" alt="Cognism's Diamond Data" loading="lazy" width="697" height="567"></figure><p>As a result, they have a huge database of global direct dials and 98% of their mobile numbers are verified by humans. If you notice that one of your contacts hasn’t been verified, you can even request verification and Cognism will let you know if the contact is valid within 48 hours. They redial the numbers every year and a half (18 months) to make sure that the contacts are still valid and viable. Before you go rushing off to sign up though, just know that Diamond Data is only available on the enterprise plan!</p><p>Another one of Cognism’s boasts is their compliance. They have compliance teams that ensure their data aligns with the ISO 27001 and SOC2 frameworks. They are certified for ISO 27001, ISO 27701, and also SOC2 Type II.&nbsp;</p><figure class="kg-card kg-image-card"><img src="https://nubela-blog.sgp1.digitaloceanspaces.com/sapiengraph-live/2024/09/cognism-feature-compliance.png" class="kg-image" alt="Cognism's privacy compliances" loading="lazy" width="767" height="571"></figure><p>Cognism takes GDPR compliance pretty seriously. Not only do they tell their database about their information being in Cognism, they make sure that their data always complies with the latest international privacy standards. Besides that, Cognism cross-checks their database with global no-call registries so that you can reach your leads without worrying about privacy or legal issues. However this does mean that they don’t provide personal emails, but rather work email addresses only.</p><p>Use Professional Social Network frequently? Cognism also has a browser extension that can help you export data right into your account from public Professional Social Network profiles!</p><p>Both Cognism’s platform and extension work with popular CRM tools available in the market like Salesforce and Hubspot so you can integrate it into your workflow right away.&nbsp;</p><h3 id="cognism-ratings-reviews-435"><strong>Cognism ratings &amp; reviews (4.3/5)</strong></h3><p>Overall, Cognism has a 4.3 across three websites. That’s a pretty decent score.&nbsp;</p><figure class="kg-card kg-image-card"><img src="https://nubela-blog.sgp1.digitaloceanspaces.com/sapiengraph-live/2024/09/cognism-ratings.png" class="kg-image" alt="Cognism reviews from G2, Capterra, Trustradius" loading="lazy" width="794" height="511"></figure><p>Overall, users have mentioned that Cognism is pretty easy to pick up and integrate into their existing workflows. Customers based in the US mention that the quality of Cognism’s data is pretty good.</p><p>However, one thing that Cognism could stand to improve (according to other clients) is their global data. They seem to do well when it comes to the UK and the US but data accuracy drops in other countries, especially in Asia. If you’re thinking about expanding towards the east, you might have to look elsewhere for your data needs.</p><p>Generally speaking, Cognism responds pretty quickly to issues that pop up on their platform, making them pretty easy to work with. Props to their customer service team!</p><h3 id="cognism-pricing"><strong>Cognism pricing</strong></h3><p>Cognism doesn’t list their prices on their website. Like some of the other Clearbit alternatives here, they prefer to give every customer an individual price that depends on the type of licenses or the number of features they want.&nbsp;</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://nubela-blog.sgp1.digitaloceanspaces.com/sapiengraph-live/2024/09/Cognism-pricing-plans.png" class="kg-image" alt="" loading="lazy" width="660" height="522"><figcaption><span style="white-space: pre-wrap;">Cognism's pricing plan.</span></figcaption></figure><p>Unlike Clearbit and other competitors however, they have a platform access fee. Essentially, you pay one price for the data, and another to use the platform. The fee is supposed to cover maintenance, set-up, onboarding, and customer service for the platform.&nbsp;</p><p>I found a review that mentioned that Cognism started from about 20000 EUR/year for 100 users, which is akin to 185USD per user, per month. It’s not a thousand bucks, like ZoomInfo and some of the other available options, but it’s not exactly cheap either. Generally, it’s only a great option if you have the budget to spare.&nbsp;</p><p>Another thing to note is that Diamond Data (the human-verified phone contacts) is only available to people on the Enterprise plan, so if you’re signing up for that, you might be paying a hefty price.&nbsp;</p><h3 id="who-should-try-cognism"><strong>Who should try Cognism?</strong></h3><p>Mid to large sized companies with the budget for Diamond Data whose target is the US and UK market, and uses cold calls as their primary outreach. Not every company reaches out via phone call nowadays. If that’s you, then feel free to move on to another data provider. However, if you prefer connecting via mobile, their human-verified phone numbers are a good investment.&nbsp;</p><h2 id="lusha"><strong>Lusha</strong></h2><p>Another Clearbit alternative you can consider is Lusha. Lusha doesn’t have the biggest database in the B2B industry, but they make a claim for the most accurate database&nbsp;&nbsp;</p><figure class="kg-card kg-image-card"><img src="https://nubela-blog.sgp1.digitaloceanspaces.com/sapiengraph-live/2024/09/lusha-data-accuracy.png" class="kg-image" alt="Lusha's data coverage, business profiles, company profiles, and contact information" loading="lazy" width="1337" height="543"></figure><p>How do they do it? Basically Lusha has a community program that collects contact information from their client’s databases. If you opt to join this program, you give them access to your business emails and they cross-check the data you have in yours, with the data they have in theirs. Through this community program, Lusha ensures that the data they collect is accurate and reliable so you can double your connect rates.&nbsp;</p><figure class="kg-card kg-image-card"><img src="https://nubela-blog.sgp1.digitaloceanspaces.com/sapiengraph-live/2024/09/lusha-direct-dial.png" class="kg-image" alt="Lusha's direct dials" loading="lazy" width="1373" height="502"></figure><p>I get that it sounds a little scary, but please be assured that Lusha only accesses professional business data like email headers and signatures to validate and consolidate data. The community program also removes outdated information so that clients can get up to date data.&nbsp;</p><p>In accordance with privacy laws, Lusha notifies each professional of their data being collected and gives them instructions on how to manage or remove their profiles.&nbsp;</p><figure class="kg-card kg-image-card"><img src="https://nubela-blog.sgp1.digitaloceanspaces.com/sapiengraph-live/2024/09/lusha-feature-compliance.png" class="kg-image" alt="Lusha's privacy compliances" loading="lazy" width="1118" height="721"></figure><p>Lusha is GDPR and CCPA compliant and maintains SOC 2 Type 2, ISO 27001, and ISO 27018 certifications so you don’t need to worry about accidentally calling someone on a DNC list.</p><p>Lusha also tracks intent data for you and makes it easily available in both contact and company view.</p><figure class="kg-card kg-image-card"><img src="https://nubela-blog.sgp1.digitaloceanspaces.com/sapiengraph-live/2024/09/lusha-feature-intent.png" class="kg-image" alt="Lusha's intent data" loading="lazy" width="535" height="694"></figure><p>Lusha uses Bombora’s company surge to see how many people at a particular company are researching a topic, how often they read about it, and how long they spend on the topic. They analyze that data to create an intent score to tell you what a company currently has in mind. The moment you open a contact or company card, you can see their intent signals.&nbsp;</p><p>They might not have as many features as the giants in the industry, but they’re definitely one of the sales intelligence tools to consider.&nbsp;</p><h3 id="lusha-ratings-reviews-415"><strong>Lusha ratings &amp; reviews (4.1/5)</strong></h3><p>Lusha has a pretty decent rating of 4.1 and plenty of reviews so far.</p><figure class="kg-card kg-image-card"><img src="https://nubela-blog.sgp1.digitaloceanspaces.com/sapiengraph-live/2024/09/lusha-rating.png" class="kg-image" alt="Lusha reviews from G2, Capterra, Trustradius" loading="lazy" width="794" height="511"></figure><p>Lusha has their fair share of supporters. Most of them say that they found integration quite easy. While their desktop UI seems to be pretty intuitive and easy to use, other users have expressed dissatisfaction with their mobile interface because it doesn’t work as fast as expected. Sales teams that want to prospect on the go might want to look elsewhere for their tools.</p><h3 id="lusha-pricing"><strong>Lusha pricing&nbsp;</strong></h3><p>Lusha has four plans, the lowest one being the Pro plan at $49 per month, per user.&nbsp;</p><figure class="kg-card kg-image-card"><img src="https://nubela-blog.sgp1.digitaloceanspaces.com/sapiengraph-live/2024/09/lusha-pricing.png" class="kg-image" alt="Lusha's pricing plan, starting at $49/month/user" loading="lazy" width="1557" height="925"></figure><p>The amount of contact information you can get is dependent on your credits, which isn’t stated clearly in the pricing plans. If you’re on a higher plan and decide to downgrade, prepare to lose all the credits you haven’t used. Some users have said that the amount of data they get from Lusha is worth less than the price they pay, especially when it comes to the non-US market.&nbsp;</p><h3 id="who-should-try-lusha"><strong>Who should try Lusha??</strong></h3><p>Small to mid businesses who are just getting started in the global market. If you’re an enterprise user, you might want to look elsewhere because their credit system starts to eat up at costs as you scale up.&nbsp;</p><h2 id="lead411"><strong>Lead411</strong></h2><p>Lead411 is just over a decade old and is making great waves in the B2B data market. It’s pretty similar to Cognism and Lusha if you’re looking for alternatives for those two. They cover marketing and recruiting in addition to sales if you’re looking for something that’s more comprehensive.&nbsp;</p><figure class="kg-card kg-image-card"><img src="https://nubela-blog.sgp1.digitaloceanspaces.com/sapiengraph-live/2024/09/lead411-feature.png" class="kg-image" alt="Lead411's services as a whole." loading="lazy" width="1506" height="858"></figure><p>Lead411 also offers a browser extension, intent data, and API along with numerous integrations with existing CRMs.&nbsp;</p><p>They’re still primarily a lead intelligence software platform that provides contact data to sales and marketing teams. If you need some actionable information, they provide access to intent data from Bombora.</p><figure class="kg-card kg-image-card"><img src="https://nubela-blog.sgp1.digitaloceanspaces.com/sapiengraph-live/2024/09/lead411-feature-bombora.png" class="kg-image" alt="Lead411's intent data" loading="lazy" width="1920" height="867"></figure><p>Lead411 lets you choose something they call topics. You can choose to track topics like industries, competitors, or specific technology. So if your company sells medical instruments, Lead411 can keep you updated about which companies are currently looking to purchase medical equipment. It can also help you determine which of your customers are looking at alternatives so you can reduce your churn.&nbsp;</p><p>Set your worries at ease with double verified phone numbers and triple verified emails. Lead411 verifies their contact data manually by calling or emailing the numbers or addresses one by one.&nbsp;</p><figure class="kg-card kg-image-card"><img src="https://nubela-blog.sgp1.digitaloceanspaces.com/sapiengraph-live/2024/09/lead411-feature-verified-contacts.png" class="kg-image" alt="Lead411's double verified contact data" loading="lazy" width="685" height="277"></figure><p>For phone numbers, Lead411 verifies each one twice, once by manually dialing the numbers to make sure the right person picks up. The second time is done by looking up the location of the number to see if it matches the recipient.&nbsp;</p><p>As for emails, Lead411 checks the validity of the emails in their databases through SMTP and seeing if mail sent to that address is opened. They also have an AI to find the best possible matches for missing emails. Lead411 also reverifies these contacts every 3-6 months, ensuring that you get the most accurate information at all times. If there’s an urgent need, you can also request for real-time verification.&nbsp;</p><h3 id="lead-411-ratings-reviews-465"><strong>Lead 411 ratings &amp; reviews (4.6/5)</strong></h3><p>At a 4.6 rating, Lead411 is pretty highly rated compared to other products.&nbsp;</p><figure class="kg-card kg-image-card"><img src="https://nubela-blog.sgp1.digitaloceanspaces.com/sapiengraph-live/2024/09/lead411-ratings.png" class="kg-image" alt="Lead411 reviews from G2, Capterra, Trustradius" loading="lazy" width="794" height="511"></figure><p>As usual, I went to read the reviews so you didn’t have to. Customers have praised Lead411 for their prompt customer service and overall great data. There’s also been notes about they’re pretty much value for money because you get unlimited data for a single price.&nbsp;</p><p>Accuracy wise, there are some issues here and there with outdated information as with most data companies. Some users have also expressed that they would prefer to have more filtering options available. Regardless, it’s a pretty decent product worth your money.&nbsp;</p><h3 id="lead411-pricing"><strong>Lead411 pricing</strong></h3><p>You can get Lead411’s Basic Plus Unlimited at $99 per month, per user.</p><figure class="kg-card kg-image-card"><img src="https://nubela-blog.sgp1.digitaloceanspaces.com/sapiengraph-live/2024/09/lead411-pricing.png" class="kg-image" alt="Lead411's pricing, starting at $99/month/user" loading="lazy" width="1540" height="886"></figure><p>The $99 basic plus unlimited plan comes with unlimited email views and unlimited direct phone number views. They also roll over your unused exports as long as you’re subscribed. If you need more exports, you can purchase them as needed.</p><p>But if you’re thinking of subscribing to get their Bombora intent data, you should know that it costs an additional $2500 per user and can only be added onto the Enterprise plan, meaning to say that you have to upgrade your Basic Unlimited plan in order to get the intent data!</p><h3 id="who-should-try-lead411"><strong>Who should try Lead411</strong></h3><p>Mid to large businesses who need to hit specific sales goals within a specific time frame within the US. They have a limited global database so if you’re looking to expand worldwide, go to the next.&nbsp;</p><h2 id="uplead"><strong>UpLead</strong></h2><p>Up next is UpLead! With a total of 155M contacts and 16M global company profiles, their database is a smidge smaller than other sales and lead intelligence companies, but they guarantee 95% accuracy.&nbsp;</p><p>When you look up email data or contact information, UpLead will then tell you if the information is valid or invalid. 95% of verified, “valid” information is accurate so you can easily contact your leads and increase your sales engagement.</p><figure class="kg-card kg-image-card"><img src="https://nubela-blog.sgp1.digitaloceanspaces.com/sapiengraph-live/2024/09/uplead-data-accuracy.png" class="kg-image" alt="Uplead's database of B2B contacts and accuracy guarantee" loading="lazy" width="1487" height="592"></figure><p>One thing I like about UpLead is the option to download only valid contact data. Your credits only get deducted when you hit the download button, so you can save on credits by only downloading valid information.&nbsp;</p><p>They cover 50+ data enrichment points that encompass most firmographic and technographic aspects so that you can upgrade your lead prospecting pipeline. However that extent of enrichment is only available through their Enterprise plan so be warned!</p><figure class="kg-card kg-image-card"><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfwAFXwOyKWCz3REWx95DhqNQxVhgR7eqWPbNDlB1ci3cBWmcIgcURRIK6J4cUohexdNxthTtdjoOFWc17Los9vWJFdUXcJp3QWv2J-_73wsRcTbefiDoBRSlGGpyB6wr37FZrfCs7yn__5ji7Xg1YEMASk?key=1c3B0mSdyL6BIr9N-JhFRA" class="kg-image" alt="UpLead's verified B2B contact information" loading="lazy" width="1600" height="729"></figure><p>Uplead refreshes their data daily and verifies contact information in real time. They even rank leads according to their freshness so that you can get accurate and up-to-date information at your fingertips.&nbsp;</p><p>Their easy no-fluff UI makes it easy for users to get started immediately.&nbsp;</p><h3 id="uplead-ratings-reviews-3655"><strong>UpLead ratings &amp; reviews (3.65/5)</strong></h3><p>Uplead ranks lower than the rest of the recommendations on the list with an overall rating of 3.65.&nbsp;</p><figure class="kg-card kg-image-card"><img src="https://nubela-blog.sgp1.digitaloceanspaces.com/sapiengraph-live/2024/09/uplead-ratings.png" class="kg-image" alt="UpLead reviews from G2, Capterra, Trustradius" loading="lazy" width="794" height="511"></figure><p>While UpLead promises a lot of accuracy and better B2B lead generation, it seems that a lot of their contacts are outdated. The common complaint across the bad reviews say that their data is outdated compared to other companies and that their customer service is a little lacking. However, there are just as many reviews that claim that the accuracy is decent and that the emails are correctly verified, helping companies to reduce bounce rates.</p><p>Still, people have complained about the lack of transparency in their billing system so please be careful when you sign up!</p><h3 id="uplead-pricing"><strong>UpLead pricing</strong></h3><p>All the pricing information is available on UpLead’s website. They have 3 available plans for all your needs.</p><figure class="kg-card kg-image-card"><img src="https://nubela-blog.sgp1.digitaloceanspaces.com/sapiengraph-live/2024/09/uplead-pricing.png" class="kg-image" alt="UpLead's pricing, starting from $99/month" loading="lazy" width="1198" height="860"></figure><p>Prices start at $99 per month for 170 credits that you can use to look up verified email addresses and mobile phone numbers. You can also get their chrome extension for free. Because it’s a credit based system, they don’t base it off the number of seats.</p><p>Buyer intent data, more comprehensive CRM integrations,&nbsp; and API access are only available through their custom packages so if you’re looking to use all of these features, you’ll have to give them a call.&nbsp;</p><h3 id="who-should-try-uplead"><strong>Who should try UpLead</strong></h3><p>Mid-sized companies who place emphasis on accurate leads and have the budget for the enterprise plan, but don’t want to take it further than that. If you’re paying $99 a month to get emails and numbers, you’re better off using Sapiengraph if you’re a Google Sheets fan, or Proxycurl if you like APIs.&nbsp;</p><h2 id="rocketreach"><strong>RocketReach</strong></h2><p>RocketReach has rocketed their way into a few lists over the past few years as a great sales intelligence solution.&nbsp;</p><p>The platform offers a database with more than 700M person profiles and 60M companies, promising a 98% deliverability rate for their Grade A emails.&nbsp;</p><figure class="kg-card kg-image-card"><img src="https://nubela-blog.sgp1.digitaloceanspaces.com/sapiengraph-live/2024/09/rocketreach-data-.png" class="kg-image" alt="RocketReach's database of person profiles and contact information." loading="lazy" width="590" height="768"></figure><p>RocketReach has a community program as well. When you sign up, it gives RocketReach access to your email contacts so that they can cross check their information against yours.</p><p>RocketReach is very careful about being GDPR compliant and will remove data if requested. If that happens, the individual will be struck from their database. They also hide profiles that don’t meet their standards, choosing to offer a fewer number of high quality profiles instead of a large number of low quality profiles.&nbsp;</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://nubela-blog.sgp1.digitaloceanspaces.com/sapiengraph-live/2024/09/rocketreach-feature-intent-1.png" class="kg-image" alt="" loading="lazy" width="1277" height="410"><figcaption><span style="white-space: pre-wrap;">RocketReach's data coverage</span></figcaption></figure><p>A lot of companies promise real-time verification and RocketReach does the same. If you use their browser extension on Professional Social Network to look up a person, their information will be verified in real-time. Other contacts are refreshed about once a month.&nbsp;</p><p>RocketReach also does something called Lookalike Audiences that takes lead prospecting one step further. Basically, they recommend profiles for you based on who you’ve been looking at so that you can grow your network faster.&nbsp;</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdT4CLQPnM-wNw92g0_3zDaVhJdqVN5HTbvEeamvg31-zZcrzg8NLB9gGrLL6zucd5shrS52vvz7CIXV-Rbt2i-ak9lUH22V33JQ6Rcrl3K2B40YJhx_qaEQDp_PjxBpVFDNhgmYx_NI9Ow223bYX82N4J8?key=1c3B0mSdyL6BIr9N-JhFRA" class="kg-image" alt="" loading="lazy" width="1462" height="683"><figcaption><span style="white-space: pre-wrap;">RocketReach's Lookalike Audiences</span></figcaption></figure><h3 id="rocketreach-ratings-and-reviews-415"><strong>RocketReach ratings and reviews (4.1/5)</strong></h3><p>RocketReach stands at about 4.1 on average. They’ve got a pretty loyal customer base so far.</p><figure class="kg-card kg-image-card"><img src="https://nubela-blog.sgp1.digitaloceanspaces.com/sapiengraph-live/2024/09/Rocketreach-ratings.png" class="kg-image" alt="RocketReach reviews from G2, Capterra, Trustradius" loading="lazy" width="794" height="511"></figure><p>Aside from its affordability (which I’m going to cover in a bit), users praise the ability to scrape fresh data immediately by using their browser extension. Their extension is a hit with most of their users and if you’re someone who spends a lot of time browsing Professional Social Network, maybe you can consider RocketReach.</p><p>Other users do raise a point in which they say that the number of available integrations should be improved overall.&nbsp;</p><h3 id="rocketreach-pricing"><strong>RocketReach pricing</strong></h3><p>You can get easy access to RocketReach’s pricing information on their website, with their essentials plan starting at $70 a month per user.&nbsp;</p><figure class="kg-card kg-image-card"><img src="https://nubela-blog.sgp1.digitaloceanspaces.com/sapiengraph-live/2024/09/rocketreach-pricing-1.png" class="kg-image" alt="RocketReach's pricing plans starting at $48/month" loading="lazy" width="1211" height="848"></figure><p>At that price point, you get access to most of the basics that you need like exports, charts, API access, their browser extension and integration with Zapier. You can use Zapier to then integrate RocketReach with other <a href="https://www.techimply.com/software/crm-software?ref=nubela.co" rel="noreferrer">CRM software</a> if you’d like.&nbsp;</p><p>However, if you’re looking to integrate this fully into your workflow right off the bat, you’re going to need to get the Pro plan or higher.&nbsp;</p><p>Please do note that phone data is only available on plans that are higher than Essentials so companies that operate by cold calling are going to have to get a more expensive plan!</p><h3 id="who-should-try-rocketreach"><strong>Who should try RocketReach</strong></h3><p>Mid to large companies who want personal contact information in addition to professional contact information and a pretty high sales target. I feel like 500 emails a day is way too much for anyone to need because we’re looking for quality leads, but your mileage may vary.&nbsp;</p><h2 id="leadfeeder-dealfront"><strong>Leadfeeder (Dealfront)</strong></h2><p>With more than a decade in the industry, Leadfeeder is a pretty solid sales tool in the market. At the moment, Leadfeeder’s main attraction is their website visitor identification.&nbsp;</p><p>If you want to know who’s lurking on your website, just install the Leadfeeder Tracker script. Leadfeeder runs a reverse DNA lookup to return the hostname of an IP address. They check this against a database of known IPs and tell you exactly who’s visiting your website.&nbsp;</p><p>Most of the time, people who are already on your website are hot leads. Chances are that they are pretty far along in their purchasing pipeline so they’re low hanging fruit. Once Leadfeeder figures out who’s been looking at your website, they also add information about how big the company is, what kind of industry they’re from, and where they’re located.&nbsp;</p><p>You can also get a bigger, better understanding of what the company is like by retrieving firmographic data using their IP Enrich API.&nbsp;</p><figure class="kg-card kg-image-card"><img src="https://nubela-blog.sgp1.digitaloceanspaces.com/sapiengraph-live/2024/09/leadfeeder-feature-ip-enrich.png" class="kg-image" alt="Leadfeeder's IP enrich API" loading="lazy" width="1093" height="662"></figure><p>This API basically retrieves all the information associated with that particular IP address and helps you to understand who exactly is visiting your side and from where.&nbsp;</p><h3 id="leadfeeder-ratings-reviews-425"><strong>Leadfeeder ratings &amp; reviews (4.2/5)</strong></h3><p>On average, Leadfeeder comes in at 4.2 across the three platforms.&nbsp;</p><figure class="kg-card kg-image-card"><img src="https://nubela-blog.sgp1.digitaloceanspaces.com/sapiengraph-live/2024/09/leadfeeder-ratings.png" class="kg-image" alt="Leadfeeder reviews from G2, Capterra, Trustradius" loading="lazy" width="794" height="525"></figure><p>There has been mixed reviews about Leadfeeder. Given that it operates mostly upon intent data and IP information, their B2B data enrichment sometimes leaves something to be desired. Users mentioned that the available integrations don’t work as smoothly as they’d like.&nbsp;</p><h3 id="leadfeeder-pricing"><strong>Leadfeeder pricing</strong></h3><p>Very transparent, there are only 2 prices. Either you’re on the free plan where you can see data in the past week and only from 100 companies, or you’re on the paid plan at $99 per month.&nbsp;</p><figure class="kg-card kg-image-card"><img src="https://nubela-blog.sgp1.digitaloceanspaces.com/sapiengraph-live/2024/09/leadfeeder-pricing.png" class="kg-image" alt="Leadfeeder's pricing plan starting at $99 a month" loading="lazy" width="1401" height="807"></figure><p>One of the things I like is that the free plan only considers identified companies. As in if 10 employees at Company A visit your website a total of 50 times, they will still consider it as 1 company because they have been identified as belonging to Company A.&nbsp;</p><h3 id="who-should-try-leadfeeder"><strong>Who should try Leadfeeder</strong></h3><p>Large companies looking to convert web visitors into proper leads. It’s a little steep for smaller companies that may not even get that many anonymous visitors, or have trouble doing the outreach to convert these anonymous leads.</p><h2 id="6sense"><strong>6sense</strong></h2><p>6sense pretty much coined the term Dark Funnel to refer to buyer intent information. They made a name for themselves with regards to predictive analysis based on this invisible, great data (their words not mine!). Basically, they use a combination of first party and third party data to take a look at who’s been lurking on your website and then tell you what to do about that.</p><p>Like Leadfeeder (Or maybe it’s the other way around?), they perform reverse IP lookups to identify anonymous website visitors. This way, you can identify about 25% of your web visitors. They also partner with external websites that collect user engagement through cookies, aka what they were doing before they were looking at your website. This also means they cover who’s been looking at industry publications, influence outlets, blogs, product reviews, social media and other places aside from your company website. Combined with AI analysis, 6sense says they can give you a pretty accurate overview of who is actively looking for solutions that you can provide.&nbsp;</p><p>Now, they don’t stop at website visitors. 6sense has since expanded to provide B2B Data for all your sales and marketing needs. They refresh their data every 45 to 60 days and add data every single month. Firmographic data and technographic data are updated daily and bi-weekly respectively.</p><figure class="kg-card kg-image-card"><img src="https://nubela-blog.sgp1.digitaloceanspaces.com/sapiengraph-live/2024/09/6sense-data.png" class="kg-image" alt="6sense's database of profiles and contact information" loading="lazy" width="1592" height="461"></figure><p>As of now, they track 500B intent signals every month and have published about 65M company profiles worldwide.&nbsp;</p><p>I was curious about their verification processes but 6sense doesn’t divulge much. It appears that they use a combination of their own proprietary artificial intelligence and human verification to ensure that the contact data that you get is accurate.&nbsp;&nbsp;</p><figure class="kg-card kg-image-card"><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfW9SfTtdsXuxnSOpgErPITfxz8l4gPqhGYz_BZzUrnmD4IuVmktfhzpGZpGkf2wrKShVz2ivMxmMayhtSJlsmmvbzOhyaN_qSU-L82XrPi8QBQkvEaQbe4i3kUx3KiPj6GZ7b2irX8ABM7bvc-8Hqc93tW?key=1c3B0mSdyL6BIr9N-JhFRA" class="kg-image" alt="6sense's B2B accuracy guarantee" loading="lazy" width="895" height="575"></figure><p>As with many of the Clearbit Alternatives I’ve talked about so far, they have an API that can be integrated into your workflows.&nbsp;</p><figure class="kg-card kg-image-card"><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXd6oYJX8zsybisDROgolTydhBbS0R2gYonmvvNrWtNbVfSFvZe_lEoAltAF8x40AoiNFeHd4wqKiLjS6cGB0hgINUIKUdSNmSQz_xaiPhHMh6eVwYY48NSCD6P8d6xZHHD0SBQdH8rWum3vmjMA-_GkSCw?key=1c3B0mSdyL6BIr9N-JhFRA" class="kg-image" alt="6sense's API workflows" loading="lazy" width="1255" height="653"></figure><h3 id="6sense-ratings-reviews-425"><strong>6sense ratings &amp; reviews (4.2/5)</strong></h3><p>6sense is rated pretty much the same as Leadfeeder at 4.2.</p><figure class="kg-card kg-image-card"><img src="https://nubela-blog.sgp1.digitaloceanspaces.com/sapiengraph-live/2024/09/6sense-ratings.png" class="kg-image" alt="6sense reviews from G2, Capterra, Trustradius" loading="lazy" width="794" height="511"></figure><p>If you head on over to 3rd party review sites, most of them have a decent view of 6sense. In terms of revenue insights and their predictive analytics, 6sense is particularly solid. Some users have mentioned that 6sense doesn’t have a great UI, citing long loading times and a steep learning curve as a turn off. Tech-savvy users probably won’t have too hard of a time, but the process of setting up the service in the first place has a little bit of a learning curve.</p><h3 id="6sense-pricing"><strong>6sense pricing</strong></h3><p>We’re back to no transparent pricing on the website, folks!&nbsp;</p><figure class="kg-card kg-image-card"><img src="https://nubela-blog.sgp1.digitaloceanspaces.com/sapiengraph-live/2024/09/6sense-pricing.png" class="kg-image" alt="6sense's pricing plans" loading="lazy" width="1427" height="913"></figure><p>I went digging so you don’t have to and so far, it seems prices range from $1000 to $2500 per user, per year. That’s about $80 to $200 a month (give or take a few dollars).</p><p>If you’re on the lowest plan, 80 bucks is a decent price. However, if you’re running a small company that needs more users, then things can get a little pricier.&nbsp;</p><h3 id="who-should-try-6sense"><strong>Who should try 6sense</strong></h3><p>Mid to large sized companies who need a more ABM-focused approach to their sales and marketing. Their buyer intent data and marketing capabilities can help you narrow down exactly where you should be focusing your marketing efforts.</p><h2 id="adaptio"><strong>Adapt.io</strong></h2><p>Adapt.io says that they have the most extensive and precise industry database. Their repository of contact information is currently at 250M+ B2B contacts and they have the company data of about 10M+ companies, their industry, employee count, and revenue. They’ve also got about 250M of B2B contacts that include emails, mobile numbers, and locations.&nbsp;</p><figure class="kg-card kg-image-card"><img src="https://nubela-blog.sgp1.digitaloceanspaces.com/sapiengraph-live/2024/09/adapt-data.png" class="kg-image" alt="Adapt.io's database of profiles and contact information" loading="lazy" width="791" height="632"></figure><p>Adapt has a more extensive database for technology sectors. If you have a particularly niche sector or type of business you want to deal with, you can probably search for it in their existing database.&nbsp;</p><figure class="kg-card kg-image-card"><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfHcOl22q1GzdhPqPALLi0BMyBDjIWPWIJRutEWJ8A0KuLDygB_RiE0vqlMAtbcNArl4wG1uO8VMArYjuv79o3JmbxmEvrxiBmO_m-Ji_bBqRz6tk-X1ZmbSQUCEy0plL2NT4eQJMs0qcpEH_GFferH7uVC?key=1c3B0mSdyL6BIr9N-JhFRA" class="kg-image" alt="Adapt.io's targeting and identification capabilities" loading="lazy" width="1536" height="671"></figure><p>Adapt.io promises real-time data updates so that you can make better decisions and engage your customers easily. They also claim to have really great customer service on call to answer your questions regardless of time and place.&nbsp;</p><h3 id="adaptio-ratings-reviews-405"><strong>Adapt.io ratings &amp; reviews (4.0/5)</strong></h3><p>Adapt.io has an average of 4.0 across three platforms. Not too shabby.&nbsp;</p><figure class="kg-card kg-image-card"><img src="https://nubela-blog.sgp1.digitaloceanspaces.com/sapiengraph-live/2024/09/adapt-ratings.png" class="kg-image" alt="Adapt.io reviews from G2, Capterra, Trustradius" loading="lazy" width="794" height="511"></figure><p>One of the main issues that has been raised is the number of credits in proportion to the price. And given that (like all other platforms) data accuracy and availability can be an issue depending on your industry and geographic location, you might find yourself needing to buy more credits pretty quickly.&nbsp;</p><h3 id="adaptio-pricing"><strong>Adapt.io pricing</strong></h3><p>You can see an upfront overview of how many credits you get in each plan, starting at $49 a month.</p><figure class="kg-card kg-image-card"><img src="https://nubela-blog.sgp1.digitaloceanspaces.com/sapiengraph-live/2024/09/adapt-pricing.png" class="kg-image" alt="Adapt.io's pricing plans, starting at $49/month" loading="lazy" width="1482" height="782"></figure><p>The starter plan is enough for you to dip your toes in and try out their data enrichment plans. It works well enough for smaller businesses and allows them the opportunity to scale up to a custom package later on. However, if I’m being honest, you can get more credits for the same price with other companies. I recommend testing their free option to see if their data accuracy is worth their limited credits.&nbsp;</p><h3 id="who-should-try-adaptio"><strong>Who should try Adapt.io</strong></h3><p>Mid-sized businesses that want a scalable option for their data enrichment needs. It’s just a little pricey for smaller companies, but a great starting point for those who are already well-established, but want an upgradable option.</p><h2 id="professional-social-network-sales-navigator"><strong>Professional Social Network Sales Navigator</strong></h2><p>If you’re in the sales and marketing world, you’ve definitely heard of Professional Social Network Sales Navigator. It’s designed to help you prospect and build relationships within Professional Social Network.</p><p>Professional Social Network Sales Navigator isn’t one of the end-to-end platforms I’ve introduced in this article so far. They mainly focus on prospecting via advanced search capabilities, then building connections via their real-time insights and inMail Messaging. It sounds a little plain when compared to the comprehensive solutions that other companies provide.</p><figure class="kg-card kg-image-card"><img src="https://nubela-blog.sgp1.digitaloceanspaces.com/sapiengraph-live/2024/09/Professional Social Network-features.png" class="kg-image" alt="Professional Social Network Sales Navigator database, search, and customer insights" loading="lazy" width="1457" height="478"></figure><p>Anyone who wants the kind of bells and whistles that come with an extensive sales and marketing platform, you can still use Professional Social Network Sales Navigator because they have a lot of CRM integrations possible.&nbsp;</p><p>Their InMail feature and relationship tracking system sounds quite neat since people are more likely to want to explore a company that has some sort of connection to them, but it might be a hit or miss depending on your niche or industry.&nbsp;</p><h3 id="professional-social-network-sales-navigator-ratings-reviews-445"><strong>Professional Social Network Sales Navigator ratings &amp; reviews (4.4/5)</strong></h3><p>Beloved by sales professionals all over the world, Professional Social Network Sales Navigator averages in at 4.4 on three websites.&nbsp;</p><figure class="kg-card kg-image-card"><img src="https://nubela-blog.sgp1.digitaloceanspaces.com/sapiengraph-live/2024/09/Professional Social Network-ratings.png" class="kg-image" alt="Professional Social Network Sales Navigator reviews from G2, Capterra, Trustradius" loading="lazy" width="794" height="511"></figure><p>I don’t think a lot of people can complain about Sales Navigator. When it comes down to the basics, Professional Social Network Sales Navigator does what it says. The only problem is the price point because other B2B data companies provide more with the same price. The fact that every plan gets only 50 InMail messages feels a little criminal to me.&nbsp;</p><h3 id="professional-social-network-sales-navigator-pricing"><strong>Professional Social Network Sales Navigator pricing</strong></h3><p>If you head to their pricing page, they don’t say much about what it costs, but you can easily unearth their prices elsewhere.</p><figure class="kg-card kg-image-card"><img src="https://nubela-blog.sgp1.digitaloceanspaces.com/sapiengraph-live/2024/09/Professional Social Network-pricing.png" class="kg-image" alt="Professional Social Network Sales Navigator pricing" loading="lazy" width="1141" height="797"></figure><p>The most basic version of Professional Social Network Sales Navigator starts at $99 a month. That’s a little steep for a small business but probably peanuts to someone who’s running a multi-million dollar enterprise.&nbsp;</p><p>Their core plan does not come with a lot, but you do get access to their search filters, relationship explorers, and real-time alerts.&nbsp;</p><h3 id="who-should-try-professional-social-network-sales-navigator"><strong>Who should try Professional Social Network Sales Navigator</strong></h3><p>Mid-sized companies or larger who are targeting large sales numbers every month. For that price point, you can get a cheaper deal with similar leads</p><h2 id="seamlessai"><strong>Seamless.ai</strong></h2><p>They call themselves the first and only real-time search engine for B2B sales leads. Seamless has an artificial intelligence search engine that they say can help you build a pipeline or close more deals.&nbsp;</p><figure class="kg-card kg-image-card"><img src="https://nubela-blog.sgp1.digitaloceanspaces.com/sapiengraph-live/2024/09/seamless-feature-data.png" class="kg-image" alt="Seamless.ai's database and ROI." loading="lazy" width="928" height="317"></figure><p>They have a grand total of 1.9B+ contact data (and counting). Granted, the number is a combination of contact data and company profiles, but that’s still a pretty good number.&nbsp;</p><p>Seamless primarily uses AI and machine learning to verify the data they get from companies and uses the same AI to help suggest the right prospects for you.&nbsp;</p><figure class="kg-card kg-image-card"><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXd0VVv-hrX56yU9Ro2EX2fEX7WWMJNWHye1rhnN-7sGbWV1p7fNLsG3L62khMdihQgj8O2WDX0P81WiVEpAKWpW-HCAsKYdR3pl-arhoCykisWXodDsts9n8DzOVlvJvwWZq3IETdWImFcQv5PNhrhv6No?key=1c3B0mSdyL6BIr9N-JhFRA" class="kg-image" alt="Seamless.ai's prospecting autopilot" loading="lazy" width="1345" height="750"></figure><p>Seamless also offers an AI writing assistant. If you’re new to writing, this assistant can be pretty decent cause it has a prompt library where you can select the type of writing/script that needs to be done. You can also customize the tone of voice and the information that you want to add in their settings feature.</p><p>It does take a little bit of time to set up, but it could be pretty useful for people who do a lot of outreach every single day.</p><h3 id="seamlessai-ratings-reviews-375"><strong>Seamless.ai ratings &amp; reviews (3.7/5)</strong></h3><p>Seamless scores about 3.7 overall. Not the best compared to the other alternatives I’ve listed here.&nbsp;</p><figure class="kg-card kg-image-card"><img src="https://nubela-blog.sgp1.digitaloceanspaces.com/sapiengraph-live/2024/09/seamless-ratings.png" class="kg-image" alt="Seamless.ai reviews from G2, Capterra, Trustradius" loading="lazy" width="794" height="511"></figure><p>From the look of the reviews, they have a decent database that could be improved. When it comes to the product itself, most of the reviews are quite complimentary. However, some users have expressed their dissatisfaction about the lack of transparency in the contract terms regarding the cancellation period.&nbsp;</p><h3 id="seamlessai-pricing"><strong>Seamless.ai pricing</strong></h3><p>You can test out Seamless’s free plan to get a taste of what they have to offer. They have 50 credits that you can use to access emails or mobile numbers.</p><figure class="kg-card kg-image-card"><img src="https://nubela-blog.sgp1.digitaloceanspaces.com/sapiengraph-live/2024/09/seamless-pricing.png" class="kg-image" alt="Seamless.ai pricing plans" loading="lazy" width="1368" height="922"></figure><p>Did I go digging again? Yes. Recent reviews have mentioned that they paid around $3000-3800 for a year’s subscription, bringing the average to about $316 a month for what appears to be the Pro plan.&nbsp;</p><p>Do take note that their Basic plan comes with 250 credits that are refreshed monthly while the Pro plan and above have daily credit refreshes. Their AI writer is also listed as an Add-On that isn’t included in whatever base price you’re quoted.&nbsp;</p><h3 id="who-should-try-seamlessai"><strong>Who should try Seamless.ai</strong></h3><p>Mid to large enterprises. If you’re a small business thinking of the basic plan, you’re probably better off using other services because you get more bang for your buck with more features. For bigger companies who can afford all the add-ons, Seamless is a pretty decent choice.</p><h2 id="leadforensics"><strong>LeadForensics</strong></h2><p>LeadForensics leans towards deciphering anonymous website visitors like Leadfeeder and Seamless.&nbsp;</p><p>Similarly, they use reverse-IP tracking to match the IPs of website visitors with known company IPs in their database. After they identify who’s been looking at your website, you can use that information to get contact details of these companies and pitch your product in a personalized manner.</p><p>If you’ve got an ICP ready, you can upload it to LeadForensics and they’ll send you an alert if someone who fits that ICP visits your website.You can also segment your visitors according to firmographics, making it easier to get a handle on your audience and market.&nbsp;</p><p>Where does the contact data come from? Well, LeadForensics gets them from approved third party sources and verifies or enriches them in-house. However, they’re very upfront about not having personally identifying details so if you’re looking for direct personal numbers or emails, this isn’t for you.</p><p>LeadForensics is fully GDPR compliant, making them a good choice for businesses who are looking to take things internationally. They don’t have SOC2 Type II certification, but they do have BS EN ISO/ IEC 27001:2017 certification, which means they’ve established, implemented, maintained and are improving their information security management system.&nbsp;</p><h3 id="leadforensics-ratings-reviews-415"><strong>LeadForensics ratings &amp; reviews (4.1/5)</strong></h3><p>Overall, LeadForensics gets a 4.1 across three sites, which is pretty decent.</p><figure class="kg-card kg-image-card"><img src="https://nubela-blog.sgp1.digitaloceanspaces.com/sapiengraph-live/2024/09/lead-forensics-rating.png" class="kg-image" alt="LeadForensics reviews from G2, Capterra, Trustradius" loading="lazy" width="794" height="511"></figure><p>According to the existing users, LeadForensics is pretty great at deanonymizing web visitors. It’s got a lot of features, some of which go unused by smaller teams because there’s just too many of them.&nbsp;</p><p>However, since they don’t actually have their own database of contact data, you might run into some problems with data accuracy and availability, especially when it comes to global data.&nbsp;</p><h3 id="leadforensics-pricing"><strong>LeadForensics pricing</strong></h3><p>LeadForensics only has 2 plans at the moment: Essential and Automate. </p><figure class="kg-card kg-image-card"><img src="https://nubela-blog.sgp1.digitaloceanspaces.com/sapiengraph-live/2024/09/leadforensics-pricing.png" class="kg-image" alt="LeadForensic's pricing plans" loading="lazy" width="1552" height="647"></figure><p>I went a-looking for prices and found a couple of anecdotes about it being around $260-$500 per month, but then it depends on the volume of your website traffic.&nbsp;</p><p>LeadForensics does things a little differently when it comes to customizing packages because your quote will be based on the amount of traffic you see during your free trial. Do be careful about their contract and renewal though, some users have complained about being locked into long contract terms with no way out.&nbsp;</p><h3 id="who-should-try-leadforensics"><strong>Who should try LeadForensics</strong></h3><p>Mid to large companies looking for a long term website analytics solution and can afford to commit for 3-5 years. If you don’t want the commitment, maybe it’s better to not!</p><h2 id="demandbase"><strong>Demandbase</strong></h2><p>Demandbase is another Clearbit alternative that gives you access to the identities of your anonymous website visitors, and buyer intent. But not just any intent data, all the intent data. You want Bombora surge? No problem. G2? Sure. TrustRadius? Of course. Use another website for your data? They’ll import it for you.</p><figure class="kg-card kg-image-card"><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXeIhx-birlrfCFzvdrr8JwPq-6JcGcfyCKJoN9K9lOW8WBbEbo2J6P7qNwxQpKZWIlWERFTaNlDpbT7LZV9_7jBbL93zKwQDmF7aVzw09M7Y56dB5eb7y4TXmKn6nuyjk0myVZXmHeWyozgi23eAt8pUJU?key=1c3B0mSdyL6BIr9N-JhFRA" class="kg-image" alt="Demandbase's Go-to-market Platform" loading="lazy" width="1536" height="736"></figure><p>They don’t stop there though, they use whatever buying signals or intent data they have, and combine it with artificial intelligence and natural language processing. You can keep track of unlimited keywords relevant to your products or your competitors, in 133 different languages. Multilingual sales intelligence tools are less common but Demandbase is one of them!</p><p>DemandBase has 150M+ contacts in 195 countries worldwide, curated by their own AI. They don’t promise any sort of accuracy but they have great search functions where you can search by titles so you can get to decision-makers faster.&nbsp;</p><figure class="kg-card kg-image-card"><img src="https://nubela-blog.sgp1.digitaloceanspaces.com/sapiengraph-live/2024/09/demandbase-data.png" class="kg-image" alt="Demandbase's database of profiles and contact information" loading="lazy" width="1261" height="405"></figure><p>Now, DemandBase says that their data is sourced from multiple places and validated through AI and machine learning so it’s supposed to be pretty accurate. If it’s not, you can flag the information as wrong so their fully human team can re-verify the info.&nbsp;</p><p>Want to keep up with relevant news? Demandbase makes it easier by putting business-relevant news into your feed so that you can stay up to date with topics like financial decisions, real estate deals, operational changes, and leadership changes. If these don’t appeal to you, no worries. You can set up custom trackers to hunt down the most relevant news for your business and search for specific keywords.&nbsp;</p><h3 id="demandbase-ratings-reviews-435"><strong>Demandbase ratings &amp; reviews (4.3/5)</strong></h3><p>Demandbase gets an average of 4.3.&nbsp;</p><figure class="kg-card kg-image-card"><img src="https://nubela-blog.sgp1.digitaloceanspaces.com/sapiengraph-live/2024/09/demandbase-ratings.png" class="kg-image" alt="Demandbase reviews from G2, Capterra, Trustradius" loading="lazy" width="794" height="511"></figure><p>The company does pretty well in terms of getting you intent data and deanonning web visitors. There’s mixed reviews about their reporting, with some people saying that they don’t get enough customization, while others say it’s perfectly fine. While Demandbase does come with numerous CRM integration capabilities, reviews have mentioned that the setup takes time and more tech know-how than an average sales person might have.</p><p>Some of the reviews have also mentioned the price point as an issue and ended up having to remove it from their workflow. And despite having 133 languages available, it appears that their data isn’t that great in non-Anglophone areas.&nbsp;</p><h3 id="demandbase-pricing"><strong>Demandbase pricing</strong></h3><p>Demandbase only does custom packages based on your company’s needs.&nbsp;</p><figure class="kg-card kg-image-card"><img src="https://nubela-blog.sgp1.digitaloceanspaces.com/sapiengraph-live/2024/09/demandbase-pricing-2.png" class="kg-image" alt="Demandbase's pricing plans" loading="lazy" width="1213" height="781"></figure><p>Despite my best efforts at unearthing a ballpark figure for you, I must confess the closest I got was $1500 per month for a company of about 200 people. To be very fair, most enterprise plans probably land in the vicinity of that price, but it does deter a lot of smaller companies.&nbsp;</p><p>If you have the budget first, their lowest tier does have a nice amount of features like the embedded B2B data, installed tech data, and Plug &amp; Play Partner Integrations. They even cover advertising, making them a great sales and marketing intelligence tool.&nbsp;</p><h3 id="who-should-try-demandbase"><strong>Who should try Demandbase</strong></h3><p>Mid to large enterprises, with emphasis on the large, who are wholly ready to move into accounts-based marketing. Judging from the reviews and the overall offerings, you pretty much need a solid team to set things up and get things going.&nbsp;</p><h2 id="leadiq-405"><strong>LeadIQ (4.0/5)</strong></h2><p>LeadIQ monitors your buying signals, gives you B2B data, and then helps you write scripts using AI. They have over 600 million contacts across US, EMEA, and APAC, including verified email addresses, mobile numbers, and technographic data.</p><p>The data comes from data partnerships, publicly available information,&nbsp; the contact lists of their own customers, and a proprietary algorithm.&nbsp;</p><figure class="kg-card kg-image-card"><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXctfEa9wuxb2HOsFEFmASLlVkY_SeKEdyY_fy7rJNdL9FWzVkc9Ja_Knbhw-ciESGwNl_YVPM19HadBm8GtrNOSDJGaHFWTZ8feQuC-0vZIHmRyYEvqHh5JpZRkcAZB5roPMbkOzwbgPGNBwOvFvWhar9zq?key=1c3B0mSdyL6BIr9N-JhFRA" class="kg-image" alt="LeadIQ's data sources" loading="lazy" width="1378" height="610"></figure><p>The data is verified through a series of checks like their data partner’s own evaluation, followed by real-time verification and then their algorithm. They also rely on LeadIQ’s own users to flag and edit any incorrect contact data, which they’ll re-verify. Some of their data is refreshed and verified in real-time, but I couldn’t find a promise of how fresh their contact information is going to be.&nbsp;</p><p>Like other platforms that gather community data, LeadIQ promises only to retrieve data that’s typically found on business cards. They are fully GDPR compliant and users can request that their information be removed at any time.&nbsp;</p><p>LeadIQ also has a writing assistant called Scribe. You can get it to generate cold emails or pitches for you. Even their free tier lets you test out the email generations, which is pretty nifty to me.&nbsp;</p><figure class="kg-card kg-image-card"><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcPVh3lwy0kBYsKc7j20SQBMTd6hR5cj4vUpBCVFmfEsxzSU_AFQUA7Fgu8uFVLTuJmKuFa_h6aGpa2sefJOS2fxFvr0Vqlpw_OXjahnCQ_sag5o_oa2gHBW3XvT0h3ohfP2lBbpGUo3iAJmtDK786-CuPu?key=1c3B0mSdyL6BIr9N-JhFRA" class="kg-image" alt="LeadIQ's AI writing assistant, Scribe." loading="lazy" width="1566" height="650"></figure><p>Not only does it take prompts, you can change the value proposition to personalize the email further for specific decision-makers.&nbsp;</p><h3 id="leadiq-ratings-reviews-405"><strong>LeadIQ ratings &amp; reviews (4.0/5)</strong></h3><p>At 4.0 out of 5, LeadIQ is a pretty well-received Clearbit alternative.</p><figure class="kg-card kg-image-card"><img src="https://nubela-blog.sgp1.digitaloceanspaces.com/sapiengraph-live/2024/09/leadiq-ratings.png" class="kg-image" alt="LeadIQ reviews from G2, Capterra, Trustradius" loading="lazy" width="794" height="511"></figure><p>The general sentiment is that it does really well if you’re using it in conjunction with Professional Social Network Sale Navigator. Not that it doesn’t work without Professional Social Network, but just that it might work slower. If you’re prospecting from Professional Social Network, there have been complaints that the sync rate is pretty slow, which is frustrating if you’re looking for hundreds of prospects a day.&nbsp;</p><h3 id="leadiq-pricing"><strong>LeadIQ pricing</strong></h3><p>You can get the lowest tier of LeadIq at $45 per month, per user.&nbsp;</p><figure class="kg-card kg-image-card"><img src="https://nubela-blog.sgp1.digitaloceanspaces.com/sapiengraph-live/2024/09/leadiq-pricing.png" class="kg-image" alt="LeadIQ's pricing plans, starting at $45/month/user" loading="lazy" width="1352" height="906"></figure><p>Their Essentials plan gives you 1000 verified emails and 50 mobile numbers. It’s a decent starting point for any small business starting to do sales outreach. The expense ramps up quickly if you start adding seats, but for smaller companies who might only have one person in sales, it’s good enough.&nbsp;</p><h3 id="who-should-try-leadiq"><strong>Who should try LeadIQ</strong></h3><p>Small to mid-sized companies in their first leg of sales intelligence. It’s got enough to get you off the ground and start running, but not too expensive that it breaks the bank.&nbsp;</p><h2 id="fullcontact"><strong>FullContact</strong></h2><p>FullContact boasts 248M people profiles in North America and 200M updates every single day.&nbsp; Not only that, they track 50B identifiers across 10 different categories to produce comprehensive people profiles.</p><figure class="kg-card kg-image-card"><img src="https://nubela-blog.sgp1.digitaloceanspaces.com/sapiengraph-live/2024/09/fullcontact-data.png" class="kg-image" alt="FullContact's database of profiles and contact information" loading="lazy" width="1555" height="748"></figure><p>They have access to 224M phone numbers and 125M business emails alone. If I include personal emails, the amount of contact information in their database is doubled. Fullcontact is partnered with Fideo, a company that verifies contact information to protect you from fraud and identity crimes. Basically, whenever you retrieve information, the FullContact platform pulls the data from Fideo through an API and verifies it on the spot.&nbsp;</p><figure class="kg-card kg-image-card"><img src="https://nubela-blog.sgp1.digitaloceanspaces.com/sapiengraph-live/2024/09/fullcontact-feature-fideo-intent.png" class="kg-image" alt="FullContact's partner, Fideo that verifies identities and prevents fraud." loading="lazy" width="1241" height="607"></figure><p>FullContact links bits of identifiers to a person and assigns them a unique Person ID to create an identity graph. The data is gathered from places like public websites (social media) or business cards (transcribed&nbsp; by humans) and appended to your existing contact database. If you already have a bunch of contacts, you can import them via Excel. Coupled with Google and Yahoo integration, FullContact does a lot to give you a comprehensive profile of a person.&nbsp;</p><figure class="kg-card kg-image-card"><img src="https://nubela-blog.sgp1.digitaloceanspaces.com/sapiengraph-live/2024/09/fullcontact-feature-resolve.png" class="kg-image" alt="FullContact's Identity resolution graph." loading="lazy" width="2512" height="1196"></figure><p>One interesting thing I noted while looking up FullContact was their Mobile Ad IDs aka MAIDs. These IDs track the type of ads that people open on their mobile devices, which makes it easier to figure out user behavior and activity. Useful for segmentation, in my opinion.&nbsp;</p><figure class="kg-card kg-image-card"><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfbq4JKUf8kan2_B2ike65T1ITnXFucTZE4ogC7-ck86edooW9z67sDeCC-2Vx5iD8_laUJTFangRH_UGIr0QFICzXBqXHrtPiDGjrL2XGA1q-X-Z7U-PoH_DC_RJdAgmHjIX7HASjujscRM5cphtoKX21g?key=1c3B0mSdyL6BIr9N-JhFRA" class="kg-image" alt="FullContact's Mobile Ad Identification." loading="lazy" width="841" height="701"></figure><h3 id="fullcontact-ratings-reviews-415"><strong>FullContact ratings &amp; reviews (4.1/5)</strong></h3><p>FullContact comes in at an average of 4.1.</p><figure class="kg-card kg-image-card"><img src="https://nubela-blog.sgp1.digitaloceanspaces.com/sapiengraph-live/2024/09/fullcontact-ratings.png" class="kg-image" alt="FullContact reviews from G2, Capterra, Trustradius" loading="lazy" width="794" height="511"></figure><p>In general, it does great with contacts and people like the fact that the information is being refreshed daily. The extension grabs information pretty quickly and accurately, which is a huge plug point.&nbsp;</p><p>Unfortunately, a common complaint from users is that the mobile app is kind of buggy and the platform takes some time to sync. The waiting time is quite tedious if a company wants to sync or export thousands of profiles at a time. Though the extension has a bit of a learning curve, don’t let that deter you from using it.&nbsp;</p><h3 id="fullcontact-pricing"><strong>FullContact pricing</strong></h3><p>There are three plans available for prospective customers of FullContact, the lowest price being $99 per month.&nbsp;</p><figure class="kg-card kg-image-card"><img src="https://nubela-blog.sgp1.digitaloceanspaces.com/sapiengraph-live/2024/09/fullcontact-pricing.png" class="kg-image" alt="FullContact's pricing plans, starting at $99/month" loading="lazy" width="1500" height="867"></figure><p>The essentials plan gives you pretty much everything you need for basic lead generation if you’re a small to mid-sized company. You get enough browsing analytics and just enough leads to not overwhelm the team on the essentials plan. I also like that the $99 comes with 3 seats right off the bat.&nbsp;</p><h3 id="who-should-try-fullcontact"><strong>Who should try FullContact?</strong></h3><p>Smaller teams who want to identify and contact their website visitors without breaking the bank, or companies who are scaling up really rapidly and want to hit massive KPIs.&nbsp;</p><h2 id="tldr-features-list"><strong>TL;DR Features List</strong></h2><p>At this point I will be blamed if I didn’t create a nice big table telling you what each platform has. But if I put in an extensive list of features, this article would become uncomfortably long (and wide) so I’m just going to give you the top ones like AI writing assistants, API access, privacy compliance, and also buyer intent. Have fun!</p>
<!--kg-card-begin: html-->
<table style="border:none;border-collapse:collapse;"><colgroup><col width="58"><col width="58"><col width="58"><col width="58"><col width="58"><col width="58"><col width="58"><col width="58"><col width="58"><col width="58"><col width="58"></colgroup><thead><tr style="height:0pt"><th style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;overflow:hidden;overflow-wrap:break-word;" scope="col"><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Features</span></p></th><th style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;overflow:hidden;overflow-wrap:break-word;" scope="col"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Account Based Marketing</span></p></th><th style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;overflow:hidden;overflow-wrap:break-word;" scope="col"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">AI Writing Assistant</span></p></th><th style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;overflow:hidden;overflow-wrap:break-word;" scope="col"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">API available</span></p></th><th style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;overflow:hidden;overflow-wrap:break-word;" scope="col"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Browser Extension</span></p></th><th style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;overflow:hidden;overflow-wrap:break-word;" scope="col"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">CCPA Compliant</span></p></th><th style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;overflow:hidden;overflow-wrap:break-word;" scope="col"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">GDPR Compliant</span></p></th><th style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;overflow:hidden;overflow-wrap:break-word;" scope="col"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Human Verification</span></p></th><th style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;overflow:hidden;overflow-wrap:break-word;" scope="col"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Inbuilt Dialer</span></p></th><th style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;overflow:hidden;overflow-wrap:break-word;" scope="col"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Intent Data</span></p></th><th style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;overflow:hidden;overflow-wrap:break-word;" scope="col"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">IP Intelligence</span></p></th></tr></thead><tbody><tr style="height:0pt"><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Clearbit</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td></tr><tr style="height:0pt"><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Proxycurl</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td></tr><tr style="height:0pt"><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Sapiengraph</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td></tr><tr style="height:0pt"><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">ZoomInfo</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td></tr><tr style="height:0pt"><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Apollo.io</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td></tr><tr style="height:0pt"><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Cognism</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td></tr><tr style="height:0pt"><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Lusha</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td></tr><tr style="height:0pt"><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Lead411</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td></tr><tr style="height:0pt"><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">UpLead</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td></tr><tr style="height:0pt"><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">RocketReach</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td></tr><tr style="height:0pt"><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Leadfeeder</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td></tr><tr style="height:0pt"><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">6sense</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td></tr><tr style="height:0pt"><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Adapt.io</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td></tr><tr style="height:0pt"><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Professional Social Network Sales Navigator</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td></tr><tr style="height:0pt"><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Seamless.ai</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td></tr><tr style="height:0pt"><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">LeadForensics</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td></tr><tr style="height:0pt"><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Demandbase</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td></tr><tr style="height:0pt"><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">LeadIQ</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td></tr><tr style="height:0pt"><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">FullContact</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><br></td><td style="border-left:solid #000000 0.6000000000000001pt;border-right:solid #000000 0.6000000000000001pt;border-bottom:solid #000000 0.6000000000000001pt;border-top:solid #000000 0.6000000000000001pt;vertical-align:middle;padding:2pt 2pt 2pt 2pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:8pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">✔️</span></p></td></tr></tbody></table>
<!--kg-card-end: html-->
<p></p><h2 id="conclusion"><strong>Conclusion</strong></h2><p>Congratulations! You made it to the end of this article!&nbsp;</p><p>Here’s that handy tl;dr table again because I know this post is super duper long and you might have forgotten what I said about Proxycurl at the start of this post.&nbsp;</p>
<!--kg-card-begin: html-->
<table style="border:none;border-collapse:collapse;"><colgroup><col width="169"><col width="124"><col width="99"><col width="172"><col width="124"></colgroup><tbody><tr style="height:21.599999999999998pt"><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Platform</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Average Rating</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Price/Month</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Database </span><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"><br></span><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">(Published Profiles)</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Refresh Rate</span></p></td></tr><tr style="height:21.599999999999998pt"><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Clearbit</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">4.4</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Custom</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">50M, 389M*</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Daily</span></p></td></tr><tr style="height:21.599999999999998pt"><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Proxycurl</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">3.9</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">49</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">19M, 493M*</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Real-Time</span></p></td></tr><tr style="height:21.599999999999998pt"><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Sapiengraph</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">-</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">49</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">19M, 493M*</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Real-Time</span></p></td></tr><tr style="height:21.599999999999998pt"><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">ZoomInfo</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">4.2</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Custom</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">104M, 321M*</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">30 Days</span></p></td></tr><tr style="height:21.599999999999998pt"><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Apollo.io</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">4.4</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">49</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">35M, 220M*</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Real-Time</span></p></td></tr><tr style="height:21.599999999999998pt"><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Cognism</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">4.3</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Custom</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">10M, 400M*</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Daily</span></p></td></tr><tr style="height:21.599999999999998pt"><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Lusha</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">4.1</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">49</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">15M, 100M*</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Real-Time</span></p></td></tr><tr style="height:21.599999999999998pt"><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Lead411</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">4.6</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">99</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">20M, 450*</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">30 days</span></p></td></tr><tr style="height:21.599999999999998pt"><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">UpLead</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">3.7</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">99</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">16M, 155M*</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">30 days</span></p></td></tr><tr style="height:21.599999999999998pt"><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">RocketReach</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">4.1</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">70</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">35M, 700M*</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">30 days</span></p></td></tr><tr style="height:21.599999999999998pt"><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Leadfeeder</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">4.2</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">99</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">175M*</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Real-Time</span></p></td></tr><tr style="height:21.599999999999998pt"><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">6sense</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">4.2</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Custom</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">65M, 415M*</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">14 days</span></p></td></tr><tr style="height:21.599999999999998pt"><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Adapt.io</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">4.0</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">49</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">12M, 250M*</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Daily</span></p></td></tr><tr style="height:21.599999999999998pt"><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Professional Social Network Sales Navigator</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">4.4</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">99</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">67M, 1.9B*</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">12 hours</span></p></td></tr><tr style="height:21.599999999999998pt"><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Seamless.ai</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">3.7</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Custom</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">121M, 1.3B*</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Real-Time</span></p></td></tr><tr style="height:21.599999999999998pt"><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">LeadForensics</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">4.1</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Custom</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">-</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">-</span></p></td></tr><tr style="height:21.599999999999998pt"><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Demandbase</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">4.3</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Custom</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">99M, 150M*</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">30 days</span></p></td></tr><tr style="height:21.599999999999998pt"><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">LeadIQ</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">4.0</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">45</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">-</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Real-Time</span></p></td></tr><tr style="height:21.599999999999998pt"><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">FullContact</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">4.1</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">99</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">247M*</span></p></td><td style="border-left:solid #434343 0.5pt;border-right:solid #434343 0.5pt;border-bottom:solid #434343 0.5pt;border-top:solid #434343 0.5pt;vertical-align:middle;padding:0.72pt 0.72pt 0.72pt 0.72pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span style="font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">15 minutes</span></p></td></tr></tbody></table>
<!--kg-card-end: html-->
<p>Last thoughts: a huge database doesn't mean quality data, and live updates aren't a guarantee of accuracy. </p><p>That said, feel free to give <a href="https://nubela.co/proxycurl/?ref=nubela.co" rel="noreferrer">Proxycurl </a>or <a href="https://sapiengraph.com/?ref=nubela.co" rel="noreferrer">Sapiengraph</a> a whirl before considering all these other Clearbit alternatives. Happy Data Enriching! </p> ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ Your Network, Your Rewards: Earn with Our New Referral Program ]]></title>
        <description><![CDATA[ Good news: Proxycurl finally has a referral program! Here&#39;s how to use it. ]]></description>
        <link>https://nubela.co/blog/proxycurl-referral-program/</link>
        <guid isPermaLink="false">66e30ada14d5160001577e1e</guid>
        <category><![CDATA[ referral program ]]></category>
        <dc:creator><![CDATA[ Colton Randolph | Technical Writer ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2023/08/cr.jpg"/>
        <pubDate>Fri, 13 Sep 2024 00:07:08 +0800</pubDate>
        <media:content url="" medium="image"/>
        <content:encoded><![CDATA[ <p>After several different iterations of our referral program over the years—and many requests to bring it back—I’m happy to announce that it’s finally here again.</p>
<p>Now, you can earn commissions by referring your friends or business associates to us.</p>
<p>Specifically, you can earn 25% of a referral's revenue, up to a maximum of $3,000 (including recurring payments), with no caps on how many people you can refer.</p>
<p>If that caught your attention, here's how to join and earn commissions:</p>
<h1 id="joining-our-referral-program">Joining our referral program</h1>
<p>First, to join our referral program you simply need to first create your Proxycurl account <a href="https://nubela.co/proxycurl/auth/register?ref=nubela.co">here</a>, then login to the dashboard <a href="https://nubela.co/proxycurl/auth/login?ref=nubela.co">here</a>.</p>
<h1 id="how-to-use-our-referral-program">How to use our referral program</h1>
<p>After that, you'll see this little widget on the side of all of the pages on our website, or the dashboard:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/09/ref1.png" class="kg-image" alt="What the referral program widget looks like" loading="lazy" width="2000" height="1137"><figcaption><span style="white-space: pre-wrap;">What the referral program widget looks like</span></figcaption></figure><p>(<strong>Note:</strong> Temporarily this doesn't work on the blog, but it'll be fixed soon.)</p>
<h1 id="receiving-your-referral-link">Receiving your referral link</h1>
<p>Once you click on it, you'll see this overlay appear:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/09/ref2.png" class="kg-image" alt="Your referral link" loading="lazy" width="614" height="596"><figcaption><span style="white-space: pre-wrap;">Your referral link</span></figcaption></figure><p>This is the link you'll need to share to earn comissions for your referrals, and it'll be synced to your Proxycurl account.</p>
<h1 id="cash-out-the-big-bucks">Cash out the big bucks</h1>
<p>Ka-ching! Once you've earned some comissions, you can cash out either via PayPal, or Venmo through the referral widget (this depends on your country, and these payment methods may be changed in the future):</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/09/ref3.png" class="kg-image" alt="Getting paid out for referrals" loading="lazy" width="623" height="592"><figcaption><span style="white-space: pre-wrap;">Getting paid out for referrals</span></figcaption></figure><h1 id="easy-peasy-lemon-squeezy">Easy-peasy, lemon squeezy</h1>
<p>It takes 1 minute max to join our referral program, and that's if you're not already a user.</p>
<p>Long story short, if you know a few developers or businesses that might want access to practically infinite amounts of rich and fresh B2B data, we'd love to make you some money ;-).</p>
<p>Thanks for reading!</p>
<p></p> ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ You Can Now Add Team Members to Your Proxycurl Account ]]></title>
        <description><![CDATA[ You&#39;ve been asking for this for a while, and we&#39;ve finally delivered... ]]></description>
        <link>https://nubela.co/blog/add-team-members-proxycurl/</link>
        <guid isPermaLink="false">66c3c78bdead420001d51ee5</guid>
        <category><![CDATA[ team members ]]></category>
        <dc:creator><![CDATA[ Colton Randolph | Technical Writer ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2023/08/cr.jpg"/>
        <pubDate>Wed, 28 Aug 2024 22:10:34 +0800</pubDate>
        <media:content url="" medium="image"/>
        <content:encoded><![CDATA[ <p>After many requests, some coding, and <s>blood, sweat, and tears</s> caffeine, the wait is finally over: you can now add team members to your Proxycurl account.</p>
<p>That said, in this article, you'll learn:</p>
<ul>
<li>What plans have the ability to create a team (and if not, how to upgrade)</li>
<li>How to add and manage team members</li>
<li>The different roles of team members and what they can do</li>
</ul>
<p>First things first:</p>
<h2 id="what-plans-have-the-ability-to-create-a-team">What plans have the ability to create a team?</h2>
<p>All plans except our monthly "Starter" plan can create a team. <a href="https://nubela.co/proxycurl/pricing?ref=nubela.co">You can view our plans here</a>.</p>
<p>This means that even on the "Starter" plan you can create a team if you opt for annual billing.</p>
<p>So, really, you should ask: what plans don't have the ability to create a team?</p>
<h2 id="how-to-create-your-first-team">How to create your first team</h2>
<p>If you log into the <a href="https://nubela.co/proxycurl/dashboard?ref=nubela.co">Proxycurl dashboard</a>, you should see this link on the left navigation bar:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/08/upgrade-0.png" class="kg-image" alt="Accessing the teams feature" loading="lazy" width="184" height="222"><figcaption><span style="white-space: pre-wrap;">Accessing the teams feature</span></figcaption></figure><p>Once clicked, you'll be redirected to <a href="https://nubela.co/proxycurl/dashboard/teams/?ref=nubela.co">our team's page</a> where you can either upgrade your account (if you're on a monthly "Starter" plan):</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/08/upgrade-1.png" class="kg-image" alt="The account upgrade page" loading="lazy" width="1731" height="600"><figcaption><span style="white-space: pre-wrap;">The account upgrade page</span></figcaption></figure><p>Or, if you're already on an eligible plan, click the "Get started" button:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/08/upgrade-2.png" class="kg-image" alt="Creating your team" loading="lazy" width="1515" height="320"><figcaption><span style="white-space: pre-wrap;">Creating your team</span></figcaption></figure><p>You'll then be asked to pick your team name:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/08/upgrade-4-1.png" class="kg-image" alt="Picking your team name" loading="lazy" width="395" height="256"><figcaption><span style="white-space: pre-wrap;">Picking your team name</span></figcaption></figure><p>After that, you're now the proud owner of a Proxycurl team!</p>
<h2 id="how-to-invite-team-members">How to invite team members</h2>
<p>After creating your team, you can click the "Invite member" button on the <a href="https://nubela.co/proxycurl/dashboard/teams/?ref=nubela.co">team's page</a> to invite your team members:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/08/upgrade-3-1.png" class="kg-image" alt="Inviting team members" loading="lazy" width="1709" height="216"><figcaption><span style="white-space: pre-wrap;">Inviting team members</span></figcaption></figure><p>It's a very simple process all done with an email:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/08/upgrade-4-2.png" class="kg-image" alt="Emailing the invite" loading="lazy" width="251" height="199"><figcaption><span style="white-space: pre-wrap;">Emailing the invite</span></figcaption></figure><p>All they need to do is click the link sent via email by us. They'll then be asked to create their account and automatically added to your team.</p>
<h2 id="managing-your-team">Managing your team</h2>
<p>There are really only two main actions you can do in regard to your team members, which are to make an individual an admin or remove them:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/08/upgrade-12.png" class="kg-image" alt="Managing your team members" loading="lazy" width="1726" height="299"><figcaption><span style="white-space: pre-wrap;">Managing your team members</span></figcaption></figure><p>If an individual is an admin, they'll also have the ability to make others admins or remove team members (but not team owners).</p>
<h2 id="what-can-you-do-with-a-team">What can you do with a team?</h2>
<p>The main benefit is that of course you'll no longer have to share your account with your other team members.</p>
<p>You, or anyone on your team will have the ability to generate additional API keys and you can individually track the credit consumption for each API key or export the logs per key.</p>
<p>Do note that if you create a team, your account's API keys are shared with your team members. So only invite actual trusted team members.</p>
<h2 id="how-to-add-additional-team-api-keys">How to add additional team API keys</h2>
<p>As team keys are shared from the team owner's account, the team owner can add additional keys by simply going to the <a href="https://nubela.co/proxycurl/dashboard/proxycurl-api/api-key/?ref=nubela.co">API keys page</a>.</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/08/upgrade-10.png" class="kg-image" alt="Adding new team API keys" loading="lazy" width="1735" height="566"><figcaption><span style="white-space: pre-wrap;">Adding new team API keys</span></figcaption></figure><p>Your team members will also have the ability to view your credits available or top up with the team owner's payment method on file.</p>
<p>Team members can also create their own team keys, but the process is slightly different. They need to switch to the team in context first from their API logs page.</p>
<p>Here's how:</p>
<h2 id="switching-between-personal-api-keys-and-team-api-keys-as-a-team-member">Switching between personal API keys and team API keys as a team member</h2>
<p>If your account is a member of a team, you can still use any keys of any teams you're a part of, or you can use your own personal key.</p>
<p>Once on <a href="https://nubela.co/proxycurl/dashboard/proxycurl-api/api-key/?ref=nubela.co">the API key page</a>, just use the drop-down in the top left to switch:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/08/upgrade-11-use.png" class="kg-image" alt="Switching between keys" loading="lazy" width="1729" height="493"><figcaption><span style="white-space: pre-wrap;">Switching between keys</span></figcaption></figure><p>You can then add API keys as a team member shown exactly the same way as a team owner above.</p>
<h2 id="conclusion">Conclusion</h2>
<p>The ability to add team members and give them their own API keys with trackable billing and isolated control of your Proxycurl account is finally here.</p>
<p>All plans except our smallest monthly "Starter" plan are eligible for it, and you can create your team or upgrade your account <a href="https://nubela.co/proxycurl/dashboard/teams/?ref=nubela.co">right here</a>.</p>
<p>If you don't already have an account and you're looking for reliable, rich, and fresh B2B data, we would be more than happy to have you, and <a href="https://nubela.co/proxycurl/auth/register?ref=nubela.co">you can create your account for free here</a>.</p>
<p>Thanks for reading, and keep an eye out on <a href="https://nubela.co/blog/">our blog</a> for future updates and more!</p>
 ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ Comparing the 13 Best Data Enrichment Tools ]]></title>
        <description><![CDATA[ The 13 best data enrichment tools currently available on the market in 2024. ]]></description>
        <link>https://nubela.co/blog/best-data-enrichment-tools/</link>
        <guid isPermaLink="false">666cb6c838fd8100017ffa9d</guid>
        <category><![CDATA[ data enrichment tools ]]></category>
        <dc:creator><![CDATA[ Colton Randolph | Technical Writer ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2023/08/cr.jpg"/>
        <pubDate>Tue, 13 Aug 2024 18:40:43 +0800</pubDate>
        <media:content url="" medium="image"/>
        <content:encoded><![CDATA[ <p>Data enrichment tools provide B2B data about companies, people, jobs, etc.</p>
<p>Businesses often use them to either source new prospecting data or fill in the gaps within their existing prospect/client dataset.</p>
<p>But there are quite a few of them nowadays that all serve slightly different purposes for different people.</p>
<p>So the question is: what's the right data enrichment tool for you?</p>
<p>That's what we hope to answer in this article. Let's dive in.</p>
<h2 id="1-proxycurl">1. Proxycurl</h2>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/06/de1.png" class="kg-image" alt="Proxycurl's homepage" loading="lazy" width="2000" height="1059"><figcaption><span style="white-space: pre-wrap;">Proxycurl's homepage</span></figcaption></figure><p></p><p><a href="https://proxycurl.com/?ref=nubela.co">Proxycurl</a> (hi, that's us! ;-) is a data enrichment tools, or specifically B2B enrichment API that specializes in people, jobs, and companies.</p>
<p>We provide a wide range of information, including job titles, company details, social media profiles, contact information, and beyond with our API.</p>
<h3 id="how-to-enrich-people-with-proxycurl">How to enrich people with Proxycurl</h3>
<p>Enriching people can be as easy as querying our <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#people-api">Person Profile Endpoint</a>, with a cURL command, such as:</p>
<pre><code class="language-bash">curl \
    -G \
    -H "Authorization: Bearer ${YOUR_API_KEY}" \
    'https://nubela.co/proxycurl/api/v2/Professional Social Network' \
    --data-urlencode 'Professional Social Network_profile_url=https://professionalsocialnetwork.com/in/johnrmarty/' \
    --data-urlencode 'extra=include' \
    --data-urlencode 'github_profile_id=include' \
    --data-urlencode 'facebook_profile_id=include' \
    --data-urlencode 'twitter_profile_id=include' \
    --data-urlencode 'personal_contact_number=include' \
    --data-urlencode 'personal_email=include' \
    --data-urlencode 'inferred_salary=include' \
    --data-urlencode 'skills=include' \
    --data-urlencode 'use_cache=if-recent' \
    --data-urlencode 'fallback_to_cache=on-error'
</code></pre>
<p>Which would enrich an individual with their Professional Social Network profile URL, but you could also use X or Facebook.</p>
<p>Here's an example of what it would return:</p>
<pre><code class="language-json">{
  "public_identifier": "johnrmarty",
  "profile_pic_url": "string",
  "background_cover_image_url": "string",
  "first_name": "string",
  "last_name": "string",
  "full_name": "string",
  "follower_count": "integer",
  "occupation": "string",
  "headline": "string",
  "summary": "string",
  "country": "string",
  "country_full_name": "string",
  "city": "string",
  "state": "string",
  "experiences": [
    {
      "starts_at": {
        "day": "integer",
        "month": "integer",
        "year": "integer"
      },
      "ends_at": {
        "day": "integer",
        "month": "integer",
        "year": "integer"
      },
      "company": "string",
      "company_Professional Social Network_profile_url": "string",
      "company_facebook_profile_url": "string",
      "title": "string",
      "description": "string",
      "location": "string",
      "logo_url": "string"
    }
  ],
  "education": [
    {
      "starts_at": {
        "day": "integer",
        "month": "integer",
        "year": "integer"
      },
      "ends_at": {
        "day": "integer",
        "month": "integer",
        "year": "integer"
      },
      "field_of_study": "string",
      "degree_name": "string",
      "school": "string",
      "school_Professional Social Network_profile_url": "string",
      "school_facebook_profile_url": "string",
      "description": "string",
      "logo_url": "string",
      "grade": "string",
      "activities_and_societies": "string"
    }
  ],
  "languages": [
    "string"
  ],
  "accomplishment_organisations": [
    {
      "name": "string",
      "description": "string",
      "url": "string"
    }
  ],
  "accomplishment_publications": [
    {
      "title": "string",
      "publication": "string",
      "url": "string"
    }
  ],
  "accomplishment_honors_awards": [
    {
      "title": "string",
      "description": "string"
    }
  ],
  "accomplishment_patents": [
    {
      "title": "string",
      "patent_number": "string",
      "description": "string"
    }
  ],
  "accomplishment_courses": [
    {
      "title": "string",
      "provider": "string",
      "url": "string"
    }
  ],
  "accomplishment_projects": [
    {
      "starts_at": {
        "day": "integer",
        "month": "integer",
        "year": "integer"
      },
      "ends_at": {
        "day": "integer",
        "month": "integer",
        "year": "integer"
      },
      "title": "string",
      "description": "string",
      "url": "string"
    }
  ],
  "accomplishment_test_scores": [
    {
      "test_name": "string",
      "score": "integer",
      "date": {
        "day": "integer",
        "month": "integer",
        "year": "integer"
      }
    }
  ],
  "volunteer_work": [
    {
      "starts_at": {
        "day": "integer",
        "month": "integer",
        "year": "integer"
      },
      "ends_at": {
        "day": "integer",
        "month": "integer",
        "year": "integer"
      },
      "title": "string",
      "cause": "string",
      "company": "string",
      "company_Professional Social Network_profile_url": "string",
      "description": "string",
      "logo_url": "string"
    }
  ],
  "certifications": [
    {
      "starts_at": {
        "day": "integer",
        "month": "integer",
        "year": "integer"
      },
      "ends_at": {
        "day": "integer",
        "month": "integer",
        "year": "integer"
      },
      "name": "string",
      "license_number": "string",
      "display_source": "string",
      "authority": "string",
      "url": "string"
    }
  ],
  "connections": "integer",
  "people_also_viewed": [
    {
      "link": "string",
      "name": "string",
      "summary": "string",
      "location": "string"
    }
  ]
}
</code></pre>
<p>Additionally, a social media profile URL isn't the only possible method to enrich a person's profile. You could also use our <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#search-api">Search API</a> with a name or company, or use solely an email and beyond.</p>
<p>For all options, <a href="https://nubela.co/proxycurl/docs?ref=nubela.co">it's best to take a look at our documentation</a>.</p>
<p>We also recently <a href="https://www.youtube.com/watch?v=bxf3uKdcCo8&ref=nubela.co">released a new YouTube video</a> where we explain scraping Professional Social Network accounts specifically, both individually and in bulk, and even include the Python code used.</p>
<p>You can see that below:</p>
<figure class="kg-card kg-embed-card"><iframe width="200" height="113" src="https://www.youtube.com/embed/bxf3uKdcCo8?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen="" title="How to scrape Professional Social Network profiles at scale (includes Python demo)"></iframe></figure><div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">💡</div><div class="kg-callout-text"><b><strong style="white-space: pre-wrap;">Note:</strong></b> <a href="https://nubela.co/proxycurl/auth/register?ref=nubela.co" rel="noreferrer">You can create your Proxycurl account for free here</a> and try out a person or company enrichment right now. You'll just need to grab your API key after creating your account.</div></div><h3 id="how-to-enrich-companies-with-proxycurl">How to enrich companies with Proxycurl</h3>
<p>The only thing that changes here is the endpoint, which would be the <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#company-api">Company Profile Endpoint</a> instead.</p>
<p>Here's another example using cURL:</p>
<pre><code class="language-bash">curl \
    -G \
    -H "Authorization: Bearer ${YOUR_API_KEY}" \
    'https://nubela.co/proxycurl/api/Professional Social Network/company' \
    --data-urlencode 'url=https://www.professionalsocialnetwork.com/company/google/' \
    --data-urlencode 'resolve_numeric_id=true' \
    --data-urlencode 'categories=include' \
    --data-urlencode 'funding_data=include' \
    --data-urlencode 'exit_data=include' \
    --data-urlencode 'acquisitions=include' \
    --data-urlencode 'extra=include' \
    --data-urlencode 'use_cache=if-recent' \
    --data-urlencode 'fallback_to_cache=on-error'
</code></pre>
<p>As you can see above we're using a Professional Social Network company URL, and it would return something similar to this:</p>
<pre><code class="language-json">{
  "Professional Social Network_internal_id": "1441",
  "description": "Google builds products...",
  "website": "https://goo.gle/3DLEokh",
  "industry": "Software Development",
  "company_size": [10001, null],
  "hq": {
    "country": "US",
    "city": "Mountain View",
    "state": "CA"
  },
  "company_type": "PUBLIC_COMPANY",
  "specialities": ["search", "ads", "mobile", "android"],
  "locations": [{"country": "US", "city": "Mountain View", "state": "CA"}],
  "name": "Google",
  "profile_pic_url": "https://s3.us-west-000.backblazeb2.com/proxycurl/company/google/profile...",
  "background_cover_image_url": "https://s3.us-west-000.backblazeb2.com/proxycurl/company/google/cover...",
  "similar_companies": [{"name": "YouTube", "link": "https://www.professionalsocialnetwork.com/company/youtube"}],
  "affiliated_companies": [{"name": "YouTube", "link": "https://www.professionalsocialnetwork.com/company/youtube/"}],
  "follower_count": 33125306,
  "acquisitions": {"acquired": [{"Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/company/siemplify"}]},
  "exit_data": [{"Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/company/jd.com"}],
  "extra": {
    "crunchbase_profile_url": "https://www.crunchbase.com/organization/google",
    "ipo_status": "Public",
    "contact_email": "google@google.com",
    "phone_number": "+16502530000",
    "stock_symbol": "NASDAQ:GOOGL"
  },
  "funding_data": [{"funding_type": "Angel Round", "money_raised": 1000000}],
  "categories": ["advertising", "collaboration", "enterprise-software"]
}
</code></pre>
<p>Of course like pulling person B2B data, there are also alternative ways to pull company data such as our <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#search-api-company-search-endpoint">Company Search Endpoint</a>.</p>
<p>Anyway, now that you know a bit about our two most commonly used API endpoints, I'll carry on:</p>
<h3 id="pros">Pros</h3>
<ul>
<li>Comprehensive data coverage for both individuals and companies</li>
<li>An extensive amount of data is available</li>
<li>Provides job-based data</li>
<li>Provides contact information</li>
<li>Can scrape in real-time</li>
<li>Competitive pricing</li>
<li>GDPR &amp; CCPA compliant</li>
<li>Easy integration with existing systems</li>
<li><a href="https://nubela.co/proxycurl/docs?ref=nubela.co">Detailed and well-maintained documentation</a></li>
</ul>
<h3 id="cons">Cons</h3>
<ul>
<li>It may not cover every profile you try depending on the privacy settings of the individual you're trying to enrich</li>
</ul>
<h3 id="pricing">Pricing</h3>
<p>We offer a few free credits upon account creation as well as a pay-as-you-go plan and cheaper subscription plans with longer commitments. For those, our plans start at $49/month, providing higher request limits and additional features. Custom pricing is available for enterprise needs.</p>
<p>If you're interested in creating your account, <a href="https://nubela.co/proxycurl/auth/register?ref=nubela.co">you can do so for free right here</a>. To learn more about our pricing, <a href="https://nubela.co/proxycurl/pricing?ref=nubela.co">click here</a>.</p>
<h3 id="best-for">Best for</h3>
<p>Businesses that need comprehensive data enrichment and a reliable data enrichment tool.</p>
<h2 id="2-sapiengraph">2. Sapiengraph</h2>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/07/sapiengraph.png" class="kg-image" alt="Sapiengraph's homepage" loading="lazy" width="2000" height="1139"><figcaption><span style="white-space: pre-wrap;">Sapiengraph's homepage</span></figcaption></figure><p><a href="https://www.sapiengraph.com/?ref=nubela.co">Sapiengraph</a> is a special data enrichment tools, in that it is a Google Sheets B2B data enrichment extension. It allows you to pull B2B data such as work history, emails, phone numbers, and more, all within a Google Sheets spreadsheet.</p>
<h3 id="pros">Pros</h3>
<ul>
<li>Direct integration with Google Sheets</li>
<li>Extensive data points</li>
<li>Fresh and accurate data</li>
<li>GDPR &amp; CCPA compliant</li>
<li>No-code and low-tech friendly</li>
</ul>
<h3 id="cons">Cons</h3>
<ul>
<li>May not cover all profiles depending on privacy settings</li>
</ul>
<h3 id="pricing">Pricing</h3>
<p><a href="https://sapiengraph.com/?ref=nubela.co">Sapiengraph has a free trial available</a> and then plans start at $49 per month.</p>
<h3 id="best-for">Best for</h3>
<p>Businesses looking for a convenient B2B data enrichment tool within Google Sheets.</p>
<h2 id="3-kaspr">3. Kaspr</h2>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/07/kaspr.png" class="kg-image" alt="Kaspr's homepage" loading="lazy" width="2930" height="1654"><figcaption><span style="white-space: pre-wrap;">Kaspr's homepage</span></figcaption></figure><p><a href="https://kaspr.io/?ref=nubela.co">Kaspr</a> focuses on enriching phone numbers, email addresses, company info and more all in a convenient manner, such as their Google Chrome browser extension.</p>
<h3 id="pros">Pros</h3>
<ul>
<li>Data verified against 150 sources</li>
<li>Extensive database</li>
<li>Seamless Chrome integration</li>
<li>GDPR compliant</li>
<li>Low-tech friendly</li>
</ul>
<h3 id="cons">Cons</h3>
<ul>
<li>Limited free credits</li>
<li>It can get a bit pricey at scale</li>
</ul>
<h3 id="pricing">Pricing</h3>
<p>Has a free trial, then starts at $49 per month billed annually.</p>
<h3 id="best-for">Best for</h3>
<p>Low-tech sales teams needing accurate contact details.</p>
<h2 id="4-hunterio">4. Hunter.io</h2>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/07/hunter.png" class="kg-image" alt="Hunter's homepage" loading="lazy" width="2000" height="1137"><figcaption><span style="white-space: pre-wrap;">Hunter's homepage</span></figcaption></figure><p><a href="https://hunter.io/?ref=nubela.co">Hunter.io</a> specializes in finding B2B leads and enriching them. Its simple interface, email finder, verifier, and CRM integration make it a popular choice.</p>
<h3 id="pros">Pros</h3>
<ul>
<li>Simple interface</li>
<li>Email finder and verifier</li>
<li>CRM integration</li>
<li>Built-in B2B lead finder</li>
<li>GDPR compliant</li>
</ul>
<h3 id="cons">Cons</h3>
<ul>
<li>Limited data points available</li>
</ul>
<h3 id="pricing">Pricing</h3>
<p>The free plan is limited to 25 searches per month, then the next plan starts at $34 per year, billed annually.</p>
<h3 id="best-for">Best for</h3>
<p>A data enrichment tool to find professional email addresses quickly and easily.</p>
<h2 id="5-uplead">5. UpLead</h2>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/07/uplead.png" class="kg-image" alt="UpLead's homepage" loading="lazy" width="2000" height="920"><figcaption><span style="white-space: pre-wrap;">UpLead's homepage</span></figcaption></figure><p><a href="https://www.uplead.com/?ref=nubela.co">UpLead</a> is a data enrichment tool that offers high-quality B2B contact data with real-time email verification and CRM integration.</p>
<h3 id="pros">Pros</h3>
<ul>
<li>High-quality B2B contact data with real-time verification</li>
<li>Access to 155M+ leads, ranked by freshness</li>
<li>95% data accuracy</li>
<li>Integration with popular CRMs</li>
<li>GDPR compliant</li>
<li>24/7 customer support</li>
</ul>
<h3 id="cons">Cons</h3>
<ul>
<li>Higher starting price compared to some competitors</li>
<li>Limited features in the lower-tier plans</li>
</ul>
<h3 id="pricing">Pricing</h3>
<p>Free trial available, paid plans starting at $99/month.</p>
<h3 id="best-for">Best for</h3>
<p>Businesses needing high-quality, verified contact data and integration with their CRM systems.</p>
<h2 id="6-adaptio">6. Adapt.io</h2>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/07/adapt.png" class="kg-image" alt="Adapt's homepage" loading="lazy" width="2905" height="1324"><figcaption><span style="white-space: pre-wrap;">Adapt's homepage</span></figcaption></figure><p><a href="https://www.adapt.io/?ref=nubela.co">Adapt.io</a> allows you to search for and enrich B2B contacts in a couple of different ways such as CSV files, Chrome extensions, and beyond. It's a fairly popular data enrichment tool.</p>
<h3 id="pros">Pros</h3>
<ul>
<li>Advanced targeting across 3,000+ specialized tech sectors</li>
<li>Identification of high-growth companies through funding and employee expansion signals</li>
<li>Enrich data with 50+ attributes</li>
</ul>
<h3 id="cons">Cons</h3>
<ul>
<li>Some advanced features only available in higher-tier plans</li>
<li>May require customization for specific needs</li>
</ul>
<h3 id="pricing">Pricing</h3>
<p>Free trial available, paid plans starting at $49/month.</p>
<h3 id="best-for">Best for</h3>
<p>Businesses looking to target specific tech sectors and identify high-growth companies.</p>
<h2 id="7-leadfeeder">7. Leadfeeder</h2>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/07/leadfeeder--1-.png" class="kg-image" alt="" loading="lazy" width="2921" height="1380"><figcaption><span style="white-space: pre-wrap;">Leadfeeder's homepage</span></figcaption></figure><p><a href="https://www.leadfeeder.com/?ref=nubela.co">Leadfeeder</a> identifies website visitors and provides company contact information. It'll also integrate with your CRM.</p>
<h3 id="pros">Pros</h3>
<ul>
<li>Identifies companies visiting your website</li>
<li>Reveals the exact behavior of visiting companies</li>
<li>Supports remote work identification</li>
<li>Provides advanced filters for quality leads</li>
<li>Integrates with popular CRM and marketing tools</li>
</ul>
<h3 id="cons">Cons</h3>
<ul>
<li>Data from the last 7 days only on the free plan</li>
<li>A maximum of 100 identified companies on the free plan</li>
</ul>
<h3 id="pricing">Pricing</h3>
<p>Free trial available, paid plans starting at $99 per month paid annually.</p>
<h3 id="best-for">Best for</h3>
<p>Sales and marketing teams looking to convert website visitors into leads.</p>
<h2 id="8-voila-norbert">8. Voila Norbert</h2>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/07/nobert.png" class="kg-image" alt="Voila Nobert's homepage" loading="lazy" width="2000" height="1121"><figcaption><span style="white-space: pre-wrap;">Voila Nobert's homepage</span></figcaption></figure><p><a href="https://www.voilanorbert.com/?ref=nubela.co">Voila Norbert</a> finds professional email addresses with high accuracy and integrates with CRM systems.</p>
<h3 id="pros">Pros</h3>
<ul>
<li>Finds most people's email addresses, can also enrich most people</li>
<li>Provides bulk actions, native integrations, and an API</li>
<li>Chrome extension for easy prospecting</li>
<li>Automates email outreach with advanced features like AI email writing and A/B testing</li>
</ul>
<h3 id="cons">Cons</h3>
<ul>
<li>Some advanced features only available in higher-tier plans</li>
<li>Limited to 50 free leads before requiring a paid plan</li>
</ul>
<h3 id="pricing">Pricing</h3>
<p>Free trial available, paid plans starting at $49 per month.</p>
<h3 id="best-for">Best for</h3>
<p>Businesses looking to build relationships through email by finding and verifying email addresses, enriching contact data, and automating email outreach campaigns.</p>
<h2 id="9-findthatlead">9. FindThatLead</h2>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/07/findthatlead--1-.png" class="kg-image" alt="FindThatLead's homepage" loading="lazy" width="2909" height="1414"><figcaption><span style="white-space: pre-wrap;">FindThatLead's homepage</span></figcaption></figure><p><a href="https://www.findthatlead.com/?ref=nubela.co">FindThatLead</a> is a data enrichment tool that focuses on finding professional email addresses, verifying them, and integrating with CRM systems.</p>
<h3 id="pros">Pros</h3>
<ul>
<li>All-in-one lead generation tool with advanced filters</li>
<li>Chrome extension for easy email extraction from web pages, Professional Social Network, and Crunchbase</li>
<li>Automated prospecting and email campaigns</li>
<li>User-friendly interface</li>
<li>Integration with CRMs and other marketing tools</li>
<li>GDPR compliant</li>
</ul>
<h3 id="cons">Cons</h3>
<ul>
<li>Some advanced features only available in higher-tier plans</li>
<li>Limited to 50 email credits on the free plan</li>
</ul>
<h3 id="pricing">Pricing</h3>
<p>Free trial available, paid plans starting at $60 per month billed annually.</p>
<h3 id="best-for">Best for</h3>
<p>Businesses looking for a lead generation data enrichment tool that integrates with their existing CRM and marketing tools.</p>
<h2 id="10-seamlessai">10. Seamless.AI</h2>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/07/seamlessai.png" class="kg-image" alt="Seamless.AI's homepage" loading="lazy" width="2000" height="1045"><figcaption><span style="white-space: pre-wrap;">Seamless.AI's homepage</span></figcaption></figure><p><a href="https://www.seamless.ai/?ref=nubela.co">Seamless.AI</a> provides enrichment services in a bunch of different ways such as a Chrome application, a web application, and beyond.</p>
<h3 id="pros">Pros</h3>
<ul>
<li>Finds verified phone numbers and emails, enriches contacts</li>
<li>Real-time search engine for B2B sales leads</li>
<li>Chrome extension for easy prospecting</li>
<li>Integrates with popular platforms like Salesforce, HubSpot, and Professional Social Network Sales Navigator</li>
<li>Includes AI-powered copywriting tool for sales and marketing messaging</li>
</ul>
<h3 id="cons">Cons</h3>
<ul>
<li>Some advanced features only available in higher-tier plans</li>
<li>Free plan limited to 50 credits</li>
</ul>
<h3 id="pricing">Pricing</h3>
<p>Free trial available, paid plans starting at $147 per month.</p>
<h3 id="best-for">Best for</h3>
<p>Sales teams and businesses looking to find B2B leads as well as verified contact information.</p>
<h2 id="11-clearbit-connect">11. Clearbit Connect</h2>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/07/clearbit-connect.png" class="kg-image" alt="Clearbit Connect's homepage" loading="lazy" width="2000" height="863"><figcaption><span style="white-space: pre-wrap;">Clearbit Connect's homepage</span></figcaption></figure><p>Clearbit Connect provides contact information directly from your inbox, integrating with Gmail and Outlook.</p>
<h3 id="pros">Pros</h3>
<ul>
<li>Finds any email address quickly, right from your inbox</li>
<li>Free to use</li>
<li>Search by company domain, name, job title, or role</li>
<li>Provides detailed information about prospects, including job titles, social profiles, and location</li>
<li>Integrates seamlessly with Gmail via Chrome extension</li>
</ul>
<h3 id="cons">Cons</h3>
<ul>
<li>Limited to 10 free credits per month</li>
<li>Some advanced features only available through other Clearbit products</li>
</ul>
<h3 id="pricing">Pricing</h3>
<p>Free to use with 10 free credits per month.</p>
<h3 id="best-for">Best for</h3>
<p>People who need a quick and easy way to find and verify email addresses directly from their inbox, especially useful for sales, marketing, and recruiting.</p>
<h2 id="12-contactout">12. ContactOut</h2>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/07/contact-out.png" class="kg-image" alt="ContactOut's homepage" loading="lazy" width="2919" height="1180"><figcaption><span style="white-space: pre-wrap;">ContactOut's homepage</span></figcaption></figure><p><a href="https://contactout.com/?ref=nubela.co">ContactOut</a> finds email addresses and phone numbers with high accuracy and integrates with Professional Social Network.</p>
<h3 id="pros">Pros</h3>
<ul>
<li>300M professionals from 30M companies in the database</li>
<li>Chrome extension for easy email and phone number extraction</li>
<li>API with hourly updates for 300M contact details</li>
<li>AI-powered personalization for emails</li>
<li>GDPR and CCPA-compliant</li>
</ul>
<h3 id="cons">Cons</h3>
<ul>
<li>Limited free plan with only 5 emails and phone numbers per day</li>
<li>Higher-tier plans can be expensive for small teams</li>
</ul>
<h3 id="pricing">Pricing</h3>
<p>Free plans available, and paid plans starting at $49 per month.</p>
<h3 id="best-for">Best for</h3>
<p>Recruiters, sales professionals, and businesses looking for accurate contact information for outreach.</p>
<h2 id="13-rocketreach">13. RocketReach</h2>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/07/rocket-reach.png" class="kg-image" alt="RocketReach's homepage" loading="lazy" width="2000" height="770"><figcaption><span style="white-space: pre-wrap;">RocketReach's homepage</span></figcaption></figure><p><a href="https://rocketreach.co/?ref=nubela.co">RocketReach</a> offers extensive contact data, including email addresses, phone numbers, and social media profiles.</p>
<h3 id="pros">Pros</h3>
<ul>
<li>Global phone and email coverage with 90-98% deliverability on verified emails</li>
<li>Automated prospect lists that update based on location, title, industry, skills, and company details</li>
<li>Intent data to identify potential buyers actively exploring solutions</li>
<li>AI-powered recommendations to uncover new contacts</li>
<li>Integrates with CRMs and marketing automation platforms like Salesforce and HubSpot</li>
<li>Browser extension for easy prospecting on social media sites and company websites</li>
<li>Large database with 700 million profiles and 60 million companies</li>
</ul>
<h3 id="cons">Cons</h3>
<ul>
<li>Higher-tier plans may be expensive for small businesses</li>
<li>Some advanced features only available through integrations and API access</li>
</ul>
<h3 id="pricing">Pricing</h3>
<p>Free plan available, paid plans starting at $99 per month.</p>
<h3 id="best-for">Best for</h3>
<p>Sales or recruiting departments looking for a comprehensive solution to find accurate contact data.</p>
<h2 id="final-comparison">Final comparison</h2>
<table>
<thead>
<tr>
<th>Tool</th>
<th>Core data enrichment focus</th>
<th>Features</th>
<th>Free plan</th>
<th>Paid plans' starting price</th>
</tr>
</thead>
<tbody>
<tr>
<td>Proxycurl</td>
<td>Job data, company data, people data, contact data</td>
<td>Extensive data coverage, real-time scraping, API access, detailed documentation, GDPR and CCPA-compliant</td>
<td>Has free trial</td>
<td>$49/month</td>
</tr>
<tr>
<td>Sapiengraph</td>
<td>Job data, company data, people data, contact data</td>
<td>Direct integration with Google Sheets, AI-driven insights, extensive data points, GDPR and CCPA-compliant</td>
<td>Has free trial</td>
<td>$49/month</td>
</tr>
<tr>
<td>Kaspr</td>
<td>Contact data</td>
<td>Data verified against 150 sources, extensive database, seamless Chrome integration, GDPR compliant</td>
<td>Has free trial</td>
<td>$49/month</td>
</tr>
<tr>
<td>Hunter.io</td>
<td>Email data</td>
<td>Simple interface, email finder and verifier, CRM integration, GDPR compliant</td>
<td>Has free trial</td>
<td>$49/month</td>
</tr>
<tr>
<td>UpLead</td>
<td>Contact data</td>
<td>High-quality B2B contact data, real-time email verification, CRM integration, GDPR compliant</td>
<td>Has free trial</td>
<td>$99/month</td>
</tr>
<tr>
<td>Adapt.io</td>
<td>Contact data, company data</td>
<td>Enrich CSV files, CRM integration, extensive database, API access, GDPR compliant</td>
<td>Has free trial</td>
<td>$49/month</td>
</tr>
<tr>
<td>Leadfeeder</td>
<td>Company data</td>
<td>Identifies website visitors, CRM integration, GDPR compliant</td>
<td>Has free trial</td>
<td>$165/month</td>
</tr>
<tr>
<td>Voila Norbert</td>
<td>Email data</td>
<td>Easy-to-use email finder, high accuracy, CRM integration, GDPR compliant</td>
<td>Has free trial</td>
<td>$49/month</td>
</tr>
<tr>
<td>FindThatLead</td>
<td>Email data</td>
<td>Email finder and verifier, CRM integration, GDPR compliant</td>
<td>Has free trial</td>
<td>$60/month billed annually</td>
</tr>
<tr>
<td>Seamless.AI</td>
<td>Contact data</td>
<td>AI-powered, real-time data verification, CRM integration, GDPR compliant</td>
<td>Has free trial</td>
<td>$147/month</td>
</tr>
<tr>
<td>Clearbit Connect</td>
<td>Email data</td>
<td>Simple interface, integrates with Gmail and Outlook, GDPR compliant</td>
<td>Has free trial</td>
<td>Free with benefits from upgrading to a paid Clearbit account</td>
</tr>
<tr>
<td>ContactOut</td>
<td>Email data, phone data</td>
<td>High accuracy, integrates with Professional Social Network, GDPR compliant</td>
<td>Has free trial</td>
<td>$49/month</td>
</tr>
<tr>
<td>RocketReach</td>
<td>Email data, phone data, social media profiles</td>
<td>Extensive database, high accuracy, CRM integration, GDPR compliant</td>
<td>Has free trial</td>
<td>$99/month</td>
</tr>
</tbody>
</table>
<h2 id="wrapping-things-up">Wrapping things up</h2>
<p>So, to wrap things up, data enrichment tools provide details like email addresses, phone numbers, job titles, company financials, and more.</p>
<p>They come in many different forms such as Chrome extensions, Google Sheets extensions, APIs, or beyond, and serve many different purposes such as finding new prospecting information for your sales team, or keeping your client database up to date.</p>
<h2 id="conclusion">Conclusion</h2>
<p>Now that you have a comprehensive understanding of data enrichment tools and how they can help your business, it's time to choose the right one for your needs.</p>
<p>For programmers or software engineers, <a href="https://proxycurl.com/?ref=nubela.co">Proxycurl</a> is the ideal B2B enrichment API. It offers a very large and rich dataset, real-time scraping, and easy integration. Many B2B data-driven applications rely on our API in the background.</p>
<p>For low-tech users or those seeking a straightforward solution, <a href="https://sapiengraph.com/?ref=nubela.co">Sapiengraph</a> is a great alternative, integrating directly with Google Sheets (anybody could use it).</p>
<p>Both include a free trial.</p>
<p>Alternatively, all of the other data enrichment tool recommendations on this list are great options as well.</p>
<p>That said, thanks for reading, and here's to better-quality B2B data! ;-)</p>
 ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ How Do I Change or Cancel My Subscription Plan? ]]></title>
        <description><![CDATA[ We get it - flexibility is key when it comes to managing your subscription. Whether you&#39;re looking to upgrade, downgrade, or even cancel your plan, we&#39;ve streamlined the process to be as painless as smooth as possible.

Here’s a quick guide to help you with ]]></description>
        <link>https://nubela.co/blog/how-do-i-change-or-cancel-my-subscription-plan/</link>
        <guid isPermaLink="false">669f263838fd8100017fff34</guid>
        <category><![CDATA[ proxycurl ]]></category>
        <dc:creator><![CDATA[ Steven Goh | CEO ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2019/05/square.jpg"/>
        <pubDate>Tue, 23 Jul 2024 11:41:14 +0800</pubDate>
        <media:content url="" medium="image"/>
        <content:encoded><![CDATA[ <p>We get it - flexibility is key when it comes to managing your subscription. Whether you're looking to upgrade, downgrade, or even cancel your plan, we've streamlined the process to be as painless as smooth as possible. <br><br>Here’s a quick guide to help you with each of these options.</p><h2 id="how-do-i-upgrade-my-plan">How do I upgrade my plan?</h2><p>Need extra perks? Running out of credits? Upgrade your plan by following this simple step-by-step guide just for you.</p><ol><li>Let’s say you are on a $49/mo plan and you are considering to upgrade your plan into $299/mo plan.</li></ol><figure class="kg-card kg-image-card"><img src="https://lh7-us.googleusercontent.com/docsz/AD_4nXcgu0IC6FrDEsa_snCV7top60gi83SiOb2WDiAKtPrKrTtKAG76pwozSVeTP17USPk_eXEJ1TngIrnLizkWurv1jds0iDa33-SrVGvQsKlnfsviaVGVsPf6y4MX0SKoReELwBMNhsD4VQCfDNX6ikBt14s?key=aEOdaZSU0M_0ktlgY2Z3WA" class="kg-image" alt="Upgrade plan on Proxycurl dashboard" loading="lazy" width="1578" height="878"></figure><ol start="2"><li>You will then be redirected to the Change plan page. Choose your new plan and click “Upgrade plan”.</li></ol><figure class="kg-card kg-image-card"><img src="https://lh7-us.googleusercontent.com/docsz/AD_4nXdTxRO7auzmwu21EnJZ6y-pTISldTUnX1z8qTW5A4jEgZeSKKZYoegW6RVYDiEWfqkRHShE6kVv68PDC8eQVyMH-yee8EnV4RF91P_MaVq00C8fVfHLGlnaQNV7akDTN3cIMFjzVwv_iWVBu5cQxnUQSKYE?key=aEOdaZSU0M_0ktlgY2Z3WA" class="kg-image" alt="Upgrade plan on Proxycurl dashboard" loading="lazy" width="788" height="684"></figure><ol start="3"><li>An order confirmation will pop up. If you'd like to enable the auto-topup, click on “Change plan and enable credit auto-topup”. For manual-topup, you can click “Change plan only”. You can always enable auto-topup later in your account settings.</li></ol><figure class="kg-card kg-image-card"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/07/image.png" class="kg-image" alt="Pay for plan upgrade on Proxycurl dashboard" loading="lazy" width="1599" height="899"></figure><p></p><ol start="4"><li>And you're done! You will receive a confirmation saying that your upgrade is successful. Enjoy your new plan!</li></ol><figure class="kg-card kg-image-card"><img src="https://lh7-us.googleusercontent.com/docsz/AD_4nXf7St-alvZC7Nj7o-SJ5XmgkxKL73rKnew32QpcZxrSjmaUmkBmgM3x2l8U6fLAShOeMQGHEiXO8U7HbeftkKuELH1ixGWDW6BQ45Edrvbr_RFlQS82NK6Y-SnHoaPo4f9C0AMMb59I0Mw7rhb8HubyA4rr?key=aEOdaZSU0M_0ktlgY2Z3WA" class="kg-image" alt="Payment completed for Proxycurl plan upgrade" loading="lazy" width="406" height="470"></figure><p></p><h2 id="how-do-i-downgrade-my-plan">How do I downgrade my plan?</h2><ol><li>From your Proxycurl dashboard, head to “Plan and payments”. Select your new plan then click on “Change or cancel plan”.</li></ol><figure class="kg-card kg-image-card"><img src="https://lh7-us.googleusercontent.com/docsz/AD_4nXfEk9MI7L1KNXaOoQwD199zKLcpWM4VaYlu66N84zK52_cM9GYXIi-CtQW33EAFCiXXa3C-T2ZdzHf3bQ2vIFwP1Z6vHzeezGiJGl6TSbIDy1q9RDNCGcIttY3YzWJuVJantQhCNH6NprzNnaD3Kg5UUrDS?key=aEOdaZSU0M_0ktlgY2Z3WA" class="kg-image" alt="Downgrade plan on Proxycurl dashboard" loading="lazy" width="1572" height="852"></figure><ol start="2"><li>You will then be redirected to the 'Change plan' page. Select your new plan and click on “Downgrade plan”.</li></ol><figure class="kg-card kg-image-card"><img src="https://lh7-us.googleusercontent.com/docsz/AD_4nXfi5Vh8aeCngaFNFbtMUn7IvWLLwKWKEmpvxR96SEPw3atgQ3Jpa8oVHycgJLmRF4dW8LtgR6gm1sxRiyPv0Y54yDMCKHsDI58uethOM7DIhbaC5X47x87GjIBcwSG3tOrgRV0RRz36iKPixtAoSOsifUx3?key=aEOdaZSU0M_0ktlgY2Z3WA" class="kg-image" alt="Downgrade plan on Proxycurl dashboard" loading="lazy" width="695" height="606"></figure><ol start="3"><li>A pop-up message will display your cancellation fees. Tell us why you would like to cancel your plan, then click “Next”.<br><br>(Note: <a href="https://nubela.co/blog/subscription-plan-cancellation/#:~:text=For%20the%201st%20plan%20%2D%20the,with%20a%20monthly%20billing%20frequency." rel="noreferrer">If you're ending your annual subscription early, you might be liable for cancellation fees!</a>)</li></ol><figure class="kg-card kg-image-card"><img src="https://lh7-us.googleusercontent.com/docsz/AD_4nXf_i72Pk1meGPPGzI8M53-AeGi2rU4WvGxLarBmsUIQsh6kELJg2webPacIVm4EdgOi814tbJX0nm_rgESrblda3T_bd4p7D3efFVLqsdhYWljYyt4FXazlcQQL-8rtemUig5El-LX2QfWbzNIU68DEa935?key=aEOdaZSU0M_0ktlgY2Z3WA" class="kg-image" alt="Pay for Proxycurl plan cancellation fees" loading="lazy" width="792" height="680"></figure><p></p><ol start="4"><li>Click on “Pay $xxxx and Cancel plan”. </li></ol><figure class="kg-card kg-image-card"><img src="https://lh7-us.googleusercontent.com/docsz/AD_4nXf96s7AzGQjf2CpochBo-j8Ge5SvniPvDQXVkEmw_L5J5V1Aguf_HJvQKpxlEyL0Z4tK2YvMDY6IwtXKV2o7s8mWalLzj4fuWaF-sn8Ad76Y16cZR05BMZ656nAFv1hNKW5NzzVFCUPU2m860kDt2kmIcPy?key=aEOdaZSU0M_0ktlgY2Z3WA" class="kg-image" alt="Pay for Proxycurl plan cancellation fees" loading="lazy" width="789" height="688"></figure><ol start="5"><li>You’re done! Your subscription has been cancelled successfully!</li></ol><figure class="kg-card kg-image-card"><img src="https://lh7-us.googleusercontent.com/docsz/AD_4nXeq7YJ78-a5TtkkpRSirnXuyL3OZXNGMrwHtopbBozyt7hd_MLJffPnr_aw6dKQKH95wzPFG8b4nGLYR0SFbKr3G1Xz3Yrj6FIKIOo49TaHg5VgAMfFSGPdyzWqvy76A9y76Vit_OU7_KeGD9w82INyyjXN?key=aEOdaZSU0M_0ktlgY2Z3WA" class="kg-image" alt="Proxycurl plan cancellation completed" loading="lazy" width="683" height="520"></figure><p>You're all set and can now resubscribe to a lower-tier subscription plan. Please note that if you choose to downgrade your plan, you will be liable for cancellation fees, as this is considered a breach of contract. Downgrading is treated the same as canceling your plan, which is why cancellation fees apply.</p><h2 id="i%E2%80%99d-like-to-cancel-my-plan-how-do-i-do-it">I’d like to cancel my plan, how do I do it?</h2><p>Thinking about canceling your subscription plan? Follow this step-by-step guide.</p><ol><li>From your Proxycurl dashboard, go to the “Plan and payments” page. Click on “Change or cancel plan”.</li></ol><figure class="kg-card kg-image-card"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/07/image-3.png" class="kg-image" alt="Cancel plan on Proxycurl dashboard" loading="lazy" width="1574" height="873"></figure><ol start="2"><li>You will then be redirected to “Change plan” page. Scroll down and click on the “Cancel plan” button.</li></ol><figure class="kg-card kg-image-card"><img src="https://lh7-us.googleusercontent.com/docsz/AD_4nXeDIpTnca1d-LR21sL5FSL2GYrm7kcWWTkYgokO6YX2z_yyS8FCDeKSHCkWTyeAzvbXll2uesLg-qZ3n-9AjvQrFvcIOCb8lcRSbW4dBF-_xVCLTswr7pi8fb5ZXF8EqERKQTBgg09bR7SrrJ1wp3kkcpA?key=aEOdaZSU0M_0ktlgY2Z3WA" class="kg-image" alt="Cancel plan on Proxycurl dashboard" loading="lazy" width="779" height="675"></figure><ol start="3"><li>A pop-up message will display your cancellation fees. Tell us why you would like to cancel your plan, then click “Next”.<br><br>(Note: <a href="https://nubela.co/blog/subscription-plan-cancellation/#:~:text=For%20the%201st%20plan%20%2D%20the,with%20a%20monthly%20billing%20frequency." rel="noreferrer">If you're ending your annual subscription early, you might be liable for cancellation fees!</a>)</li></ol><figure class="kg-card kg-image-card"><img src="https://lh7-us.googleusercontent.com/docsz/AD_4nXf_i72Pk1meGPPGzI8M53-AeGi2rU4WvGxLarBmsUIQsh6kELJg2webPacIVm4EdgOi814tbJX0nm_rgESrblda3T_bd4p7D3efFVLqsdhYWljYyt4FXazlcQQL-8rtemUig5El-LX2QfWbzNIU68DEa935?key=aEOdaZSU0M_0ktlgY2Z3WA" class="kg-image" alt="Pay for Proxycurl plan cancellation fees" loading="lazy" width="792" height="680"></figure><p></p><ol start="4"><li>Click on “Pay $xxxx and Cancel plan”. </li></ol><figure class="kg-card kg-image-card"><img src="https://lh7-us.googleusercontent.com/docsz/AD_4nXf96s7AzGQjf2CpochBo-j8Ge5SvniPvDQXVkEmw_L5J5V1Aguf_HJvQKpxlEyL0Z4tK2YvMDY6IwtXKV2o7s8mWalLzj4fuWaF-sn8Ad76Y16cZR05BMZ656nAFv1hNKW5NzzVFCUPU2m860kDt2kmIcPy?key=aEOdaZSU0M_0ktlgY2Z3WA" class="kg-image" alt="Pay for Proxycurl plan cancellation fees" loading="lazy" width="789" height="688"></figure><ol start="5"><li>You’re done! Your subscription has been cancelled successfully!</li></ol><figure class="kg-card kg-image-card"><img src="https://lh7-us.googleusercontent.com/docsz/AD_4nXeq7YJ78-a5TtkkpRSirnXuyL3OZXNGMrwHtopbBozyt7hd_MLJffPnr_aw6dKQKH95wzPFG8b4nGLYR0SFbKr3G1Xz3Yrj6FIKIOo49TaHg5VgAMfFSGPdyzWqvy76A9y76Vit_OU7_KeGD9w82INyyjXN?key=aEOdaZSU0M_0ktlgY2Z3WA" class="kg-image" alt="Proxycurl plan cancellation completed" loading="lazy" width="683" height="520"></figure><p></p><p>You can resubscribe any time from the comfort of your own dashboard. Thank you for choosing Proxycurl and we hope to serve you again! </p><p></p> ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ How Lior Neu-ner Bootstrapped His Job Board, Remote Rocketship, to Over 350,000 Unique Visitors per Month ]]></title>
        <description><![CDATA[ Learn how Lior profitably bootstrapped his niche job board, Remote Rocketship, to over 350,000 monthly unique visitors. ]]></description>
        <link>https://nubela.co/blog/how-lior-neu-ner-grew-his-job-board-remote-rocketship/</link>
        <guid isPermaLink="false">666cb46138fd8100017ffa6a</guid>
        <category><![CDATA[ job board ]]></category>
        <dc:creator><![CDATA[ Colton Randolph | Technical Writer ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2023/08/cr.jpg"/>
        <pubDate>Fri, 28 Jun 2024 02:24:10 +0800</pubDate>
        <media:content url="" medium="image"/>
        <content:encoded><![CDATA[ <p>I recently emailed our wonderful newsletter subscribers about our <a href="https://nubela.co/proxycurl/jobs-api?ref=nubela.co">Jobs API</a> and [how you can build a job board with our B2B enrichment API](<a href="https://nubela.co/blog/how-to-build-a-job-board-with-this-new-Professional">https://nubela.co/blog/how-to-build-a-job-board-with-this-new-Professional</a> Social Network-job-scraping-api).</p>
<p>And I had the pleasure of having Lior Neu-ner, the founder of <a href="https://www.remoterocketship.com/?ref=nubela.co">Remote Rocketship</a>, respond to that email explaining he's currently running a job board with the help of our API and was interested in doing an interview breaking down how his job board works behind the scenes.</p>
<p>So, of course, I took him up on that offer...</p>
<p>By the way, if you didn't already know, Remote Rocketship is a job board that specializes in helping people land remote jobs:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/06/remote-rocketship.png" class="kg-image" alt="Remote Rocketship's homepage" loading="lazy" width="2887" height="1412"><figcaption><span style="white-space: pre-wrap;">Remote Rocketship's homepage.</span></figcaption></figure><p>It's quite an interesting project.</p>
<div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">💡</div><div class="kg-callout-text"><b><strong style="white-space: pre-wrap;">Note: </strong></b>You can also watch the video format of this interview below.</div></div><figure class="kg-card kg-embed-card"><iframe width="200" height="113" src="https://www.youtube.com/embed/MhAUbWfcJvY?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen="" title="How Lior bootstrapped his job board Remote Rocketship to 350000 monthly visitor"></iframe></figure><p>So, without further ado, let's dive in and find out how Lior grew Remote Rocketship into what it is today:</p>
<h2 id="introduction-to-remote-rocketship">Introduction to Remote Rocketship</h2>
<h3 id="who-is-lior-neu-ner">Who is Lior Neu-ner?</h3>
<p><strong>Colton:</strong> Hey, Lior, could you introduce yourself?</p>
<p><strong>Lior:</strong> Yeah. Yeah. I'm Lior, and, I'm the founder of Remote Rocketship. Remote Rocketship is a job board for remote jobs. We work differently than most other job boards, since most other job boards require companies to pay to post their jobs on their job board.</p>
<h3 id="what-does-remote-rocketship-do">What does Remote Rocketship do?</h3>
<p><strong>Colton:</strong> What do you do instead?</p>
<p><strong>Lior:</strong> What we do instead is we scrape job openings from 30,000 plus companies that we have, and we post all their job openings on our website. So job seekers love us just because we have tens of thousands more job openings than most other job boards.</p>
<h3 id="how-does-remote-rocketship-make-money">How does Remote Rocketship make money?</h3>
<p><strong>Colton:</strong> Awesome. And so your form of monetization is what?</p>
<p><strong>Lior:</strong> Most job boards charge companies to pay to post the listings. What I do instead is I charge job seekers $5 a week or $18 a month. In return, they get access to all the jobs we have on our website.</p>
<figure class="kg-card kg-embed-card"><iframe width="200" height="150" src="https://www.youtube.com/embed/Hq6g28eNbkY?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen="" title="Why I created Remote Rocketship"></iframe></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/06/salespage-final.png" class="kg-image" alt="While you can see a few job listings for free, you need to sign up to see all of them." loading="lazy" width="2046" height="1590"><figcaption><span style="white-space: pre-wrap;">While you can see a few job listings for free, you need to sign up to see all of them.</span></figcaption></figure><h2 id="technical-foundations">Technical foundations</h2>
<h3 id="how-remote-rocketship-works">How Remote Rocketship works</h3>
<p><strong>Colton:</strong> What is the fundamental technology stack behind Remote Rocketship?</p>
<p><strong>Lior:</strong> The technology behind it is pretty simple. The front end is <a href="https://nextjs.org/?ref=nubela.co">Next.js</a>, and the backend is <a href="https://supabase.com/?ref=nubela.co">Supabase</a>. But really, how everything comes together is through scraping job openings. I then use Proxycurl to enrich the company data for the job openings. So, when people see a job opening, there's lots of information about who the company is and what they're doing.</p>
<h3 id="how-lior-is-using-proxycurls-api">How Lior is using Proxycurl's API</h3>
<p><strong>Colton:</strong> What Proxycurl endpoints are you using?</p>
<p><strong>Lior:</strong> The <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#company-api-company-profile-endpoint">Company Profile Endpoint</a>. I think it's the company profile one, the slash company endpoint. So, for example, if you look at our website, what I pull from Proxycurl is the company size, funding information if available, a blurb about what the company does, and their Professional Social Network URLs.</p>
<h3 id="how-to-pull-company-data-with-our-company-profile-endpoint">How to pull company data with our Company Profile Endpoint</h3>
<p>You'll first need a Proxycurl account (<a href="https://nubela.co/proxycurl/auth/register?ref=nubela.co">you can create one right here</a>) and an API key to query our API, but outside of that, it's very simple to pull data from our API.</p>
<p>For example, here's a cURL request:</p>
<pre><code class="language-python3">curl \
    -G \
    -H "Authorization: Bearer ${YOUR_API_KEY}" \
    'https://nubela.co/proxycurl/api/Professional Social Network/company' \
    --data-urlencode 'url=https://www.professionalsocialnetwork.com/company/google/' \
    --data-urlencode 'categories=include' \
    --data-urlencode 'funding_data=include' \
    --data-urlencode 'exit_data=include' \
    --data-urlencode 'acquisitions=include' \
    --data-urlencode 'extra=include' \
    --data-urlencode 'use_cache=if-present' \
    --data-urlencode 'fallback_to_cache=on-error'
</code></pre>
<p>The above would return tons of information about a given Professional Social Network company, including the number of employees, funding data, exit data, acquisitions, and more.</p>
<h3 id="how-lior-scrapes-job-data">How Lior scrapes job data</h3>
<p><strong>Colton:</strong> How do you scrape job data?</p>
<p><strong>Lior:</strong> Most companies use something called an applicant tracking system (ATS), like Greenhouse, Workable, or Lever, to manage their hiring pipeline. All the job openings are hosted on some sort of URL on these websites. I use <a href="https://www.scrapingbee.com/?ref=nubela.co">ScrapingBee</a> (a web scraping API) to search Google for all the ATS links and check these links daily for new jobs. The job itself isn't scraped from Professional Social Network; we get the job name, company, remote status, financial information, full-time status, and salary from the ATS links.</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/06/scrapingbee.png" class="kg-image" alt="ScrapingBee is a web scraping API that handles the annoying stuff for you." loading="lazy" width="2879" height="1652"><figcaption><span style="white-space: pre-wrap;">ScrapingBee is a web scraping API that handles the annoying stuff for you.</span></figcaption></figure><p><strong>Note:</strong> Lior <a href="https://www.scrapingbee.com/blog/build-job-board-web-scraping/?ref=nubela.co">wrote a guest post for ScrapingBee</a> where he elaborates a bit more on this, and after speaking to him, his general strategy for scraping job data is:</p>
<ol>
<li>Use ScrapingBee's web scraping API to scrape ATS links, such as <code>https://apply.workable.com/{company}/j/{job_id}</code></li>
<li>Extract and parse job information from relevant URLs (Lior uses ChatGPT's API to help with this)</li>
<li>Aggregate, and display that data</li>
</ol>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/06/workable.png" class="kg-image" alt="An example of a Workable ATS job listing URL." loading="lazy" width="2894" height="1735"><figcaption><span style="white-space: pre-wrap;">An example of a Workable ATS job listing URL for a "Senior Software Engineer."</span></figcaption></figure><p><strong>Colton:</strong> And then you use Proxycurl to enrich the company information?</p>
<p><strong>Lior:</strong> Yes, exactly. Proxycurl enriches the company data with details like company size and funding information. This adds significant value to our job listings and helps job seekers make more informed decisions.</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/06/info-px.png" class="kg-image" alt="The different data points that are provided on a job page on Remote Rocketship." loading="lazy" width="2826" height="1531"><figcaption><span style="white-space: pre-wrap;">The different data points that are provided on a job page on Remote Rocketship.</span></figcaption></figure><h3 id="how-you-can-pull-job-data-with-proxycurl">How you can pull job data with Proxycurl</h3>
<p>While Lior individually scrapes ATS links, you could also pull job data and Professional Social Network job listings through our Jobs API.</p>
<p>It could be as simple as the following cURL request to our <a href="https://nubela.co/proxycurl/docs?shell&ref=nubela.co#jobs-api-job-search-endpoint">Job Search Endpoint</a>:</p>
<pre><code>curl \
    -G \
    -H "Authorization: Bearer ${YOUR_API_KEY}" \
    'https://nubela.co/proxycurl/api/v2/Professional Social Network/company/job' \
    --data-urlencode 'job_type=anything' \
    --data-urlencode 'experience_level=entry_level' \
    --data-urlencode 'when=past-month' \
    --data-urlencode 'flexibility=remote' \
    --data-urlencode 'keyword=software engineer' \
    --data-urlencode 'search_id=1035'
</code></pre>
<p>That would return all of the entry-level remote job listings for Microsoft software engineers (using Microsoft's <code>search_id</code>). You can find a <code>search_id</code> of a company via our Company Profile Endpoint if you don't already have it.</p>
<p>Additionally, if you wanted to enrich any given Professional Social Network job listing, you could do so with our <a href="https://nubela.co/proxycurl/docs?shell&ref=nubela.co#jobs-api-job-profile-endpoint">Job Profile Endpoint</a>.</p>
<p>Here's a quick example of that:</p>
<pre><code>curl \
    -G \
    -H "Authorization: Bearer ${YOUR_API_KEY}" \
    'https://nubela.co/proxycurl/api/Professional Social Network/job' \
    --data-urlencode 'url=https://www.professionalsocialnetwork.com/jobs/view/3667167926/'
</code></pre>
<h2 id="making-money-and-growth">Making money and growth</h2>
<h3 id="how-remote-rocketship-grew">How Remote Rocketship grew</h3>
<p><strong>Colton:</strong> What was your first growth mechanism? How did you originally generate traction for Remote Rocketship?</p>
<p><strong>Lior:</strong> The story behind it is what resonated with people. My wife was looking for a remote job and was frustrated with the lack of job openings and company information on other job boards. I knew many great companies were hiring but weren't listed on these job boards because they didn't want to pay for listings. So, I built a scraper to check for new job openings every day, giving us more job openings and getting them before other applicants.</p>
<p>I shared the site on Reddit, specifically on r/TheWorldIsBeautiful, and it did super well. I got 150,000 visitors in one day, which crashed the site. I also shared it on r/overemployed, where remote workers juggling multiple jobs found it particularly useful.</p>
<h3 id="remote-rocketship-even-landed-lior-a-job">Remote Rocketship even landed Lior a job</h3>
<p><strong>Colton:</strong> You're currently working for PostHog as well as a technical writer, correct? Is there any connection between the two projects?</p>
<p><strong>Lior:</strong> Yeah, Remote Rocketship is actually how I found PostHog. After launching on Reddit, I needed a new analytics tool. Someone recommended Posthog on Twitter. I checked it out, found it to be a cool company, and they had a job opening for a technical writer. I applied and got the job. PostHog is cool with me working on Remote Rocketship on the side.</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/06/posthog-hp.png" class="kg-image" alt="PostHog's homepage." loading="lazy" width="2895" height="1648"><figcaption><span style="white-space: pre-wrap;">PostHog's homepage.</span></figcaption></figure><p><strong>Colton:</strong> What do you do for PostHog?</p>
<p><strong>Lior:</strong> I'm a technical writer, so I handle marketing, SEO, and writing technical content for newsletters, documentation, and other channels.</p>
<h3 id="how-many-unique-visitors-does-remote-rocketship-get">How many unique visitors does Remote Rocketship get?</h3>
<p><strong>Colton:</strong> How many unique visitors does Remote Rocketship get per month?</p>
<p><strong>Lior:</strong> Currently, we get around 350,000 unique visitors per month.</p>
<p><strong>Colton:</strong> What do you think makes Remote Rocketship stand out?</p>
<p><strong>Lior:</strong> One of the features people appreciate is the amount of filters we have, like salary and company size. Company size, in particular, is something we get from Proxycurl. We also allow sorting by funding data, like the most recent fundraise, which is also powered by Proxycurl.</p>
<p><strong>Colton:</strong> You mentioned filters and company size. What other features do users find helpful?</p>
<p><strong>Lior:</strong> People like to sort by various parameters, including the size of the company, which is something we get from Proxycurl. Another popular feature is sorting by the most recent fundraise, again powered by Proxycurl. These features help users tailor their job search to their specific needs and preferences.</p>
<p>Nice! Thanks, Lior!</p>
<p>For anyone interested in landing a remote job, please check out <a href="https://remoterocketship.com/?ref=nubela.co">Remote Rocketship</a>.</p>
<h3 id="is-remote-rocketship-profitable">Is Remote Rocketship profitable?</h3>
<p>While Lior shared financial figures with me privately, he was understandably uninterested in doing so publicly.</p>
<p>So, since I figure you'd like to get an idea of how much money Remote Rocketship is making, I'll leave you with <a href="https://x.com/LiorNn/status/1729798175538454601?ref=nubela.co">this screenshot Lior shared on X</a> from November of 2023:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/06/GAF5066W4AAOZIT.jpeg" class="kg-image" alt="Remote Rocketship's revenue from November of 2023." loading="lazy" width="1170" height="402"><figcaption><span style="white-space: pre-wrap;">Remote Rocketship's revenue from November of 2023.</span></figcaption></figure><p>...it has only been up from there 😉.</p>
<h2 id="a-quick-recap">A quick recap</h2>
<h3 id="why-remote-rocketship-was-made">Why Remote Rocketship was made</h3>
<p>Remote Rocketship was inspired by Lior's wife having issues finding a remote job. He knew how the job board business model worked and wanted to throw his hat in at building a different kind of job board.</p>
<p>So, Lior set out to make the process of finding and landing remote jobs much easier with Remote Rocketship.</p>
<h3 id="remote-rocketships-technology-stack">Remote Rocketship's technology stack</h3>
<p>Remote Rocketship is built with a solid tech foundation: the front end is developed using Next.js, and the backend is powered by Supabase.</p>
<p>They scrape job listings from over 30,000 companies using scraping APIs such as ScrapingBee, which systematically collects data from Applicant Tracking Systems (ATS) like Workable, Greenhouse, and Lever, and then our B2B enrichment API, which enriches these listings with detailed company information.</p>
<h3 id="monetization-strategy">Monetization strategy</h3>
<p>Remote Rocketship adopts a user-centric revenue model.</p>
<p>Instead of charging companies to post job listings, it charges remote job seekers $5 a week or $18 a month for access to all listings.</p>
<p>Fundamentally, this allows most of this process to be automated and flips the usual business model on its head.</p>
<h3 id="how-remote-rocketship-gained-traction">How Remote Rocketship gained traction</h3>
<p>Remote Rocketship's growth was initially fueled by community engagement and organic traction on platforms like Reddit.</p>
<p>Specifically, Lior shared the story on r/TheWorldIsBeautiful, which led to a viral response and 150,000 visitors in one day. It also gained traction on other subreddits like r/overemployed.</p>
<h2 id="whew-that-was-quite-a-bit">Whew, that was quite a bit</h2>
<p>Hopefully, you found some value and learned a thing or two from this interview.</p>
<p>Job boards have been a pretty popular application idea recently, but Remote Rocketship just goes to show with a slight tweak or two, there is certainly still plenty of potential. You just need to be able to differentiate yourself.</p>
<p>In Lior's case, he focused on remote jobs specifically and flipped the traditional job board business model on its head by monetizing job seekers rather than businesses looking to recruit talent, but there are about a thousand different twists you can put on this. Think outside the box.</p>
<p>This also goes to show you don't need a large development team or a lot of complexities to build profitable projects. Remote Rocketship is run by a single individual who invested a bit of sweat equity upfront. After that, the majority of the project runs on autopilot.</p>
<p>What a time to be alive...</p>
<h2 id="interested-in-creating-your-own-job-board">Interested in creating your own job board?</h2>
<p>Between our Jobs API and our Company API, we have all the data you need to make your very own job board today. All you need to do is actually make it!</p>
<p>But the first step is to <a href="https://nubela.co/proxycurl/auth/register?ref=nubela.co">create your Proxycurl account for free here</a>.</p>
<p>And if you'd like to learn more about the job data you can pull through our API, this YouTube video will help out quite a bit:</p>
<figure class="kg-card kg-embed-card"><iframe width="200" height="113" src="https://www.youtube.com/embed/VoiPEXlX3sk?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen="" title="How to scrape Professional Social Network jobs programatically with Python"></iframe></figure><p>Thanks for reading!</p>
<p><strong>P.S.</strong> While Proxycurl works well for pulling job and company data, our API isn't limited to only that. We can also enrich personal profiles, provide contact information on prospects, and more. To learn more about what all our B2B enrichment API can do, <a href="https://proxycurl.com/?ref=nubela.co">click here</a>.</p>
<p></p> ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ 19 Best Data Enrichment APIs in 2025 ]]></title>
        <description><![CDATA[ Learn the purpose of a data enrichment API and the top 19 data enrichment APIs of 2025. 1. Proxycurl 2. Clearbit 3. ZoomInfo ]]></description>
        <link>https://nubela.co/blog/best-data-enrichment-apis/</link>
        <guid isPermaLink="false">66395f0225e37900018e4b35</guid>
        <category><![CDATA[ crm data enrichment ]]></category>
        <dc:creator><![CDATA[ Colton Randolph | Technical Writer ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2023/08/cr.jpg"/>
        <pubDate>Thu, 13 Jun 2024 12:40:58 +0800</pubDate>
        <media:content url="" medium="image"/>
        <content:encoded><![CDATA[ <p>What's worse than inaccurate data? Incomplete data.</p>
<p>Raw data lacks the depth and context necessary to be truly useful.</p>
<p>This is where data enrichment comes in to help fill the gaps.</p>
<h2 id="what-is-data-enrichment">What is data enrichment?</h2>
<p>Data enrichment involves enhancing raw data by adding valuable information from external sources.</p>
<p>Imagine having a list of customer names and email addresses. Data enrichment can augment this list with details like job titles, company names, social media profiles, and other relevant information.</p>
<p>This enriched data offers a more complete view of your prospects/customers, allowing you to do much more in many different aspects.</p>
<h3 id="understanding-apis">Understanding APIs</h3>
<p>To efficiently perform data enrichment, businesses often use <a href="https://nubela.co/proxycurl/?ref=nubela.co">APIs</a>.</p>
<p>An API, or Application Programming Interface, is like a translator that allows different software applications to communicate with each other.</p>
<p>One system requests data or services from another system and receive a response, in a structured way.</p>
<h3 id="how-data-enrichment-apis-work">How data enrichment APIs work</h3>
<p><a href="https://nubela.co/proxycurl/?ref=nubela.co">Data enrichment APIs</a> are specialized tools that add external information to your exisiting datasets programmatically.</p>
<p>Instead of manually searching for and inputting additional data, these APIs automate the process.</p>
<p>For example, if you have a customer's name and email address, a data enrichment API can automatically retrieve and add their job title, company details, and social media profiles to your database.</p>
<p>It saves time, ensures accuracy by reducing manual entry errors, keeps information up-to-date with real-time updates, and handles large volumes of data efficiently.</p>
<h2 id="benefits-of-data-enrichment-apis">Benefits of Data enrichment APIs</h2>
<p>Data enrichment APIs have a wide range of applications, including:</p>
<h3 id="improved-customer-insights">Improved customer insights</h3>
<p>Enriched data helps create detailed customer profiles, enabling personalized marketing and enhanced customer experiences.</p>
<p>It augments existing customer information with additional data points such as demographic details, social media activity, and purchasing history, so you understand the customers' needs and preferences better.</p>
<p>This allows for more targeted marketing campaigns, higher customer satisfaction, and increased loyalty.</p>
<h3 id="enhanced-lead-scoring">Enhanced lead scoring</h3>
<p>Add context to leads for accurate scoring and prioritization.</p>
<p>Data enrichment APIs can <a href="https://nubela.co/blog/the-blueprint-to-building-a-successful-sales-prospecting-application/">provide additional information about potential leads</a>, such as their company size, industry, job role, and beyond.</p>
<p>This extra data helps sales and marketing teams prioritize high-value leads, streamline their outreach efforts, and increase conversion rates.</p>
<p>Enhanced lead scoring ensures your most promising leads receive the attention they deserve, improving overall sales efficiency.</p>
<h3 id="fraud-detection">Fraud detection</h3>
<p>Enriched data can help identify suspicious patterns and behaviors, <a href="https://nubela.co/blog/due-diligence-simplified-automate-the-enrichment-of-people-and-companies/">enhancing fraud detection mechanisms</a>.</p>
<p>By integrating data from various sources, you gain a comprehensive view of transactions and user activities.</p>
<p>This makes it easier to spot anomalies and <a href="https://amlyze.com/aml-investigation-effective-practises/?ref=nubela.co">detect fraudulent activities</a> early on.</p>
<p>For example, enriched data might reveal inconsistencies in billing addresses, unusual purchasing patterns, or mismatched user information, all of which can signal potential fraud.</p>
<h3 id="market-research">Market research</h3>
<p>Market trends and competitor activities are highted with data enrichment.</p>
<p>Their research involves bulk analyzing hundreds and thousands of websites and other web assets, which is impossible without a reliable <a href="https://seranking.com/api.html?ref=nubela.co">SEO API solution</a>.</p>
<p>By aggregating data from different sources, companies can analyze market dynamics, customer behavior, and competitive landscapes.</p>
<p>This enriched data allows you to make informed strategic decisions, identify new market opportunities, and stay ahead of industry trends.</p>
<p>For instance, enriched data can provide insights into emerging consumer preferences, regional market variations, and competitive pricing strategies.</p>
<h3 id="fill-your-data-gaps">Fill your data gaps</h3>
<p>Enrichment helps in <a href="https://nubela.co/blog/crm-data-enrichment-the-easiest-way-to-increase-your-sales-conversion-rates/">filling gaps and correcting inaccuracies in datasets</a>.</p>
<p>Over time, databases can become cluttered with incomplete or outdated information.</p>
<p>Data enrichment APIs can automatically update and validate data entries, ensuring that records are accurate and up-to-date. This helps you stay on top of competition and snipe opportunities early on.</p>
<p>Clean, enriched data is essential for making accurate forecasts, optimizing operations, and maintaining regulatory compliance.</p>
<h3 id="personalized-customer-experiences">Personalized customer experiences</h3>
<p>Enriched data gives you the power to personalize customer experiences by tailoring products, services, and communications to individual preferences.</p>
<p>For example, a retail company can use enriched customer data to recommend products based on previous purchases and browsing behavior.</p>
<p>Similarly, financial institutions can offer personalized financial advice and product recommendations based on a customer's financial history and goals.</p>
<h3 id="improved-targeting-and-segmentation">Improved targeting and segmentation</h3>
<p>By understanding more about your audience, you can create precise customer segments and deliver relevant content to each group.</p>
<p>This leads to effective marketing campaigns, higher engagement rates, and better return on investment (ROI).</p>
<p>For instance, a travel agency can use enriched data to target customers who have shown interest in specific destinations or travel experiences.</p>
<h3 id="enhanced-customer-support">Enhanced customer support</h3>
<p>Enriched data can improve customer support by providing support agents with comprehensive customer information.</p>
<p>When a customer contacts support, agents can quickly access their purchase history, previous interactions, and preferences, allowing for faster and more effective resolution of issues.</p>
<p>Personalized support leads to higher customer satisfaction and loyalty.</p>
<h3 id="business-intelligence-and-analytics">Business intelligence and analytics</h3>
<p>Data enrichment plays a crucial role in business intelligence and analytics by providing a more complete and accurate dataset for analysis.</p>
<p>With enriched data, you can uncover deeper insights, identify trends, and make data-driven decisions.</p>
<p>This can lead to improved operational efficiency, better resource allocation, and enhanced strategic planning.</p>
<h3 id="investing-and-startup-funding">Investing and startup funding</h3>
<p>Enriched data can significantly impact investing and startup funding by providing deeper insights into market trends, investment opportunities, and potential risks.</p>
<p>As an investor, you can leverage enriched data to <a href="https://nubela.co/blog/the-vc-playbook-proven-methods-for-identifying-and-securing-promising-startups-first/">identify high-potential ventures</a>, understand the competitive landscape, and perform more thorough due diligence.</p>
<p>For startups, enriched data helps in understanding investor behavior, optimizing fundraising strategies, and identifying key growth areas.</p>
<h2 id="does-one-of-those-use-cases-appeal-to-you">Does one of those use cases appeal to you?</h2>
<p>Whatever your use case might be, there are no shortcomings of having better data. It enhances business processes by providing that additional context and accuracy to your existing data.</p>
<p>Now, let's dive into the 19 best data enrichment APIs that can help your business.</p>
<h2 id="the-19-best-data-enrichment-apis">The 19 best data enrichment APIs</h2>
<p>Since this list is rather long, I'll lead with a summarized comparison at the top before the detailed comparison below:</p>
<table>
<thead>
<tr>
<th>API</th>
<th>Key Features</th>
<th>Best For</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Proxycurl</strong></td>
<td>People and company data, social media profiles</td>
<td>Comprehensive data enrichment</td>
</tr>
<tr>
<td><strong>Clearbit <br> (Now Breeze Intelligence by HubSpot)</strong></td>
<td>Company demographics, employee information, social profiles</td>
<td>B2B marketing and sales teams</td>
</tr>
<tr>
<td><strong>ZoomInfo</strong></td>
<td>Detailed company and contact information</td>
<td>Sales teams and lead generation</td>
</tr>
<tr>
<td><strong>People Data Labs</strong></td>
<td>Extensive profiles, recruiting software background</td>
<td>Startups</td>
</tr>
<tr>
<td><strong>FullContact</strong></td>
<td>Contact data with social media profiles, job titles, KYC</td>
<td>Identity verification and fraud detection</td>
</tr>
<tr>
<td><strong>Pipl</strong></td>
<td>KYC</td>
<td>Identity verification and fraud detection</td>
</tr>
<tr>
<td><strong>Demandbase</strong></td>
<td>Insights into companies and executives</td>
<td>Market intelligence and lead scoring</td>
</tr>
<tr>
<td><strong>Enrich</strong></td>
<td>Detailed people and company information</td>
<td>General enrichment</td>
</tr>
<tr>
<td><strong>Datanyze</strong></td>
<td>Contact information</td>
<td>Sales departments</td>
</tr>
<tr>
<td><strong>Lusha</strong></td>
<td>Contact data with phone numbers, email addresses, company info</td>
<td>Sales outreach and marketing teams</td>
</tr>
<tr>
<td><strong>Data Axle <br> (Formerly InfoGroup)</strong></td>
<td>Business and consumer information</td>
<td>Business and consumer information</td>
</tr>
<tr>
<td><strong>Coresignal</strong></td>
<td>Professional and company data</td>
<td>Professional and company data enrichment</td>
</tr>
<tr>
<td><strong>Snov.io</strong></td>
<td>Information on companies and contacts</td>
<td>Lead generation and outreach efforts</td>
</tr>
<tr>
<td><strong>LeadGenius</strong></td>
<td>Up-to-date business information</td>
<td>General enrichment</td>
</tr>
<tr>
<td><strong>Mattermark</strong></td>
<td>Company data, growth signals, funding data</td>
<td>Identifying high-potential prospects</td>
</tr>
<tr>
<td><strong>Crunchbase</strong></td>
<td>Information on startups and companies</td>
<td>Market trends and potential partners or funding/investments</td>
</tr>
<tr>
<td><strong>HG Insights</strong></td>
<td>Technographic data</td>
<td>Technographic insights</td>
</tr>
<tr>
<td><strong>Leadspace</strong></td>
<td>Detailed information on companies and contacts</td>
<td>General enrichment, CRM enrichment</td>
</tr>
<tr>
<td><strong>Melissa</strong></td>
<td>Business and consumer information</td>
<td>Data quality and verification</td>
</tr>
</tbody>
</table>
<h2 id="1-proxycurl">1. Proxycurl</h2>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/06/de1.png" class="kg-image" alt="Proxycurl's homepage" loading="lazy" width="2000" height="1059"><figcaption><span style="white-space: pre-wrap;">Proxycurl's homepage</span></figcaption></figure><p><a href="https://proxycurl.com/?ref=nubela.co">Proxycurl</a> (hi, that's us! ;-) is a B2B enrichment API that specializes in people and companies.</p>
<p>It provides a wide range of information, including job titles, company details, social media profiles, contact information, and beyond making it a top choice for businesses looking to enhance their data quality and depth.</p>
<h2 id="how-to-enrich-people-with-proxycurl">How to enrich people with Proxycurl</h2>
<p>Enriching people can be as easy as querying our API, specifically our <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#people-api">Person Profile Endpoint</a>, with a cURL command, such as:</p>
<pre><code class="language-bash">curl \
    -G \
    -H "Authorization: Bearer ${YOUR_API_KEY}" \
    'https://nubela.co/proxycurl/api/v2/Professional Social Network' \
    --data-urlencode 'Professional Social Network_profile_url=https://professionalsocialnetwork.com/in/johnrmarty/' \
    --data-urlencode 'extra=include' \
    --data-urlencode 'github_profile_id=include' \
    --data-urlencode 'facebook_profile_id=include' \
    --data-urlencode 'twitter_profile_id=include' \
    --data-urlencode 'personal_contact_number=include' \
    --data-urlencode 'personal_email=include' \
    --data-urlencode 'inferred_salary=include' \
    --data-urlencode 'skills=include' \
    --data-urlencode 'use_cache=if-recent' \
    --data-urlencode 'fallback_to_cache=on-error'
</code></pre>
<p>Which would enrich an individual with their Professional Social Network profile URL, but you could also use X or Facebook.</p>
<p>Here's what it would return:</p>
<pre><code class="language-json">{
  "public_identifier": "johnrmarty",
  "profile_pic_url": "https://s3.us-west-000.backblazeb2.com/proxycurl/person/johnrmarty/profile?X-Amz-Algorithm=AWS4-HMAC-SHA256&amp;X-Amz-Credential=0004d7f56a0400b0000000001%2F20240606%2Fus-west-000%2Fs3%2Faws4_request&amp;X-Amz-Date=20240606T235006Z&amp;X-Amz-Expires=3600&amp;X-Amz-SignedHeaders=host&amp;X-Amz-Signature=891f4aa4e98825758ae51761cd6f76129bd43934666b4b93ed873a30887717f6",
  "background_cover_image_url": null,
  "first_name": "John",
  "last_name": "Marty",
  "full_name": "John Marty",
  "follower_count": 261172,
  "occupation": "Co-Founder at FF Real Estate",
  "headline": "Professional Social Network Top Voice",
  "summary": "Most people go through life lost, disengaged, and unhappy at work and in their lives - I'm on a mission to solve that.\n\nI spent 10 years as the founder of Axxis Audio, an electronics company that grew to multi-million dollar sales, which I sold in 2012. At that time, I funneled my earnings into the creation of an Internet of Things company, but numerous factors lead to its demise after 2 hard fought years. \n\nAt 31, I was penny-less, had a baby on the way, and had zero job prospects (despite applying to 150 companies). My desperate situation led me to take a job at Best Buy for $12 an hour while reinventing myself through the completion of an MBA at the University of Colorado, and a 6-month software development boot camp. \n\nAfter graduation, I landed at American Express as a Senior Product Manager and then got poached by Amazon in 2017 (because of my Professional Social Network profile). My journey has led to a deep sense of perspective, humility, and purpose that I draw on to help others find clarity, meaning, and happiness in their careers and lives. \n\nCheck out my website for details on my Mindset Reset Podcast, Public Speaking, Consulting, or my free 40 page Professional Social Network guide\n\nhttp://www.johnraphaelmarty.com/\n\nFAQ's\n\nQ: Can you speak at my Company, University, event or podcast?\nA: I'd love to! I've shared my message on the future of employment, breaking into big tech, and my personal story of reinventing myself and discovering my sense of purpose (and how you can too!).\n\n\u2611\ufe0f  YouTube Channel #1 (John Marty) : http://www.youtube.com/c/JohnMarty-uncommon\n\u2611\ufe0f  YouTube Channel #2 (Tech Careers for non-engineers: https://www.youtube.com/channel/UC900gMMPLwRGGXSTW1gdZHA\n\nFUN FACTS:\n\u2611\ufe0f I am an Avid cyclist and runner, and I just started learning to skateboard a half-pipe.\n\u2611\ufe0f Into the Enneagram? - I'm a #3 (The Achiever)\n\nLETS CONNECT:\n\u2611\ufe0f Email: JohnRmarty@gmail.com (don't forget that \"R\"....The other guy gets my emails all the time)",
  "country": "US",
  "country_full_name": "United States of America",
  "city": "Seattle",
  "state": "Washington",
  "experiences": [
    {
      "starts_at": {
        "day": 1,
        "month": 8,
        "year": 2021
      },
      "ends_at": null,
      "company": "FF Real Estate",
      "company_Professional Social Network_profile_url": null,
      "company_facebook_profile_url": null,
      "title": "Co-Founder",
      "description": "Our mission is to provide everyday people seeking financial freedom long before the age of 65 with the ability to contribute to real estate projects that were only accessible in the past for a select few wealthy individuals.",
      "location": null,
      "logo_url": null
    },
    {
      "starts_at": {
        "day": 1,
        "month": 1,
        "year": 2021
      },
      "ends_at": null,
      "company": "Mindset Reset Podcast",
      "company_Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/company/mindset-reset-podcast",
      "company_facebook_profile_url": null,
      "title": "Founder",
      "description": "We dive into the mindsets of the world’s foremost thought leaders and turn them into actionable insights so that others can discover greater happiness, success, and fulfillment.\n\nhttps://podcasts.apple.com/us/podcast/mindset-reset/id1553212607\n\n",
      "location": "Denver, Colorado, United States",
      "logo_url": "https://s3.us-west-000.backblazeb2.com/proxycurl/company/mindset-reset-podcast/profile?X-Amz-Algorithm=AWS4-HMAC-SHA256&amp;X-Amz-Credential=0004d7f56a0400b0000000001%2F20240606%2Fus-west-000%2Fs3%2Faws4_request&amp;X-Amz-Date=20240606T235010Z&amp;X-Amz-Expires=1800&amp;X-Amz-SignedHeaders=host&amp;X-Amz-Signature=5b2cf296069ddbdf408c8ba3a90e835aa1e11e969add4bc778d35565b3d0210f"
    },
    {
      "starts_at": {
        "day": 1,
        "month": 1,
        "year": 2017
      },
      "ends_at": null,
      "company": "YouTube",
      "company_Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/company/youtube",
      "company_facebook_profile_url": null,
      "title": "Youtube Content Creator - \"John Marty\"",
      "description": null,
      "location": "Seattle, Washington",
      "logo_url": "https://s3.us-west-000.backblazeb2.com/proxycurl/company/youtube/profile?X-Amz-Algorithm=AWS4-HMAC-SHA256&amp;X-Amz-Credential=0004d7f56a0400b0000000001%2F20240606%2Fus-west-000%2Fs3%2Faws4_request&amp;X-Amz-Date=20240606T235010Z&amp;X-Amz-Expires=1800&amp;X-Amz-SignedHeaders=host&amp;X-Amz-Signature=4efa71b74c4a62f28680499b957251733dae49c3c88b47f5e66bf0c565dbe577"
    },
    {
      "starts_at": {
        "day": 1,
        "month": 3,
        "year": 2017
      },
      "ends_at": {
        "day": 31,
        "month": 3,
        "year": 2021
      },
      "company": "Amazon",
      "company_Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/company/amazon",
      "company_facebook_profile_url": null,
      "title": "Sr. Manager of Product",
      "description": "I had a mix of roles at Amazon from Sr. PM to Sr. Manager of Product\nTwo years were spent on Marketplace Product Quality and 2 years in New Business Innovation",
      "location": "Greater Seattle Area",
      "logo_url": "https://s3.us-west-000.backblazeb2.com/proxycurl/company/amazon/profile?X-Amz-Algorithm=AWS4-HMAC-SHA256&amp;X-Amz-Credential=0004d7f56a0400b0000000001%2F20240606%2Fus-west-000%2Fs3%2Faws4_request&amp;X-Amz-Date=20240606T235010Z&amp;X-Amz-Expires=1800&amp;X-Amz-SignedHeaders=host&amp;X-Amz-Signature=dc9ae32ae2ffb9eca3e8473931016e0597d44320cd344ac75253f5bc08e35909"
    },
    {
      "starts_at": {
        "day": 1,
        "month": 1,
        "year": 2020
      },
      "ends_at": {
        "day": 31,
        "month": 12,
        "year": 2020
      },
      "company": "Product School",
      "company_Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/company/product-school",
      "company_facebook_profile_url": null,
      "title": "Featured Speaker",
      "description": "Product School is a global leader in Product Management training with a community of over one million product professionals. As a featured speaker, I help inspire the next generation of Product Managers to create innovative products and apply best practices in their work.",
      "location": "Seattle, Washington, United States",
      "logo_url": "https://s3.us-west-000.backblazeb2.com/proxycurl/company/product-school/profile?X-Amz-Algorithm=AWS4-HMAC-SHA256&amp;X-Amz-Credential=0004d7f56a0400b0000000001%2F20240606%2Fus-west-000%2Fs3%2Faws4_request&amp;X-Amz-Date=20240606T235010Z&amp;X-Amz-Expires=1800&amp;X-Amz-SignedHeaders=host&amp;X-Amz-Signature=58c602b953bb097d1315fad88881804dd547ec9db11503d411b76818bfe32457"
    },
    {
      "starts_at": {
        "day": 1,
        "month": 7,
        "year": 2015
      },
      "ends_at": {
        "day": 31,
        "month": 3,
        "year": 2017
      },
      "company": "American Express",
      "company_Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/company/american-express",
      "company_facebook_profile_url": null,
      "title": "Senior Global Product Manager",
      "description": null,
      "location": "Phoenix, Arizona Area",
      "logo_url": "https://s3.us-west-000.backblazeb2.com/proxycurl/company/american-express/profile?X-Amz-Algorithm=AWS4-HMAC-SHA256&amp;X-Amz-Credential=0004d7f56a0400b0000000001%2F20240606%2Fus-west-000%2Fs3%2Faws4_request&amp;X-Amz-Date=20240606T235010Z&amp;X-Amz-Expires=1800&amp;X-Amz-SignedHeaders=host&amp;X-Amz-Signature=9d91d34fe2a75d9d8448066445f83b8d5d4cb265c60bc32d1833629674e4a99e"
    },
    {
      "starts_at": {
        "day": 1,
        "month": 3,
        "year": 2014
      },
      "ends_at": {
        "day": 31,
        "month": 7,
        "year": 2014
      },
      "company": "Mile High Automation, Inc.",
      "company_Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/company/mile-high-automation-inc-",
      "company_facebook_profile_url": null,
      "title": "Sr. Product Manager",
      "description": "Mile High Automation is a Smart Home Technology (Internet of Things) software and hardware development company. Our mission is to flawlessly develop and deliver impeccable software, hardware and system design for the high-end consumer market nationally and internationally. \n\n\u2022  Performed a short term change management engagement to lead a 12 member cross functional team through a major strategy and vision transition\n\u2022  Developed an international supply chain that increased profit margin by 30% on core products\n\u2022  Conceptualized, implemented, and rolled out a CRM that led to a 15% higher month over month close rate; trained sales team on newly created key performance indicators to maximize growth\n\u2022  Developed, implemented and oversaw a training process that scaled to 180+ national subcontractors\n\u2022  Translated user stories into detailed product requirements documents that the software development team used to build new features and functionality \n\u2022  Developed benchmarks for customer service, sales, and traffic conversion to maximize profit \n\n",
      "location": "Denver Colorado",
      "logo_url": "https://s3.us-west-000.backblazeb2.com/proxycurl/company/mile-high-automation-inc-/profile?X-Amz-Algorithm=AWS4-HMAC-SHA256&amp;X-Amz-Credential=0004d7f56a0400b0000000001%2F20240606%2Fus-west-000%2Fs3%2Faws4_request&amp;X-Amz-Date=20240606T235010Z&amp;X-Amz-Expires=1800&amp;X-Amz-SignedHeaders=host&amp;X-Amz-Signature=5b5e7f013f716638b4a016406cbb713bfad09be7f947bc82e6e5e4bdb263b52f"
    },
    {
      "starts_at": {
        "day": 1,
        "month": 2,
        "year": 2012
      },
      "ends_at": {
        "day": 31,
        "month": 5,
        "year": 2014
      },
      "company": "EOS Controls",
      "company_Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/company/eos-controls",
      "company_facebook_profile_url": null,
      "title": "Founder/ Chief Operating Officer",
      "description": "A Smart Home Technology (Internet of Things) software and hardware development company specializing in the mid to high-end condominium market in the United States and South America. \nEOS Controls supports the advancement of affordable and easy to user smart home technology through a network of non-traditional sales channels of architects, designers, and contractors. \n\n\u2022  Coordinated engineering, design, and marketing strategy for the launch of 6 iOS apps\n\u2022  Led a 5 member product team of engineers; conducted daily stand-ups and weekly design review meetings\n\u2022  Managed and prioritized product backlog for development Sprints as well as tested products before release\n\u2022  Effectively placed products through non-traditional distribution channels by identifying and developing relationships with over 100 national and international builders, architects, and designers\n\n",
      "location": "Miami, Florida",
      "logo_url": "https://media.licdn.com/dms/image/C560BAQFV1hvbuwyU-A/company-logo_400_400/0/1631302568978?e=1725494400&amp;v=beta&amp;t=4MsQcLdhnpruHfHkOHi7-TxoX1Ued99DuQloO88A-B4"
    },
    {
      "starts_at": {
        "day": 1,
        "month": 11,
        "year": 2002
      },
      "ends_at": {
        "day": 31,
        "month": 1,
        "year": 2012
      },
      "company": "Axxis Audio",
      "company_Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/company/axxis-audio",
      "company_facebook_profile_url": null,
      "title": "President/Founder",
      "description": "Specializing in Smart Home Technology - Home Automation, Internet of Things\n\n\u2022  Raised $10,000 in investment to develop a home theater and home automation sales and installation business that grew to multi-million dollar sales (sold the company in 2011)\n\u2022  Developed mission-centric training, responsibility, and accountability framework \n\u2022  10 Direct Reports\n\u2022  Responsible for resource planning, scheduling, and project management \n\u2022  Filled the role of HR and developed a team building program for 10 direct reports, that included formal training, personal and professional peer support, mentoring and professional development; resulting in 20% higher retention rate and improved trust and communication\n\u2022  Deployed an ERP Solution in 2007 that unified 5 departments and provided a central reporting and accountability framework for a 23% employees productivity gain\n\u2022  Handled acquisition of 2nd largest competitor Cobalt Automation",
      "location": "Durango Colorado",
      "logo_url": "https://s3.us-west-000.backblazeb2.com/proxycurl/company/axxis-audio/profile?X-Amz-Algorithm=AWS4-HMAC-SHA256&amp;X-Amz-Credential=0004d7f56a0400b0000000001%2F20240606%2Fus-west-000%2Fs3%2Faws4_request&amp;X-Amz-Date=20240606T235010Z&amp;X-Amz-Expires=1800&amp;X-Amz-SignedHeaders=host&amp;X-Amz-Signature=c0d29e3922da1f65178c196a95e788fb83c4f4b594c79110c2980bd9348ca5b3"
    }
  ],
  "education": [
    {
      "starts_at": {
        "day": 1,
        "month": 1,
        "year": 2013
      },
      "ends_at": {
        "day": 31,
        "month": 12,
        "year": 2015
      },
      "field_of_study": "Finance + Economics",
      "degree_name": "Master of Business Administration (MBA)",
      "school": "University of Colorado Denver",
      "school_Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/company/3768/",
      "school_facebook_profile_url": null,
      "description": null,
      "logo_url": "https://media.licdn.com/dms/image/D560BAQE7ljLBZdILiQ/company-logo_400_400/0/1705930128687/university_of_colorado_denver_logo?e=1725494400&amp;v=beta&amp;t=cEEgFJamXX9nmuYHDcbhBoLywf0GqtKWPkTAGuB8Fl0",
      "grade": null,
      "activities_and_societies": null
    },
    {
      "starts_at": {
        "day": 1,
        "month": 1,
        "year": 2015
      },
      "ends_at": {
        "day": 31,
        "month": 12,
        "year": 2015
      },
      "field_of_study": null,
      "degree_name": "School of Software Development",
      "school": "Galvanize Inc",
      "school_Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/company/2652594/",
      "school_facebook_profile_url": null,
      "description": "rails, ruby, rspec, capybara, bootstrap, css, html, api integration, Jquery, Javascript",
      "logo_url": "https://media.licdn.com/dms/image/C560BAQFKNxOZ4X0g8Q/company-logo_400_400/0/1670610916696/galvanize_it_logo?e=1725494400&amp;v=beta&amp;t=6uxc_ZVNnV6mj4QF5H6fdmJwJZmnE5GDnsL6Mq8Fma0",
      "grade": null,
      "activities_and_societies": null
    },
    {
      "starts_at": {
        "day": 1,
        "month": 1,
        "year": 1999
      },
      "ends_at": {
        "day": 31,
        "month": 12,
        "year": 2005
      },
      "field_of_study": "Business",
      "degree_name": "BA",
      "school": "Fort Lewis College",
      "school_Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/company/25652/",
      "school_facebook_profile_url": null,
      "description": null,
      "logo_url": "https://media.licdn.com/dms/image/C4D0BAQGs5hZ3ROf-iw/company-logo_400_400/0/1631300889781?e=1725494400&amp;v=beta&amp;t=-P4FUPih3pEvoCitM_3Vdh7PlZnJWLrkRmVBDe8gp_s",
      "grade": null,
      "activities_and_societies": null
    },
    {
      "starts_at": {
        "day": 1,
        "month": 1,
        "year": 2002
      },
      "ends_at": {
        "day": 31,
        "month": 12,
        "year": 2002
      },
      "field_of_study": null,
      "degree_name": "Japanese Language and Literature",
      "school": "Yamasa Institute Okazaki Japan",
      "school_Professional Social Network_profile_url": null,
      "school_facebook_profile_url": null,
      "description": null,
      "logo_url": null,
      "grade": null,
      "activities_and_societies": null
    },
    {
      "starts_at": {
        "day": 1,
        "month": 1,
        "year": 2000
      },
      "ends_at": {
        "day": 31,
        "month": 12,
        "year": 2000
      },
      "field_of_study": null,
      "degree_name": "Spanish Language and Literature",
      "school": "Inter American University of Puerto Rico, San German Campus",
      "school_Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/company/66268333/",
      "school_facebook_profile_url": null,
      "description": null,
      "logo_url": "https://media.licdn.com/dms/image/C4D0BAQF6s2Y-SXyPww/company-logo_400_400/0/1630550017283/inter_american_university_of_puerto_rico_san_german_campus_logo?e=1725494400&amp;v=beta&amp;t=dkoRnaVEyZqIm6lRmJgN9HCjzK_wvaUMcnYhkxOAJ3g",
      "grade": null,
      "activities_and_societies": null
    },
    {
      "starts_at": {
        "day": 1,
        "month": 1,
        "year": 1996
      },
      "ends_at": {
        "day": 31,
        "month": 12,
        "year": 1999
      },
      "field_of_study": null,
      "degree_name": "High School",
      "school": "Western Reserve Academy",
      "school_Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/company/1411627/",
      "school_facebook_profile_url": null,
      "description": null,
      "logo_url": "https://media.licdn.com/dms/image/C4E0BAQF_vH_WwK1okg/company-logo_400_400/0/1630630589937/western_reserve_academy_logo?e=1725494400&amp;v=beta&amp;t=TkZzKbICvlNv-p7SSHkefe6nhzWssnBKpwL4HwlUVTk",
      "grade": null,
      "activities_and_societies": null
    }
  ],
  "languages": [
    "English",
    "Japanese"
  ],
  "accomplishment_organisations": [],
  "accomplishment_publications": [],
  "accomplishment_honors_awards": [],
  "accomplishment_patents": [],
  "accomplishment_courses": [],
  "accomplishment_projects": [
    {
      "starts_at": {
        "day": 1,
        "month": 3,
        "year": 2015
      },
      "ends_at": null,
      "title": "gMessenger",
      "description": "gMessenger was built using Ruby on Rails, and the Bootstrap HTML, CSS, and JavaScript framework. It uses a Websocket-Rails integration to post a user's message content to the page in real time, with no page refresh required. gMessenger also includes custom authentication with three different permissions levels.",
      "url": "http://gmessenger.herokuapp.com/"
    },
    {
      "starts_at": {
        "day": 1,
        "month": 1,
        "year": 2015
      },
      "ends_at": null,
      "title": "Taskly",
      "description": "A task and project management responsive web app utilizing Ruby on Rails - CSS and HTML",
      "url": "https://hidden-coast-7204.herokuapp.com/"
    }
  ],
  "accomplishment_test_scores": [],
  "volunteer_work": [
    {
      "starts_at": {
        "day": 1,
        "month": 1,
        "year": 2018
      },
      "ends_at": null,
      "title": "Mentor",
      "cause": "Children",
      "company": "IDEO",
      "company_Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/company/164291/",
      "description": "Early Childhood Innovation Prize Mentorship",
      "logo_url": "https://media.licdn.com/dms/image/C560BAQEtno-g_UV4xg/company-logo_400_400/0/1659296502580/ideo_logo?e=1725494400&amp;v=beta&amp;t=VvQ18EdrxhkB69cPrwKWzN1XgsXU8gGXmnliEHDAed8"
    }
  ],
  "certifications": [
    {
      "starts_at": null,
      "ends_at": null,
      "name": "SAFe Agile Framework Practitioner - ( Scrum, XP, and Lean Practices in the SAFe Enterprise)",
      "license_number": null,
      "display_source": null,
      "authority": "Scaled Agile, Inc.",
      "url": null
    },
    {
      "starts_at": null,
      "ends_at": null,
      "name": "SCRUM Alliance Certified Product Owner",
      "license_number": null,
      "display_source": null,
      "authority": "Scrum Alliance",
      "url": null
    }
  ],
  "connections": 6532,
  "people_also_viewed": [
    {
      "link": "https://www.professionalsocialnetwork.com/in/andrew-bowker?miniProfileUrn=urn%3Ali%3Afs_miniProfile%3AACoAABGHIZoBql5pkOLeyY_RpCNfnFeUfuorGGQ",
      "name": "Andrew Bowker",
      "summary": "Product @ IBM - Helping 100 people land PM jobs in tech. Follow me for PM career, product-building tips",
      "location": null
    },
    {
      "link": "https://www.professionalsocialnetwork.com/in/jimsemick?miniProfileUrn=urn%3Ali%3Afs_miniProfile%3AACoAAAB9bh0BzcKRKpgQWxnBEczie9msgpDFWoo",
      "name": "Jim Semick",
      "summary": "Founder | Product Management | Product Coach",
      "location": null
    },
    {
      "link": "https://www.professionalsocialnetwork.com/in/tmamut?miniProfileUrn=urn%3Ali%3Afs_miniProfile%3AACoAAABw2IUBz0tX3bycfGNk3Ly2Nyf4id-jv7Y",
      "name": "Tatyana Mamut",
      "summary": "Tech Builder / Keynote Speaker / Board Member",
      "location": null
    },
    {
      "link": "https://www.professionalsocialnetwork.com/in/leslievenetz?miniProfileUrn=urn%3Ali%3Afs_miniProfile%3AACoAAADPju4B9I-KSyVAlH2xAmiN72f5wsayOtM",
      "name": "Leslie Venetz",
      "summary": "Outbound sales strategies, processes &amp; skill sets for 15-50M SaaS &amp; service orgs that need revenue-generating pipeline | Keynote Speaker | Top Sales Voice \u2728#EarnTheRight to your buyer's time &amp; attention \u2728",
      "location": null
    },
    {
      "link": "https://www.professionalsocialnetwork.com/in/niiato?miniProfileUrn=urn%3Ali%3Afs_miniProfile%3AACoAAADgd8wBcyspO21912pJhffNYN5DCaqogWE",
      "name": "Nii Ato Bentsi-Enchill, MA, Ed.M",
      "summary": "Professional Social Network Top Voice | Holistic Career Coach for Professionals of Color | Resume &amp; Professional Social Network Writing | Job Search &amp; Networking Strategy | Leadership Coaching | Interviews | Professional Branding | Speaker | Panelist",
      "location": null
    },
    {
      "link": "https://www.professionalsocialnetwork.com/in/lizryan?miniProfileUrn=urn%3Ali%3Afs_miniProfile%3AACoAAAAAzXIBy5N_OqvWhSBDOOTB6xaUcRxUcbk",
      "name": "Liz Ryan",
      "summary": "Coach and creator. CEO and Founder, Human Workplace. Author, Reinvention Roadmap; Red-Blooded HR; and Righteous Recruiting. Professional Social Network Top Voice.",
      "location": null
    },
    {
      "link": "https://www.professionalsocialnetwork.com/in/hollylee?miniProfileUrn=urn%3Ali%3Afs_miniProfile%3AACoAAADUnlsBlJ-tFvaIo6jwq9WA1TB4HFGLja0",
      "name": "Holly Lee, SPCC",
      "summary": "Ex-Amazon Interview &amp; Corporate Trainer | Leadership Career Coach | Forbes Coaches Council | \u279b hollylee.co",
      "location": null
    },
    {
      "link": "https://www.professionalsocialnetwork.com/in/nealsivadas?miniProfileUrn=urn%3Ali%3Afs_miniProfile%3AACoAACCDOZIBbO13XOk9oLKUAY4_RGbF4LIfdtI",
      "name": "Neal Sivadas",
      "summary": "Professional Social Network Top Voice for Gen Z | PMM @ TikTok",
      "location": null
    },
    {
      "link": "https://www.professionalsocialnetwork.com/in/xiaoyinqu?miniProfileUrn=urn%3Ali%3Afs_miniProfile%3AACoAAAX4wLoB4rK1OuphxKKtEkZToKc_vUtVrOk",
      "name": "Xiaoyin Qu",
      "summary": "Professional Social Network Top Voice: angel investor",
      "location": null
    },
    {
      "link": "https://www.professionalsocialnetwork.com/in/katariapuneet?miniProfileUrn=urn%3Ali%3Afs_miniProfile%3AACoAAABLrnQBhAnyZvlzNf2svLfn3Cqk2nu7dL0",
      "name": "Puneet Kataria",
      "summary": "\u2b50 Building AI for Outbound Sales | \ud83d\udc49 Founder of SuperRep, an \ud83e\udd16 AI BDR/SDR for Outbound | Professional Social Network Top Voice 2019",
      "location": null
    }
  ],
  "recommendations": [
    "Rebecca Canfield\n\n\n\nJohn Marty is a genius at his craft. He is skilled in the art of making people feel empowered to seek out roles that they are qualified for, ask for salaries that they deserve, and creates a kind of pay it forward lifestyle. John helps you to get to places that you only thought were possible for other people. Anyone that is fortunate enough to learn from John should consider themselves extremely lucky. I know I do. ",
    "Zoe Sanoff\n\n\n\nJohn is so focused on helping guide you through an interview process not just for Amazon but on interviewing in general.  I've generally done well at interviewing, my skills are top notch now.  John is so focused on on his clients and really goes above and beyond.  John is genuine, knowledgeable, well spoken and non-judgemental.  He is so encouraging, so positive and really easy to talk to.  Thank you John!"
  ],
  "activities": [],
  "similarly_named_profiles": [],
  "articles": [],
  "groups": [
    {
      "profile_pic_url": null,
      "name": "Product Management Underground",
      "url": "https://www.professionalsocialnetwork.com/groups/13905812"
    },
    {
      "profile_pic_url": "https://media.licdn.com/dms/image/C4E07AQF2EKTooicxbg/group-logo_image-shrink_400x400/0/1631006354581?e=1718323200&amp;v=beta&amp;t=mTOlccquuYYiwLeOMcUIAselmZcNgnt1kMOY3uwOA7s",
      "name": "Find Your Why (webinar follow-up)",
      "url": "https://www.professionalsocialnetwork.com/groups/12431669"
    }
  ],
  "skills": [
    "Product Development",
    "Start-ups",
    "Marketing",
    "Business Development",
    "Product Marketing",
    "Leadership",
    "Management",
    "New Business Development",
    "Business Strategy",
    "Entrepreneurship",
    "Business Planning",
    "Consumer Electronics",
    "Product Management",
    "Marketing Strategy",
    "Adobe Creative Suite",
    "Budgets",
    "Analysis",
    "Business Start-up",
    "Branding",
    "Strategic Planning",
    "Ruby on Rails",
    "HTML5",
    "CSS",
    "Evangelism",
    "Social Media",
    "Public Speaking"
  ],
  "inferred_salary": {
    "min": null,
    "max": null
  },
  "gender": null,
  "birth_date": null,
  "industry": null,
  "extra": {
    "github_profile_id": null,
    "twitter_profile_id": "johnRmarty",
    "facebook_profile_id": null
  },
  "interests": [],
  "personal_emails": [
    "johnrmarty@gmail.com"
  ],
  "personal_numbers": [
    "+19707495020"
  ]
}
</code></pre>
<p>Additionally, a social media profile URL isn't the only possible method to enrich a person's profile. You could also use our <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#search-api">Search API</a> with a name or company, or use solely an email and beyond.</p>
<p>For all options, <a href="https://nubela.co/proxycurl/docs?ref=nubela.co">it's best to take a look at our documentation</a>.</p>
<p>We also recently <a href="https://www.youtube.com/watch?v=bxf3uKdcCo8&ref=nubela.co">released a new YouTube video</a> where we explain scraping Professional Social Network accounts specifically, both individually and in bulk, and even include the Python code used.</p>
<p>You can see that below:</p>
<figure class="kg-card kg-embed-card"><iframe width="200" height="113" src="https://www.youtube.com/embed/bxf3uKdcCo8?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen="" title="How To Scrape Professional Social Network Profiles at Scale (Includes Python Demo)"></iframe></figure><div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">💡</div><div class="kg-callout-text"><b><strong style="white-space: pre-wrap;">Note:</strong></b> <a href="https://nubela.co/proxycurl/auth/register?ref=nubela.co" rel="noreferrer">You can create your Proxycurl account for free here</a> and try out a person or company enrichment right now. You'll just need to grab your API key after creating your account.</div></div><h3 id="how-to-enrich-companies-with-proxycurl">How to enrich companies with Proxycurl</h3>
<p>The only thing that changes here is the endpoint, which would be the <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#company-api">Company Profile Endpoint</a> instead.</p>
<p>Here's another example using cURL:</p>
<pre><code class="language-bash">curl \
    -G \
    -H "Authorization: Bearer ${YOUR_API_KEY}" \
    'https://nubela.co/proxycurl/api/Professional Social Network/company' \
    --data-urlencode 'url=https://www.professionalsocialnetwork.com/company/google/' \
    --data-urlencode 'resolve_numeric_id=true' \
    --data-urlencode 'categories=include' \
    --data-urlencode 'funding_data=include' \
    --data-urlencode 'exit_data=include' \
    --data-urlencode 'acquisitions=include' \
    --data-urlencode 'extra=include' \
    --data-urlencode 'use_cache=if-recent' \
    --data-urlencode 'fallback_to_cache=on-error'
</code></pre>
<p>As you can see above we're using a Professional Social Network company URL, and it would return something similar to this:</p>
<pre><code class="language-json">{
  "Professional Social Network_internal_id": "1441",
  "description": "A problem isn't truly solved until it's solved for all. Googlers build products that help create opportunities for everyone, whether down the street or across the globe. Bring your insight, imagination and a healthy disregard for the impossible. Bring everything that makes you unique. Together, we can build for everyone. Check out our career opportunities at goo.gle/3DLEokh",
  "website": "https://goo.gle/3DLEokh",
  "industry": "Software Development",
  "company_size": [10001, null],
  "company_size_on_Professional Social Network": 287003,
  "hq": {
    "country": "US",
    "city": "Mountain View",
    "postal_code": "94043",
    "line_1": "1600 Amphitheatre Parkway",
    "is_hq": true,
    "state": "CA"
  },
  "company_type": "PUBLIC_COMPANY",
  "founded_year": null,
  "specialities": [
    "search",
    "ads",
    "mobile",
    "android",
    "online video",
    "apps",
    "machine learning",
    "virtual reality",
    "cloud",
    "hardware",
    "artificial intelligence",
    "youtube",
    "software"
  ],
  "locations": [
    {
      "country": "US",
      "city": "Mountain View",
      "postal_code": "94043",
      "line_1": "1600 Amphitheatre Parkway",
      "is_hq": true,
      "state": "CA"
    },
    {
      "country": "US",
      "city": "New York",
      "postal_code": "10011",
      "line_1": "111 8th Ave",
      "is_hq": false,
      "state": "NY"
    },
    {
      "country": "NL",
      "city": "Amsterdam",
      "postal_code": "1082 MD",
      "line_1": "Claude Debussylaan 34",
      "is_hq": false,
      "state": "North Holland"
    },
    {
      "country": "BR",
      "city": "Sao Paulo",
      "postal_code": "04538-133",
      "line_1": "Avenida Brigadeiro Faria Lima, 3477",
      "is_hq": false,
      "state": "SP"
    },
    {
      "country": "CA",
      "city": "Kitchener",
      "postal_code": "N2H 5G5",
      "line_1": "51 Breithaupt St",
      "is_hq": false,
      "state": "ON"
    },
    {
      "country": "IE",
      "city": "Dublin",
      "postal_code": null,
      "line_1": "Barrow Street",
      "is_hq": false,
      "state": "County Dublin"
    },
    {
      "country": "IN",
      "city": "Bengaluru",
      "postal_code": "560016",
      "line_1": "Old Madras Road",
      "is_hq": false,
      "state": "Karnataka"
    },
    {
      "country": "US",
      "city": "Boulder",
      "postal_code": "80302",
      "line_1": "2590 Pearl St",
      "is_hq": false,
      "state": "CO"
    },
    {
      "country": "US",
      "city": "Seattle",
      "postal_code": "98103",
      "line_1": "601 N 34th St",
      "is_hq": false,
      "state": "WA"
    },
    {
      "country": "AU",
      "city": "Sydney",
      "postal_code": "2009",
      "line_1": "48 Pirrama Rd",
      "is_hq": false,
      "state": "NSW"
    },
    {
      "country": "US",
      "city": "Irvine",
      "postal_code": "92612",
      "line_1": "19510 Jamboree Rd",
      "is_hq": false,
      "state": "CA"
    },
    {
      "country": "US",
      "city": "Chicago",
      "postal_code": "60607",
      "line_1": "320 N Morgan St",
      "is_hq": false,
      "state": "IL"
    },
    {
      "country": "IN",
      "city": "Mumbai",
      "postal_code": "400051",
      "line_1": "3 Bandra Kurla Complex Road",
      "is_hq": false,
      "state": "Maharashtra"
    },
    {
      "country": "PH",
      "city": "Taguig City",
      "postal_code": null,
      "line_1": "5th Ave",
      "is_hq": false,
      "state": "National Capital Region"
    },
    {
      "country": "SG",
      "city": "Singapore",
      "postal_code": "118484",
      "line_1": "3 Pasir Panjang Rd",
      "is_hq": false,
      "state": "Singapore"
    },
    {
      "country": "IN",
      "city": "Hyderabad",
      "postal_code": "500084",
      "line_1": "13",
      "is_hq": false,
      "state": "TS"
    },
    {
      "country": "AU",
      "city": "Melbourne",
      "postal_code": "3000",
      "line_1": "90 Collins St",
      "is_hq": false,
      "state": "VIC"
    },
    {
      "country": "US",
      "city": "San Bruno",
      "postal_code": "94066",
      "line_1": "901 Cherry Ave",
      "is_hq": false,
      "state": "CA"
    },
    {
      "country": "ES",
      "city": "Madrid",
      "postal_code": "28046",
      "line_1": "Plaza Pablo Ruiz Picasso",
      "is_hq": false,
      "state": "Community of Madrid"
    },
    {
      "country": "US",
      "city": "Washington",
      "postal_code": "20001",
      "line_1": "25 Massachusetts Ave NW",
      "is_hq": false,
      "state": "DC"
    },
    {
      "country": "IN",
      "city": "Gurugram",
      "postal_code": "122001",
      "line_1": "15",
      "is_hq": false,
      "state": "HR"
    },
    {
      "country": "CO",
      "city": "Bogota",
      "postal_code": "110221",
      "line_1": "Carrera 11A 94-45",
      "is_hq": false,
      "state": "Bogota, D.C."
    },
    {
      "country": "HK",
      "city": "Wan Chai",
      "postal_code": null,
      "line_1": "2 Matheson St",
      "is_hq": false,
      "state": "Hong Kong"
    },
    {
      "country": "US",
      "city": "Reston",
      "postal_code": "20190",
      "line_1": "1875 Explorer St",
      "is_hq": false,
      "state": "VA"
    },
    {
      "country": "CA",
      "city": "Toronto",
      "postal_code": "M5H 2G4",
      "line_1": "111 Richmond St W",
      "is_hq": false,
      "state": "ON"
    },
    {
      "country": "US",
      "city": "San Francisco",
      "postal_code": "94105",
      "line_1": "345 Spear St",
      "is_hq": false,
      "state": "CA"
    },
    {
      "country": "US",
      "city": "Cambridge",
      "postal_code": "02142",
      "line_1": "355 Main St",
      "is_hq": false,
      "state": "MA"
    },
    {
      "country": "IT",
      "city": "Milan",
      "postal_code": "20124",
      "line_1": "Via Federico Confalonieri, 4",
      "is_hq": false,
      "state": "Lomb."
    },
    {
      "country": "GB",
      "city": "London",
      "postal_code": "WC2H 8AG",
      "line_1": "St Giles High Street",
      "is_hq": false,
      "state": "England"
    },
    {
      "country": "US",
      "city": "Austin",
      "postal_code": "78759",
      "line_1": "9606 N Mopac Expy",
      "is_hq": false,
      "state": "TX"
    },
    {
      "country": "US",
      "city": "Los Angeles",
      "postal_code": "90291",
      "line_1": "340 Main St",
      "is_hq": false,
      "state": "CA"
    },
    {
      "country": "ES",
      "city": "Madrid",
      "postal_code": "28020",
      "line_1": "Plaza Pablo Ruiz Picasso",
      "is_hq": false,
      "state": "Community of Madrid"
    },
    {
      "country": "US",
      "city": "Ann Arbor",
      "postal_code": "48105",
      "line_1": "2300 Traverwood Dr",
      "is_hq": false,
      "state": "MI"
    },
    {
      "country": "CL",
      "city": "Las Condes",
      "postal_code": "7550000",
      "line_1": "Avenida Costanera Sur",
      "is_hq": false,
      "state": "Santiago Metropolitan"
    },
    {
      "country": "US",
      "city": "Atlanta",
      "postal_code": "30309",
      "line_1": "10 10th St NE",
      "is_hq": false,
      "state": "GA"
    },
    {
      "country": "PL",
      "city": "Warsaw",
      "postal_code": "00-125",
      "line_1": "ulica Emilii Plater 53",
      "is_hq": false,
      "state": "MA"
    },
    {
      "country": "IN",
      "city": "Bengaluru",
      "postal_code": "560016",
      "line_1": "3 Swamy Vivekananda Road",
      "is_hq": false,
      "state": "Karnataka"
    },
    {
      "country": "US",
      "city": "Kirkland",
      "postal_code": "98033",
      "line_1": "777 6th St S",
      "is_hq": false,
      "state": "WA"
    },
    {
      "country": "DE",
      "city": "Munich",
      "postal_code": "80636",
      "line_1": "Erika-Mann-Strasse 33",
      "is_hq": false,
      "state": "BY"
    },
    {
      "country": "MX",
      "city": "Miguel Hidalgo",
      "postal_code": "11000",
      "line_1": "Montes Urales",
      "is_hq": false,
      "state": "CDMX"
    },
    {
      "country": "AR",
      "city": "Buenos Aires City",
      "postal_code": "1107",
      "line_1": "Avenida Alicia Moreau de Justo 350",
      "is_hq": false,
      "state": "Buenos Aires Autonomous City"
    },
    {
      "country": "FR",
      "city": "Paris",
      "postal_code": "75009",
      "line_1": "8 Rue de Londres",
      "is_hq": false,
      "state": "IdF"
    },
    {
      "country": "IL",
      "city": "Tel Aviv-Yafo",
      "postal_code": "67891",
      "line_1": "Yigal Allon 98",
      "is_hq": false,
      "state": "Tel Aviv"
    },
    {
      "country": "DE",
      "city": "Berlin",
      "postal_code": "10117",
      "line_1": "Unter den Linden 14",
      "is_hq": false,
      "state": "BE"
    },
    {
      "country": "DE",
      "city": "Hamburg",
      "postal_code": "20354",
      "line_1": "ABC-Strasse 19",
      "is_hq": false,
      "state": "HH"
    },
    {
      "country": "US",
      "city": "Frisco",
      "postal_code": "75034",
      "line_1": "6175 Main St",
      "is_hq": false,
      "state": "TX"
    },
    {
      "country": "CH",
      "city": "Zurich",
      "postal_code": "8002",
      "line_1": "Brandschenkestrasse 110",
      "is_hq": false,
      "state": "ZH"
    },
    {
      "country": "SE",
      "city": "Stockholm",
      "postal_code": "111 22",
      "line_1": "Kungsbron 2",
      "is_hq": false,
      "state": "Stockholm County"
    }
  ],
  "name": "Google",
  "tagline": null,
  "universal_name_id": "google",
  "profile_pic_url": "https://s3.us-west-000.backblazeb2.com/proxycurl/company/google/profile?X-Amz-Algorithm=AWS4-HMAC-SHA256&amp;X-Amz-Credential=0004d7f56a0400b0000000001%2F20240606%2Fus-west-000%2Fs3%2Faws4_request&amp;X-Amz-Date=20240606T235235Z&amp;X-Amz-Expires=3600&amp;X-Amz-SignedHeaders=host&amp;X-Amz-Signature=135a49498fbf1d95ca0ae28d50fad51ab48e622728d2f7822596e8cd66b283a3",
  "background_cover_image_url": "https://s3.us-west-000.backblazeb2.com/proxycurl/company/google/cover?X-Amz-Algorithm=AWS4-HMAC-SHA256&amp;X-Amz-Credential=0004d7f56a0400b0000000001%2F20240606%2Fus-west-000%2Fs3%2Faws4_request&amp;X-Amz-Date=20240606T235235Z&amp;X-Amz-Expires=3600&amp;X-Amz-SignedHeaders=host&amp;X-Amz-Signature=40e17ca830a52bd3db697dbe951779da873c6aa64111602d8f1bdb3d696c3724",
  "search_id": "1441",
  "similar_companies": [
    {
      "name": "YouTube",
      "link": "https://www.professionalsocialnetwork.com/company/youtube",
      "industry": "Software Development",
      "location": null
    },
    {
      "name": "CapitalG",
      "link": "https://www.professionalsocialnetwork.com/company/capitalg",
      "industry": "Venture Capital and Private Equity Principals",
      "location": null
    },
    {
      "name": "Adometry (acquired by Google)",
      "link": "https://www.professionalsocialnetwork.com/company/adometry",
      "industry": "Advertising Services",
      "location": null
    },
    {
      "name": "X, the moonshot factory",
      "link": "https://www.professionalsocialnetwork.com/company/x",
      "industry": "Research Services",
      "location": null
    }
  ],
  "affiliated_companies": [
    {
      "name": "YouTube",
      "link": "https://www.professionalsocialnetwork.com/company/youtube/",
      "industry": "Computer Software",
      "location": null
    },
    {
      "name": "CapitalG",
      "link": "https://www.professionalsocialnetwork.com/company/capitalg/",
      "industry": "Venture Capital &amp; Private Equity",
      "location": null
    },
    {
      "name": "X, the moonshot factory",
      "link": "https://www.professionalsocialnetwork.com/company/x/",
      "industry": "Research",
      "location": null
    },
    {
      "name": "Adometry (acquired by Google)",
      "link": "https://www.professionalsocialnetwork.com/company/adometry/",
      "industry": "Marketing &amp; Advertising",
      "location": null
    },
    {
      "name": "Grow with Google Africa",
      "link": "https://www.professionalsocialnetwork.com/showcase/gwgafrica/",
      "industry": "Computer Software",
      "location": null
    },
    {
      "name": "Google AR &amp; VR",
      "link": "https://www.professionalsocialnetwork.com/showcase/googlearvr/",
      "industry": "Computer Software",
      "location": null
    },
    {
      "name": "Google Marketing Platform",
      "link": "https://www.professionalsocialnetwork.com/showcase/googlemarketingplatform/",
      "industry": "Marketing &amp; Advertising",
      "location": null
    },
    {
      "name": "Android Enterprise",
      "link": "https://www.professionalsocialnetwork.com/showcase/androidenterprise/",
      "industry": "Information Technology &amp; Services",
      "location": null
    },
    {
      "name": "Google Play business community",
      "link": "https://www.professionalsocialnetwork.com/showcase/googleplaybiz/",
      "industry": "Information Technology &amp; Services",
      "location": null
    },
    {
      "name": "Google Developer Groups (GDG)",
      "link": "https://www.professionalsocialnetwork.com/showcase/google-developer-groups/",
      "industry": "Computer Software",
      "location": null
    },
    {
      "name": "Google Research",
      "link": "https://www.professionalsocialnetwork.com/showcase/googleresearch/",
      "industry": "Computer Software",
      "location": null
    },
    {
      "name": "Android",
      "link": "https://www.professionalsocialnetwork.com/showcase/android_by_google/",
      "industry": "Computer Software",
      "location": null
    },
    {
      "name": "Android Developers",
      "link": "https://www.professionalsocialnetwork.com/showcase/androiddev/",
      "industry": "Computer Software",
      "location": null
    },
    {
      "name": "Google Partners",
      "link": "https://www.professionalsocialnetwork.com/showcase/google-partners/",
      "industry": "Marketing &amp; Advertising",
      "location": null
    },
    {
      "name": "Think with Google",
      "link": "https://www.professionalsocialnetwork.com/showcase/think-with-google/",
      "industry": "Marketing &amp; Advertising",
      "location": null
    },
    {
      "name": "Google for Developers",
      "link": "https://www.professionalsocialnetwork.com/showcase/googledevelopers/",
      "industry": "Computer Software",
      "location": null
    },
    {
      "name": "Google Cloud Partners",
      "link": "https://www.professionalsocialnetwork.com/showcase/google-cloud-partners/",
      "industry": "Internet",
      "location": null
    },
    {
      "name": "Google Public Policy",
      "link": "https://www.professionalsocialnetwork.com/showcase/google-public-policy/",
      "industry": "Computer Software",
      "location": null
    },
    {
      "name": "Grow with Google",
      "link": "https://www.professionalsocialnetwork.com/showcase/grow-with-google/",
      "industry": "E-learning",
      "location": null
    },
    {
      "name": "re:Work with Google",
      "link": "https://www.professionalsocialnetwork.com/showcase/rework-with-google/",
      "industry": "Human Resources",
      "location": null
    },
    {
      "name": "Google Health",
      "link": "https://www.professionalsocialnetwork.com/showcase/google-health/",
      "industry": "Computer Software",
      "location": null
    },
    {
      "name": "Google Nest Pro",
      "link": "https://www.professionalsocialnetwork.com/showcase/google-nest/",
      "industry": "Computer Software",
      "location": null
    },
    {
      "name": "Google User Experience Research",
      "link": "https://www.professionalsocialnetwork.com/showcase/google-user-research./",
      "industry": "Computer Software",
      "location": null
    },
    {
      "name": "Google News Initiative",
      "link": "https://www.professionalsocialnetwork.com/showcase/google-news-initiative/",
      "industry": "Online Media",
      "location": null
    },
    {
      "name": "Google Developers North America",
      "link": "https://www.professionalsocialnetwork.com/showcase/google-developers-north-america/",
      "industry": "Computer Software",
      "location": null
    },
    {
      "name": "Google Small Business",
      "link": "https://www.professionalsocialnetwork.com/showcase/google-small-business/",
      "industry": "Internet",
      "location": null
    },
    {
      "name": "Firebase",
      "link": "https://www.professionalsocialnetwork.com/showcase/firebase/",
      "industry": "Computer Software",
      "location": null
    },
    {
      "name": "Google Chrome",
      "link": "https://www.professionalsocialnetwork.com/showcase/google-chrome/",
      "industry": "Computer Software",
      "location": null
    },
    {
      "name": "Google Workspace",
      "link": "https://www.professionalsocialnetwork.com/showcase/googleworkspace/",
      "industry": "Information Technology &amp; Services",
      "location": null
    },
    {
      "name": "Google Pay",
      "link": "https://www.professionalsocialnetwork.com/showcase/google-pay/",
      "industry": "Computer Software",
      "location": null
    },
    {
      "name": "Google for Startups",
      "link": "https://www.professionalsocialnetwork.com/showcase/google-for-startups/",
      "industry": "Computer Software",
      "location": null
    },
    {
      "name": "TensorFlow",
      "link": "https://www.professionalsocialnetwork.com/showcase/tensorflowdev/",
      "industry": "Computer Software",
      "location": null
    },
    {
      "name": "ChromeOS &amp; Chrome Enterprise",
      "link": "https://www.professionalsocialnetwork.com/showcase/chrome-enterprise/",
      "industry": "Information Technology &amp; Services",
      "location": null
    },
    {
      "name": "Google AdMob",
      "link": "https://www.professionalsocialnetwork.com/showcase/googleadmob/",
      "industry": "Marketing &amp; Advertising",
      "location": null
    },
    {
      "name": "Firebase",
      "link": "https://www.professionalsocialnetwork.com/showcase/firebase-hold/",
      "industry": null,
      "location": null
    },
    {
      "name": "Google Ads",
      "link": "https://www.professionalsocialnetwork.com/showcase/google-ads-/",
      "industry": "Marketing &amp; Advertising",
      "location": null
    },
    {
      "name": "Google Ad Manager",
      "link": "https://www.professionalsocialnetwork.com/showcase/google-ad-manager/",
      "industry": "Marketing &amp; Advertising",
      "location": null
    },
    {
      "name": "Chrome for Developers",
      "link": "https://www.professionalsocialnetwork.com/showcase/chrome-for-developers/",
      "industry": "Computer Software",
      "location": null
    },
    {
      "name": "Google Analytics",
      "link": "https://www.professionalsocialnetwork.com/showcase/google-analytics/",
      "industry": "Computer Software",
      "location": null
    },
    {
      "name": "Google Cloud",
      "link": "https://www.professionalsocialnetwork.com/showcase/google-cloud/",
      "industry": "Computer Software",
      "location": null
    },
    {
      "name": "Flutter",
      "link": "https://www.professionalsocialnetwork.com/showcase/flutterdev-hold/",
      "industry": null,
      "location": null
    },
    {
      "name": "Google Maps Platform",
      "link": "https://www.professionalsocialnetwork.com/showcase/googlemapsplatform/",
      "industry": null,
      "location": null
    },
    {
      "name": "Flutter Dev",
      "link": "https://www.professionalsocialnetwork.com/showcase/flutterdevofficial/",
      "industry": "Computer Software",
      "location": null
    },
    {
      "name": "YouTube",
      "link": "https://www.professionalsocialnetwork.com/company/youtube/",
      "industry": "Computer Software",
      "location": null
    },
    {
      "name": "CapitalG",
      "link": "https://www.professionalsocialnetwork.com/company/capitalg/",
      "industry": "Venture Capital &amp; Private Equity",
      "location": null
    },
    {
      "name": "Mineral.ai",
      "link": "https://www.professionalsocialnetwork.com/company/mineral-ai/",
      "industry": "Oil &amp; Energy",
      "location": null
    },
    {
      "name": "X, the moonshot factory",
      "link": "https://www.professionalsocialnetwork.com/company/x/",
      "industry": "Research",
      "location": null
    },
    {
      "name": "Adometry (acquired by Google)",
      "link": "https://www.professionalsocialnetwork.com/company/adometry/",
      "industry": "Marketing &amp; Advertising",
      "location": null
    }
  ],
  "updates": [],
  "follower_count": 33125306,
  "acquisitions": {
    "acquired": [
      {
        "Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/company/siemplify",
        "crunchbase_profile_url": "https://www.crunchbase.com/organization/siemplify",
        "announced_date": {
          "day": 4,
          "month": 1,
          "year": 2022
        },
        "price": 500000000
      },
      {
        "Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/company/mandiant",
        "crunchbase_profile_url": "https://www.crunchbase.com/organization/mandiant",
        "announced_date": {
          "day": 8,
          "month": 3,
          "year": 2022
        },
        "price": 5400000000
      },
      {
        "Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/company/neverware",
        "crunchbase_profile_url": "https://www.crunchbase.com/organization/neverware",
        "announced_date": {
          "day": 15,
          "month": 12,
          "year": 2020
        },
        "price": null
      },
      {
        "Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/company/breezometer",
        "crunchbase_profile_url": "https://www.crunchbase.com/organization/breezometer",
        "announced_date": {
          "day": 20,
          "month": 9,
          "year": 2022
        },
        "price": null
      },
      {
        "Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/company/4794728",
        "crunchbase_profile_url": "https://www.crunchbase.com/organization/appsheet",
        "announced_date": {
          "day": 15,
          "month": 1,
          "year": 2020
        },
        "price": null
      },
      {
        "Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/company/brightbytes",
        "crunchbase_profile_url": "https://www.crunchbase.com/organization/brightbytes",
        "announced_date": {
          "day": 11,
          "month": 10,
          "year": 2022
        },
        "price": null
      },
      {
        "Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/company/socratic",
        "crunchbase_profile_url": "https://www.crunchbase.com/organization/socratic",
        "announced_date": {
          "day": 17,
          "month": 8,
          "year": 2019
        },
        "price": null
      },
      {
        "Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/company/sound-life-sciencesabout",
        "crunchbase_profile_url": "https://www.crunchbase.com/organization/sound-life-sciences",
        "announced_date": {
          "day": 26,
          "month": 10,
          "year": 2022
        },
        "price": null
      },
      {
        "Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/company/tempow",
        "crunchbase_profile_url": "https://www.crunchbase.com/organization/tempow",
        "announced_date": {
          "day": 17,
          "month": 11,
          "year": 2021
        },
        "price": null
      },
      {
        "Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/company/11085522",
        "crunchbase_profile_url": "https://www.crunchbase.com/organization/typhoon-studios",
        "announced_date": {
          "day": 12,
          "month": 12,
          "year": 2019
        },
        "price": null
      },
      {
        "Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/company/dysonics",
        "crunchbase_profile_url": "https://www.crunchbase.com/organization/dysonics",
        "announced_date": {
          "day": 5,
          "month": 4,
          "year": 2021
        },
        "price": null
      },
      {
        "Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/company/elastifile",
        "crunchbase_profile_url": "https://www.crunchbase.com/organization/elastifile",
        "announced_date": {
          "day": 9,
          "month": 7,
          "year": 2019
        },
        "price": null
      },
      {
        "Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/company/equalum",
        "crunchbase_profile_url": "https://www.crunchbase.com/organization/equalum",
        "announced_date": {
          "day": 19,
          "month": 12,
          "year": 2023
        },
        "price": null
      },
      {
        "Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/company/alterxyz",
        "crunchbase_profile_url": "https://www.crunchbase.com/organization/facemoji",
        "announced_date": {
          "day": 28,
          "month": 10,
          "year": 2022
        },
        "price": 100000000
      },
      {
        "Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/company/focalsbynorth",
        "crunchbase_profile_url": "https://www.crunchbase.com/organization/north-8daa",
        "announced_date": {
          "day": 29,
          "month": 6,
          "year": 2020
        },
        "price": 180000000
      },
      {
        "Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/company/phiar",
        "crunchbase_profile_url": "https://www.crunchbase.com/organization/phiar-technologies-inc",
        "announced_date": {
          "day": 20,
          "month": 9,
          "year": 2022
        },
        "price": null
      },
      {
        "Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/company/10337946",
        "crunchbase_profile_url": "https://www.crunchbase.com/organization/photomath-inc-2",
        "announced_date": {
          "day": 27,
          "month": 2,
          "year": 2023
        },
        "price": null
      },
      {
        "Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/company/pointy---find-anything-locally",
        "crunchbase_profile_url": "https://www.crunchbase.com/organization/pointy",
        "announced_date": {
          "day": 14,
          "month": 1,
          "year": 2020
        },
        "price": 163000000
      },
      {
        "Professional Social Network_profile_url": null,
        "crunchbase_profile_url": "https://www.crunchbase.com/organization/provino-technologies",
        "announced_date": {
          "day": 7,
          "month": 5,
          "year": 2021
        },
        "price": null
      },
      {
        "Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/company/raxium",
        "crunchbase_profile_url": "https://www.crunchbase.com/organization/raxium",
        "announced_date": {
          "day": 17,
          "month": 3,
          "year": 2022
        },
        "price": 1000000000
      },
      {
        "Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/company/fitbit",
        "crunchbase_profile_url": "https://www.crunchbase.com/organization/fitbit",
        "announced_date": {
          "day": 1,
          "month": 11,
          "year": 2019
        },
        "price": 2100000000
      }
    ],
    "acquired_by": null
  },
  "exit_data": [
    {
      "Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/company/jd.com",
      "crunchbase_profile_url": "https://www.crunchbase.com/organization/jd-com",
      "name": "JD.com"
    },
    {
      "Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/company/planet-labs",
      "crunchbase_profile_url": "https://www.crunchbase.com/organization/planet-labs",
      "name": "Planet"
    },
    {
      "Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/company/life360",
      "crunchbase_profile_url": "https://www.crunchbase.com/organization/life360",
      "name": "Life360"
    },
    {
      "Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/company/zynga",
      "crunchbase_profile_url": "https://www.crunchbase.com/organization/zynga",
      "name": "Zynga"
    },
    {
      "Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/company/240767",
      "crunchbase_profile_url": "https://www.crunchbase.com/organization/solarcity",
      "name": "SolarCity"
    },
    {
      "Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/company/tesla-motors",
      "crunchbase_profile_url": "https://www.crunchbase.com/organization/tesla-motors",
      "name": "Tesla"
    },
    {
      "Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/company/playsimple-games",
      "crunchbase_profile_url": "https://www.crunchbase.com/organization/playsimple",
      "name": "PlaySimple Games"
    },
    {
      "Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/company/trifacta",
      "crunchbase_profile_url": "https://www.crunchbase.com/organization/trifacta",
      "name": "Trifacta"
    },
    {
      "Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/company/23andme",
      "crunchbase_profile_url": "https://www.crunchbase.com/organization/23andme",
      "name": "23andMe"
    },
    {
      "Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/company/bettylabs",
      "crunchbase_profile_url": "https://www.crunchbase.com/organization/betty-labs",
      "name": "Betty Labs"
    },
    {
      "Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/company/3583",
      "crunchbase_profile_url": "https://www.crunchbase.com/organization/bharti-airtel-ltd",
      "name": "Airtel"
    },
    {
      "Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/company/cloudflare-inc-",
      "crunchbase_profile_url": "https://www.crunchbase.com/organization/cloudflare",
      "name": "Cloudflare"
    },
    {
      "Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/company/adt",
      "crunchbase_profile_url": "https://www.crunchbase.com/organization/adt-security",
      "name": "ADT"
    },
    {
      "Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/company/cme-group",
      "crunchbase_profile_url": "https://www.crunchbase.com/organization/cme-group",
      "name": "CME Group"
    },
    {
      "Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/company/fynd-shopsense",
      "crunchbase_profile_url": "https://www.crunchbase.com/organization/fynd-3",
      "name": "Fynd"
    },
    {
      "Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/company/google",
      "crunchbase_profile_url": "https://www.crunchbase.com/organization/google",
      "name": "Google"
    },
    {
      "Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/company/gotogroup",
      "crunchbase_profile_url": "https://www.crunchbase.com/organization/goto-group",
      "name": "GoTo Group"
    },
    {
      "Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/company/hello-sunshine-official",
      "crunchbase_profile_url": "https://www.crunchbase.com/organization/hello-sunshine",
      "name": "Hello Sunshine"
    },
    {
      "Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/company/instadeep",
      "crunchbase_profile_url": "https://www.crunchbase.com/organization/instadeep",
      "name": "InstaDeep"
    }
  ],
  "extra": {
    "crunchbase_profile_url": "https://www.crunchbase.com/organization/google",
    "ipo_status": "Public",
    "crunchbase_rank": 61,
    "founding_date": {
      "day": 1,
      "month": 1,
      "year": 1998
    },
    "operating_status": "Active",
    "company_type": "For Profit",
    "contact_email": "google@google.com",
    "phone_number": "+16502530000",
    "facebook_id": "Google",
    "twitter_id": "google",
    "number_of_funding_rounds": 3,
    "total_funding_amount": 26100000,
    "stock_symbol": "NASDAQ:GOOGL",
    "ipo_date": {
      "day": 19,
      "month": 8,
      "year": 2004
    },
    "number_of_lead_investors": 3,
    "number_of_investors": 13,
    "total_fund_raised": null,
    "number_of_investments": 276,
    "number_of_lead_investments": 141,
    "number_of_exits": 49,
    "number_of_acquisitions": 263
  },
  "funding_data": [
    {
      "funding_type": "Angel Round",
      "money_raised": 1000000,
      "announced_date": {
        "day": 1,
        "month": 11,
        "year": 1998
      },
      "number_of_investor": 4,
      "investor_list": [
        {
          "Professional Social Network_profile_url": null,
          "name": "Andy Bechtolsheim",
          "type": "person"
        },
        {
          "Professional Social Network_profile_url": null,
          "name": "David Cheriton",
          "type": "person"
        }
      ]
    },
    {
      "funding_type": "Pre Seed Round",
      "money_raised": 100000,
      "announced_date": {
        "day": 1,
        "month": 8,
        "year": 1998
      },
      "number_of_investor": 1,
      "investor_list": []
    },
    {
      "funding_type": "Series A",
      "money_raised": 2575000000,
      "announced_date": {
        "day": 7,
        "month": 6,
        "year": 1999
      },
      "number_of_investor": 94,
      "investor_list": [
        {
          "Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/company/google",
          "name": "Google",
          "type": "organization"
        },
        {
          "Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/company/sequoia",
          "name": "Sequoia Capital",
          "type": "organization"
        },
        {
          "Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/company/signatures-capital",
          "name": "Signatures Capital",
          "type": "organization"
        },
        {
          "Professional Social Network_profile_url": null,
          "name": "Angel Investors LP",
          "type": "organization"
        },
        {
          "Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/company/kleinerperkins",
          "name": "Kleiner Perkins",
          "type": "organization"
        },
        {
          "Professional Social Network_profile_url": null,
          "name": "Arnold Schwarzenegger",
          "type": "person"
        },
        {
          "Professional Social Network_profile_url": null,
          "name": "Henry Kissinger",
          "type": "person"
        },
        {
          "Professional Social Network_profile_url": null,
          "name": "Shaquille O'Neal",
          "type": "person
        },
        {
          "Professional Social Network_profile_url": null,
          "name": "Tiger Woods",
          "type": "person"
        }
        ]
        }
        ],
        "categories": [
          "advertising-6cb6",
          "collaboration",
          "enterprise-software",
          "information-technology-dbca",
          "search-engine-0d39"
        ],
        "customer_list": null
        }
</code></pre>
<p>Of course like pulling person B2B data, there are also alternative ways to pull company data such as our <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#search-api-company-search-endpoint">Company Search Endpoint</a>.</p>
<p>Anyway, now that you know a bit about our two most commonly used API endpoints, I'll carry on:</p>
<h3 id="proxycurl-pros">Proxycurl Pros</h3>
<ul>
<li>Comprehensive data coverage for both individuals and companies</li>
<li>An extensive amount of data is available</li>
<li>Provides job-based data</li>
<li>Provides contact information</li>
<li>Can scrape in real-time</li>
<li>Competitive pricing</li>
<li>Easy integration with existing systems</li>
<li><a href="https://nubela.co/proxycurl/docs?ref=nubela.co">Detailed and well-maintained documentation</a></li>
</ul>
<h3 id="proxycurl-cons">Proxycurl Cons</h3>
<ul>
<li>It may not cover every profile you try depending on the privacy settings of the individual you're trying to enrich</li>
</ul>
<h3 id="proxycurl-pricing">Proxycurl Pricing</h3>
<p>We offer a free trial that provides you with 10 free credits, as well as a pay-as-you-go plan and cheaper subscription plans with longer commitments. For those, our plans start at $49/month, providing higher request limits and additional features. Custom pricing is available for enterprise needs.</p>
<p>If you're interested in creating your account, <a href="https://nubela.co/proxycurl/auth/register?ref=nubela.co">you can do so for free right here</a>. To learn more about our pricing, <a href="https://nubela.co/proxycurl/pricing?ref=nubela.co">click here</a>.</p>
<h3 id="best-for">Best for</h3>
<p>Businesses that need comprehensive and reliable data enrichment.</p>
<h2 id="2-clearbit-now-breeze-intelligence-for-hubspot">2. Clearbit (Now Breeze Intelligence for HubSpot)</h2>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/06/de2.png" class="kg-image" alt="Clearbit's homepage" loading="lazy" width="2909" height="1658"><figcaption><span style="white-space: pre-wrap;">Clearbit's homepage</span></figcaption></figure><p>Recently acquired by HubSpot, Clearbit's API provides insights into companies and individuals, focusing on firmographic and technographic data.</p>
<p>It's particularly useful for B2B marketing and sales teams looking to build complete customer profiles and improve targeting.</p>
<h3 id="clearbitpros">ClearbitPros</h3>
<ul>
<li>Extensive firmographic data</li>
<li>Easy integration</li>
</ul>
<h3 id="clearbit-cons">Clearbit Cons</h3>
<ul>
<li>Common complaints about data accuracy and freshness</li>
<li>You'll have to go through their sales department</li>
<li>Recently purchased by Hubspot (which could be good or bad; depending on how you look at it)</li>
</ul>
<h3 id="clearbit-pricing">Clearbit Pricing</h3>
<p>Unfortunately, Clearbit keeps their pricing locked behind a sales team. Many sources claim the service starts at $99/mo, but with the new acquisition, the pricing may not be relevant now.</p>
<h3 id="best-for">Best for</h3>
<p>B2B marketing and sales teams.</p>
<h2 id="3-zoominfo">3. ZoomInfo</h2>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/06/de3.png" class="kg-image" alt="ZoomInfo's homepage" loading="lazy" width="2901" height="1513"><figcaption><span style="white-space: pre-wrap;">ZoomInfo's homepage</span></figcaption></figure><p>ZoomInfo offers detailed company and contact information, making it a valuable resource for sales and lead generation.</p>
<p>Its API provides access to a vast database of business profiles, helping sales teams target and connect with the right contacts.</p>
<h3 id="zoominfo-pros">ZoomInfo Pros</h3>
<ul>
<li>Extensive database of business contacts</li>
<li>Detailed company profiles</li>
<li>Advanced filtering options</li>
<li>Very good at contact information</li>
</ul>
<h3 id="zoominfo-cons">ZoomInfo Cons</h3>
<ul>
<li>Complex pricing structure</li>
<li>You'll have to go through their sales department</li>
</ul>
<h3 id="zoominfo-pricing">ZoomInfo Pricing</h3>
<p>ZoomInfo offers custom pricing based on usage and specific needs. Sources claim the pricing starts as high as $14,995/year.</p>
<h3 id="best-for">Best for</h3>
<p>Sales teams and lead generation efforts.</p>
<h2 id="4-people-data-labs">4. People Data Labs</h2>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/06/de4-1.png" class="kg-image" alt="People Data Labs' homepage" loading="lazy" width="2000" height="1048"><figcaption><span style="white-space: pre-wrap;">People Data Labs' homepage</span></figcaption></figure><p>People Data Labs’ API allows you to fill in gaps in your customer data using information you already have.</p>
<p>They advertise over 3.1 billion people profiles that can be searched, sourced, and used to augment your existing data.</p>
<p>We actaully have a <a href="https://nubela.co/blog/people-data-labs-reviews/">full review on People Data Labs</a>, so be sure to check that out.</p>
<h3 id="people-data-labs-pros">People Data Labs Pros</h3>
<ul>
<li>Good support</li>
<li>Self-serve experience</li>
</ul>
<h3 id="people-data-labs-cons">People Data Labs Cons</h3>
<ul>
<li>Can be too reliant on data pulled from Professional Social Network</li>
</ul>
<h3 id="people-data-labs-pricing">People Data Labs Pricing</h3>
<p>PDL is free to use for up to 100 requests per month. Their Pro plan starts at $98/month for 350 requests per month plus email support. Their Enterprise plan is custom pricing and allows access to a tailored set of features.</p>
<h3 id="best-for">Best for</h3>
<p>Startups.</p>
<h2 id="5-fullcontact">5. FullContact</h2>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/06/fullcontact.png" class="kg-image" alt="FullContact's homepage" loading="lazy" width="2896" height="1654"><figcaption><span style="white-space: pre-wrap;">FullContact's homepage</span></figcaption></figure><p>FullContact provides an extensive API for enriching contact data with social media profiles, job titles, company information, ID verification, and more.</p>
<p>However, I think it works best for general identity verification and KYC purposes.</p>
<h3 id="fullcontact-pros">FullContact Pros</h3>
<ul>
<li>Extensive contact enrichment capabilities</li>
<li>Easy-to-use API</li>
<li>Strong customer support</li>
</ul>
<h3 id="fullcontact-cons">FullContact Cons</h3>
<ul>
<li>Higher cost for extensive usage</li>
<li>Data accuracy varies</li>
</ul>
<h3 id="fullcontact-pricing">FullContact Pricing</h3>
<p>FullContact offers a free tier that allows 100 enrichments. Their Pro plan starts at $99/month, with custom pricing available for larger needs.</p>
<h3 id="best-for">Best for</h3>
<p>Identity verification and KYC.</p>
<h2 id="6-pipl">6. Pipl</h2>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/06/de6-1.png" class="kg-image" alt="Pipl's homepage" loading="lazy" width="2000" height="1120"><figcaption><span style="white-space: pre-wrap;">Pipl's homepage</span></figcaption></figure><p>Pipl specializes in people data, providing an API that enriches your datasets with personal and professional information from various sources.</p>
<p>Like FullContact, I think it's particularly useful for identity verification and fraud detection.</p>
<h3 id="pipl-pros">Pipl Pros</h3>
<ul>
<li>Comprehensive people data</li>
<li>Strong focus on identity verification</li>
<li>Easy integration</li>
</ul>
<h3 id="pipl-cons">Pipl Cons</h3>
<ul>
<li>Limited business data</li>
<li>Higher cost</li>
<li>High minimum spend</li>
</ul>
<h3 id="pipl-pricing">Pipl Pricing</h3>
<p>Pipl offers custom pricing based on specific needs and usage. Their minimum spend is $500 per month and is all routed through their sales department.</p>
<h3 id="best-for">Best for</h3>
<p>Identity verification and fraud detection.</p>
<h2 id="7-demandbase">7. Demandbase</h2>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/06/de7.png" class="kg-image" alt="Demandbase's homepage" loading="lazy" width="2909" height="1553"><figcaption><span style="white-space: pre-wrap;">Demandbase's homepage</span></figcaption></figure><p>Demandbase offers data enrichment APIs that provide insights into people and companies.</p>
<p>It helps businesses improve their lead scoring, market segmentation, and sales strategies and has millions of data points.</p>
<h3 id="demandbase-pros">Demandbase Pros</h3>
<ul>
<li>Detailed company and executive data</li>
<li>Excellent for market segmentation</li>
<li>Strong integration options</li>
</ul>
<h3 id="demandbase-cons">Demandbase Cons</h3>
<ul>
<li>Data accuracy can vary</li>
<li>Higher cost</li>
</ul>
<h3 id="demandbase-pricing-and-usage-limits">Demandbase Pricing and usage limits</h3>
<p>Demandbase offers custom pricing based on usage and needs. Everything is routed through their sales department.</p>
<p>One thing for sure is that the cost differs depending on your team size. Many sources claim the cost for a team of 200 users, can range from $18,100 to $31,700 annually. For a company with a headcount of 1,000, it can range from $58,500 to $108,600.</p>
<h3 id="best-for">Best for</h3>
<ul>
<li>Market intelligence and lead scoring.</li>
</ul>
<h2 id="8-enrich">8. Enrich</h2>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/06/de8.png" class="kg-image" alt="Enrich's homepage" loading="lazy" width="2000" height="1151"><figcaption><span style="white-space: pre-wrap;">Enrich's homepage</span></figcaption></figure><p>Enrich is a data enrichment API that focuses on enriching people and companies.</p>
<p>It's a newcomer on the block, but it works quite well.</p>
<h3 id="enrich-pros">Enrich Pros</h3>
<ul>
<li>Accurate people and company data</li>
<li>Easy integration</li>
<li>Self-service user experience</li>
</ul>
<h3 id="enrich-cons">Enrich Cons</h3>
<ul>
<li>Higher pricing</li>
</ul>
<h3 id="enrich-pricing">Enrich Pricing</h3>
<p>Enrich offers 25 free monthly credits and then starts at $70 per month after that.</p>
<h3 id="best-for">Best for</h3>
<p>General enrichment.</p>
<h2 id="9-datanyze">9. Datanyze</h2>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/06/de9.png" class="kg-image" alt="datanyze's homepage" loading="lazy" width="2887" height="1070"><figcaption><span style="white-space: pre-wrap;">Datanyze's homepage</span></figcaption></figure><p>Datanyze offers a data enrichment API that primarily focuses on enriching sales prospects with accurate contact information.</p>
<p>This information is of course most valuable for sales departments.</p>
<h3 id="datanyze-pros">Datanyze Pros</h3>
<ul>
<li>Good at contact information</li>
<li>Useful for sales targeting</li>
<li>Easy integration</li>
</ul>
<h3 id="datanyze-cons">Datanyze Cons</h3>
<ul>
<li>Higher cost for extensive usage</li>
<li>Pricing and usage limits</li>
</ul>
<h3 id="datanyze-pricing">Datanyze Pricing</h3>
<p>Datanyze offers a free trial for 90 days with 10 credits per month and plans start out at $29 per month after that.</p>
<h3 id="best-for">Best for</h3>
<p>Sales.</p>
<h2 id="10-lusha">10. Lusha</h2>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/06/Lusha-s-homepage.png" class="kg-image" alt="Lusha's homepage" loading="lazy" width="2000" height="1006"><figcaption><span style="white-space: pre-wrap;">Lusha's homepage</span></figcaption></figure><p>Lusha provides and API that enriches contact data with phone numbers, email addresses, company information, and more</p>
<p>It's particularly useful for sales and marketing teams looking to improve their outreach efforts.</p>
<p>Check out how we created a <a href="https://nubela.co/blog/build-a-lusha-sales-prospecting-clone-with-nextjs-tailwind-proxycurl/">Lusha sales prospecting clone</a>, with NextJS, Tailwind &amp; Proxycurl.</p>
<h3 id="lusha-pros">Lusha Pros</h3>
<ul>
<li>Detailed contact information</li>
<li>Easy integration</li>
<li>Strong customer support</li>
</ul>
<h3 id="lusha-cons">Lusha Cons</h3>
<ul>
<li>Higher cost</li>
<li>Data accuracy can vary</li>
</ul>
<h3 id="lusha-pricing">Lusha Pricing</h3>
<p>For API access, unfortunately, Lusha keeps things locked down behind a sales team. It isn't included in their standard plans, only enterprise.</p>
<h3 id="best-for">Best for</h3>
<p>Sales outreach and marketing teams.</p>
<h2 id="11-data-axle-formerly-infogroup">11. Data Axle (Formerly InfoGroup)</h2>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/06/de11.png" class="kg-image" alt="Data Axle's homepage" loading="lazy" width="2000" height="1141"><figcaption><span style="white-space: pre-wrap;">Data Axle's homepage</span></figcaption></figure><p>Data Axle offers a range of data enrichment APIs that provide detailed business and consumer information.</p>
<p>It helps businesses improve their data quality and gain deeper insights into their customers and prospects.</p>
<h3 id="data-axle-pros">Data Axle Pros</h3>
<ul>
<li>Extensive business and consumer data</li>
<li>Easy integration</li>
<li>Real-time updates</li>
</ul>
<h3 id="data-axle-cons">Data Axle Cons</h3>
<ul>
<li>Data accuracy can vary</li>
</ul>
<h3 id="data-axle-pricing">Data Axle Pricing</h3>
<p>Data Axle offers a free trial and starts at $25 per month.</p>
<h3 id="best-for">Best for</h3>
<p>Business and consumer information.</p>
<h2 id="12-coresignal">12. Coresignal</h2>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/06/de12.png" class="kg-image" alt="Coresignal's homepage" loading="lazy" width="2000" height="945"><figcaption><span style="white-space: pre-wrap;">Coresignal's homepage</span></figcaption></figure><p>Coresignal offers a data enrichment API that provides information on individuals and companies.</p>
<p>It provides a general enrichment experience.</p>
<p>We have a dedicated article on <a href="https://nubela.co/blog/proxycurl-api-vs-coresignal/">Coresignal's Full Review</a> (Comparisons, Features, Pricing), so do check that out.</p>
<h3 id="coresignal-pros">Coresignal Pros</h3>
<ul>
<li>Comprehensive person and company data</li>
<li>Easy integration</li>
</ul>
<h3 id="coresignal-cons">Coresignal Cons</h3>
<ul>
<li>Higher cost</li>
<li>Data accuracy can vary</li>
</ul>
<h3 id="coresignal-pricing">Coresignal Pricing</h3>
<p>Coresignal has a 14-day free trial then starts at $49 per month.</p>
<h3 id="best-for">Best for</h3>
<p>General data enrichment.</p>
<h2 id="13-snovio">13. Snov.io</h2>
<figure class="kg-card kg-image-card"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/06/de13-2.png" class="kg-image" alt="" loading="lazy" width="2000" height="899"></figure><p>Snov.io offers a data enrichment API that provides information on companies and contacts. It's definitely sales-focused.</p>
<h3 id="snovio-pros">Snov.io Pros</h3>
<ul>
<li>Detailed lead information</li>
<li>Easy integration</li>
<li>Good user experience</li>
</ul>
<h3 id="snovio-cons">Snov.io Cons</h3>
<ul>
<li>Higher cost for extensive usage</li>
<li>Data accuracy can vary</li>
</ul>
<h3 id="snovio-pricing">Snov.io Pricing</h3>
<p>Snov.io offers a free tier with limited requests. Paid plans start at $30 per month.</p>
<h3 id="best-for">Best for</h3>
<p>Lead generation and outreach efforts.</p>
<h2 id="14-leadgenius">14. LeadGenius</h2>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/06/de14.png" class="kg-image" alt="LeadGenius' homepage" loading="lazy" width="2000" height="1045"><figcaption><span style="white-space: pre-wrap;">LeadGenius' homepage</span></figcaption></figure><p>LeadGenius provides up-to-date business information through its data enrichment API.</p>
<h3 id="leadgenius-pros">LeadGenius Pros</h3>
<ul>
<li>Extensive business data</li>
<li>Easy to integrate</li>
</ul>
<h3 id="leadgenius-cons">LeadGenius Cons</h3>
<ul>
<li>High cost</li>
<li>Data accuracy can vary</li>
</ul>
<h3 id="leadgenius-pricing">LeadGenius Pricing</h3>
<p>LeadGenius offers custom pricing based on usage and needs. A free trial is available, but they mostly route you through their sales department. LeadGenius is one of the more expensive options on this list.</p>
<h3 id="best-for">Best for</h3>
<p>General enrichment.</p>
<h2 id="15-mattermark">15. Mattermark</h2>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/06/de15.png" class="kg-image" alt="Mattermark's homepage" loading="lazy" width="2000" height="1086"><figcaption><span style="white-space: pre-wrap;">Mattermark's homepage</span></figcaption></figure><p>Mattermark offers a data enrichment API that provides information on companies and contact information.</p>
<h3 id="mattermark-pros">Mattermark Pros</h3>
<ul>
<li>Detailed company and contact data</li>
<li>Easy integration</li>
</ul>
<h3 id="mattermark-cons">Mattermark Cons</h3>
<ul>
<li>Higher cost</li>
<li>Limited data available</li>
</ul>
<h3 id="mattermark-pricing">Mattermark Pricing</h3>
<p>Mattermark offers a free trial then starts at $99 per month</p>
<h3 id="best-for">Best for</h3>
<p>Enriching companies, or finding contact information.</p>
<h2 id="16-crunchbase">16. Crunchbase</h2>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/06/de16.png" class="kg-image" alt="Crunchbase's homepage" loading="lazy" width="2894" height="1647"><figcaption><span style="white-space: pre-wrap;">Crunchbase's homepage</span></figcaption></figure><p>Crunchbase provides a data enrichment API that offers information on startups and companies.</p>
<p>Here's a <a href="https://nubela.co/blog/crunchbase-api-guide/">guide on how to harness the power of Crunchbase API</a>.</p>
<h3 id="crunchbase-pros">Crunchbase Pros</h3>
<ul>
<li>Extensive information on companies and startups</li>
<li>Useful for market research</li>
<li>Easy integration</li>
</ul>
<h3 id="crunchbase-cons">Crunchbase Cons</h3>
<ul>
<li>Higher cost</li>
</ul>
<h3 id="crunchbase-pricing">Crunchbase Pricing</h3>
<p>While the Crunchbase API works quite well, it requires an Enterprise plan, which is routed through the sales department and can vary in pricing.</p>
<h3 id="best-for">Best for</h3>
<p>Company data, funding data, and market trends.</p>
<h2 id="17-hg-insights">17. HG Insights</h2>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/06/de17.png" class="kg-image" alt="HG Insights' homepage" loading="lazy" width="2872" height="1661"><figcaption><span style="white-space: pre-wrap;">HG Insights' homepage</span></figcaption></figure><p>HG Insights offers a data enrichment API that provides technographic data, helping businesses understand the technology landscape of their prospects and customers.</p>
<h3 id="hg-insights-pros">HG Insights Pros</h3>
<ul>
<li>Extensive technographic data</li>
<li>Useful for sales targeting</li>
<li>Easy integration</li>
</ul>
<h3 id="hg-insights-cons">HG Insights Cons</h3>
<ul>
<li>Higher cost</li>
</ul>
<h3 id="hg-insights-pricing">HG Insights Pricing</h3>
<p>HG Insights offers custom pricing based on usage and needs, and everything is routed through their sales department. However, Vendr claims the price can reach up to around $350,000 at the highest.</p>
<h3 id="best-for">Best for</h3>
<p>Technographic insights.</p>
<h2 id="18-leadspace">18. Leadspace</h2>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/06/de18.png" class="kg-image" alt="Leadspace's homepage" loading="lazy" width="2000" height="1140"><figcaption><span style="white-space: pre-wrap;">Leadspace's homepage</span></figcaption></figure><p>Leadspace provides a data enrichment API that offers detailed information on companies and contacts.</p>
<h3 id="leadspace-pros">Leadspace Pros</h3>
<ul>
<li>Comprehensive data on companies and contacts</li>
<li>Real-time updates</li>
<li>Easy integration</li>
</ul>
<h3 id="leadspace-cons">Leadspace Cons</h3>
<ul>
<li>Higher cost</li>
<li>Data accuracy can vary</li>
</ul>
<h3 id="leadspace-pricing">Leadspace Pricing</h3>
<p>Leadspace offers custom pricing based on usage and needs, and everything is routed through their sales department.</p>
<h3 id="best-for">Best for</h3>
<p>General enrichment, CRM enrichment.</p>
<h2 id="19-melissa">19. Melissa</h2>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/06/de19.png" class="kg-image" alt="Melissa's homepage" loading="lazy" width="2000" height="1145"><figcaption><span style="white-space: pre-wrap;">Melissa's homepage</span></figcaption></figure><p>Melissa provides a data enrichment API that offers business and consumer information.</p>
<p>It helps businesses improve their data quality and ensure data accuracy through verification processes.</p>
<h3 id="melissa-pros">Melissa Pros</h3>
<ul>
<li>Strong focus on data quality and verification</li>
<li>Comprehensive data coverage</li>
<li>Easy integration</li>
</ul>
<h3 id="melissa-cons">Melissa Cons</h3>
<ul>
<li>Higher cost</li>
<li>Limited contact data</li>
</ul>
<h3 id="melissa-pricing">Melissa Pricing</h3>
<p>Melissa uses a credit-based system and offers 1,000 credits upon creating your account and a pay-as-you-go system thereafter depending on your needs.</p>
<h3 id="best-for">Best for</h3>
<p>Data quality and verification.</p>
<h2 id="the-bottomline">The Bottomline</h2>
<p>Data enrichment APIs are invaluable tools for businesses looking to enhance their datasets with rich, external information and fill in the data gaps that exist.</p>
<p>Solutions like <a href="https://proxycurl.com/?ref=nubela.co">Proxycurl</a> and the other leading data enrichment APIs mentioned above allow businesses to gain a deeper level of insight, improve decision-making, and drive better outcomes.</p>
<p>Anywhere from recruiting, to marketing and sales, or beyond. Good B2B data can help all of these things.</p>
<p>That said, if I've piqued your interest at all throughout this article, <a href="https://nubela.co/proxycurl/auth/register?ref=nubela.co">then you can create your Proxycurl account for free right here</a>.</p>
<p>Thanks for reading!</p>
 ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ We are serious about purchasing credits. However, I need more trial credits for evaluation. Are you able to provide us with more trial credits? ]]></title>
        <description><![CDATA[ Do you have a budget of $1.99 for testing the service? If so, are you able to head over to the dashboard and make a top-up? $1.99 will yield you 100 credits, which I believe should be plenty for you to evaluate the service.

In our early days, ]]></description>
        <link>https://nubela.co/blog/we-are-serious-about-purchasing-credits-however-i-need-more-trial-credits-for-evaluation-are-you-able-to-provide-us-with-more-trial-credits/</link>
        <guid isPermaLink="false">609a5989418c82000107dc00</guid>
        <category><![CDATA[ proxycurl ]]></category>
        <dc:creator><![CDATA[ Steven Goh | CEO ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2019/05/square.jpg"/>
        <pubDate>Sat, 01 Jun 2024 18:17:00 +0800</pubDate>
        <media:content url="" medium="image"/>
        <content:encoded><![CDATA[ <p>Do you have a budget of <code>$1.99</code> for testing the service? If so, are you able to head over to the dashboard and make a top-up? <code>$1.99</code> will yield you 100 credits, which I believe should be plenty for you to evaluate the service.</p><p>In our early days, we offered free trial credits to everyone that asked. It turned out that almost everyone that we gave additional free "evaluation" credits never followed up with a purchase.</p><p>On the flip side, serious (paying) customers have never hesitated in making small top-ups for evaluation.</p><p>We do not provide trial credits beyond the first <code>10</code> credits that are added into your account when you first register an account.</p> ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ Announcing Fresh Facebook and X/Twitter Profile Data in Person Profile Endpoint ]]></title>
        <description><![CDATA[ In the heels of our recent announcement of the all-new Customer API, I am happy to share that we will now return fresh profile data for Facebook or Twitter/X profiles via the Person Profile Endpoint (provided that the use_cache=if-recent parameter is included).


Here is a quick demo ]]></description>
        <link>https://nubela.co/blog/announcing-fresh-facebook-and-x-twitter-profile-data-in-person-profile-endpoint/</link>
        <guid isPermaLink="false">664b0c2f0f752400017787e8</guid>
        <category><![CDATA[ proxycurl ]]></category>
        <dc:creator><![CDATA[ Steven Goh | CEO ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2019/05/square.jpg"/>
        <pubDate>Mon, 20 May 2024 16:52:31 +0800</pubDate>
        <media:content url="" medium="image"/>
        <content:encoded><![CDATA[ <p>In the heels of our <a href="https://nubela.co/blog/introducing-proxycurls-customer-api/">recent announcement of the all-new Customer API</a>, I am happy to share that we will now return <strong>fresh</strong> profile data for Facebook or Twitter/X profiles via the <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#people-api-person-profile-endpoint">Person Profile Endpoint</a> (provided that the <a href="https://nubela.co/blog/how-fresh-are-profiles-returned-by-proxycurl-api/"><code>use_cache=if-recent</code> parameter is included</a>).</p>
<p>Here is a quick demo of myself enriching our Twitter/X profile of <code>https://twitter.com/proxycurl</code>:</p>
<pre><code class="language-bash">$ curl --location 'https://nubela.co/proxycurl/api/v2/Professional Social Network?twitter_profile_url=https%3A%2F%2Ftwitter.com%2Fproxycurl&amp;use_cache=if-recent' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer &lt;API_KEY&gt;'
</code></pre>
<p>Here is the profile data:</p>
<pre><code class="language-json">{
    "public_identifier": "https://www.twitter.com/in/proxycurl",
    "profile_pic_url": "https://pbs.twimg.com/profile_images/1394135315959353345/y4KnR6HH_normal.jpg",
    "background_cover_image_url": "https://pbs.twimg.com/profile_banners/1390489918120488960/1679300989",
    "first_name": "Proxycurl",
    "last_name": null,
    "full_name": "Proxycurl",
    "follower_count": 139,
    "occupation": null,
    "headline": null,
    "summary": "Proxycurl is a B2B enrichment API to fetch fresh and rich data on People and Companies 🚀",
    "country": null,
    "country_full_name": null,
    "city": "",
    "state": null,
    "experiences": null,
    "education": null,
    "languages": null,
    "accomplishment_organisations": null,
    "accomplishment_publications": null,
    "accomplishment_honors_awards": null,
    "accomplishment_patents": null,
    "accomplishment_courses": null,
    "accomplishment_projects": null,
    "accomplishment_test_scores": null,
    "volunteer_work": null,
    "certifications": null,
    "connections": null,
    "people_also_viewed": [
        {
            "link": "https://www.twitter.com/in/RuangHealing",
            "name": "Ruang Healing",
            "summary": null,
            "location": null
        },
        {
            "link": "https://www.twitter.com/in/ReceinAja",
            "name": "Recein Aja",
            "summary": "Apa aja ada. | kerjasama WA 📩 https://t.co/jQCywcTUTo | Submit DM",
            "location": "Indonesia"
        }, ... // truncated
    ],
    "recommendations": null,
    "activities": null,
    "similarly_named_profiles": null,
    "articles": null,
    "groups": null,
    "skills": null,
    "inferred_salary": null,
    "gender": null,
    "birth_date": null,
    "industry": null,
    "extra": null,
    "interests": [],
    "personal_emails": [],
    "personal_numbers": []
}
</code></pre>
<h2 id="what-is-different">What is different?</h2>
<p>We first announced support for a user to <a href="https://nubela.co/blog/profile-enrichment-via-facebook-twitter-comes-to-proxycurl/">provide for a <code>facebook_profile_url</code> or a <code>twitter_profile_url</code> input in the Person Profile Endpoint in August 2023</a>. Until this change, what we did was that when a Facebook or Twitter/X profile URL is provided, we tried to match it to a corresponding Professional Social Network member profile, and then returned profile data for that Professional Social Network profile.</p>
<p>The problem was that:</p>
<ul>
<li>not everyone on Twitter/X/Facebook has a Professional Social Network profile</li>
<li>we were not able to match a lot of Twitter/X/Facebook profiles to their Professional Social Network profiles</li>
</ul>
<p>For these cases for which we were not able to match a Professional Social Network profile, we had to return <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#proxycurl-overview-errors">an error of 404</a> -- which was just not good user experience.</p>
<hr>
<p>With this update, we will now be able to <strong>enrich all profiles with fresh publicly available data</strong> even if we are not able to match a Twitter/X/Facebook profile to a Professional Social Network profile.</p>
<h2 id="give-it-a-spin">Give it a spin!</h2>
<p>Throw in your personal Facebook or Twitter/X profile and see how our <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#people-api-person-profile-endpoint">Person Profile Endpoint</a> handles it! Do not be surprised if we return more data than what you have publicly available because we do mix and match data across sources.</p>
<p>If you have any questions at all, send us an email at <a href="mailto:hello@nubela.co">hello@nubela.co</a>!</p>
 ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ How to Automate Cold Calling Lead Generation ]]></title>
        <description><![CDATA[ Learn how to programmatically find prospects, and enrich your existing prospects with accurate contact information and more. ]]></description>
        <link>https://nubela.co/blog/automate-cold-calling-lead-generation/</link>
        <guid isPermaLink="false">6615c353dbfa05000105384b</guid>
        <category><![CDATA[ cold calling ]]></category>
        <dc:creator><![CDATA[ Colton Randolph | Technical Writer ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2023/08/cr.jpg"/>
        <pubDate>Mon, 06 May 2024 17:37:00 +0800</pubDate>
        <media:content url="" medium="image"/>
        <content:encoded><![CDATA[ <p>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.</p>
<p>Manually sourcing contact information for your prospects is not only time-consuming but also often results in outdated or incorrect data.</p>
<p>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.</p>
<p>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.</p>
<p>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.</p>
<p>The solution? Programmatic lead generation via API.</p>
<h2 id="what-is-an-api-and-how-can-it-help-with-cold-calling">What is an API and how can it help with cold calling?</h2>
<p>An API, or Application Programming Interface, is a set of protocols and tools that allow different software applications to communicate with each other.</p>
<p>With an API, you can automate the entire process of finding, enriching, and updating your prospects.</p>
<p>Imagine being able to automatically <a href="https://nubela.co/blog/crm-data-enrichment-the-easiest-way-to-increase-your-sales-conversion-rates/">feed fresh leads directly into your CRM</a>, enrich your existing database with up-to-date phone numbers, or trigger personalized outreach based on real-time data changes, and beyond.</p>
<p>With an API, all of this is possible.</p>
<h2 id="but-not-just-any-api-works">But not just any API works</h2>
<p>You need a B2B enrichment API. And not just any B2B enrichment API will give you fresh quality data for a cost-effective price.</p>
<p>That's where <a href="https://proxycurl.com/?ref=nubela.co">Proxycurl</a> comes in.</p>
<p>We've already gone through the hassle of scraping a massive amount of B2B data and matching it up to identifiers, such as Professional Social Network profiles, and we offer this data through a REST API. With it, you can make <code>HTTP</code> requests to retrieve specific data points, such as a prospect's direct phone number, email address, job title, company information, and more.</p>
<p>You can also use our API to <a href="https://nubela.co/blog/the-definitive-guide-to-executive-searches-automatically-find-qualified-candidates/">search for prospects based on specific criteria</a>, such as industry, location, job title, or beyond.</p>
<p>Let me explain how:</p>
<h2 id="programmatically-enrich-your-existing-prospects-with-contact-information">Programmatically enrich your existing prospects with contact information</h2>
<p>For starters, with our <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#contact-api-personal-contact-number-lookup-endpoint">Personal Contact Number Lookup Endpoint</a>, which is part of our <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#contact-api">Contact API</a>, you can enrich social media profiles (Professional Social Network, X, Facebook) with their respective personal phone numbers.</p>
<p>No more guessing games or leaving voicemails that never get returned--just a direct line to the people you need to talk to.</p>
<p>There are several ways to query our API (any programming language of your choice), but one of the easiest ways is to use a simple <a href="https://curl.se/?ref=nubela.co">cURL</a> <code>GET</code> command such as follows:</p>
<pre><code class="language-python">curl \
    -G \
    -H "Authorization: Bearer Your_API_Key_Here" \
    'https://nubela.co/proxycurl/api/contact-api/personal-contact' \
    --data-urlencode 'Professional Social Network_profile_url=https://professionalsocialnetwork.com/in/elon-musk' \
    --data-urlencode 'page_size=0'
</code></pre>
<p>cURL can be easily installed (and may already be depending on your operating system) and used on macOS, Linux, and Windows.</p>
<p>After cURL made an HTTP <code>GET</code> request to our Personal Contact Number Lookup Endpoint, it then returned a phone number:</p>
<pre><code class="language-python">{
    "numbers": [
        "+1123123123"
    ]
}
</code></pre>
<p>You could do many, or even thousands of profiles at the same time. ChatGPT, some simple Python, and a <code>CSV</code> file could accomplish it for you.</p>
<p>Not bad, right? It didn't take being a rocket scientist either.</p>
<div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">💡</div><div class="kg-callout-text"><b><strong style="white-space: pre-wrap;">Note: </strong></b>Want to test this yourself? <a href="https://nubela.co/proxycurl/auth/register?ref=nubela.co" rel="noreferrer">You can create your Proxycurl account for free right here</a> and grab your key from the dashboard. </div></div><h2 id="we-can-also-help-with-finding-interesting-prospects">We can also help with finding interesting prospects</h2>
<p>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.</p>
<p>Namely, our <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#search-api-person-search-endpoint">Person Search Endpoint</a> will help here.</p>
<p>The Person Search Endpoint allows you to search through our entire dataset of hundreds of millions of profiles (<a href="https://nubela.co/proxycurl/linkdb?ref=nubela.co">LinkDB</a>) and filter with several data points, such as:</p>
<ul>
<li>Job role</li>
<li>Education</li>
<li>Current company</li>
<li>Country, city</li>
<li>Skills</li>
<li>And beyond</li>
</ul>
<p>Using cURL again, let's say we're looking to target HR tech companies:</p>
<pre><code class="language-python">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' 
</code></pre>
<p>The above query would search our massive dataset and find you any matching prospects that fit your search criteria, returning the results like follows:</p>
<pre><code class="language-python">{"results": [{"Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/in/fox-boswell-65874874", "profile": null, "last_updated": null}, {"Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/in/alice-jiaqi-wang-601777b4", "profile": null, "last_updated": null}, {"Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/in/angie-hughes-1bb661b8", "profile": null, "last_updated": null}, {"Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/in/ir-bistok-r-s-nadeak-829588107", "profile": null, "last_updated": null}, {"Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/in/devon-edmisten-02001468", "profile": null, "last_updated": null}, {"Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/in/geet-matharoo", "profile": null, "last_updated": null}, {"Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/in/darenwardatgluereply", "profile": null, "last_updated": null}
</code></pre>
<p>And continuing on, full of Professional Social Network profile URLs, which you could then enrich with contact information like phone numbers from there using our respective Personal Contact Number Lookup Endpoint above.</p>
<p>Additionally, there are many different search parameters you can use with our Person Search Endpoint.</p>
<p>Such as enabling enrichment by using <code>enrich_profiles=enrich</code> which would instead of just returning you Professional Social Network profile URLs, also return you a structured JSON result back of their Professional Social Network profile such as this:</p>
<pre><code class="language-json">{"results": [{"Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/in/hemasri-nagaraj-923a56a3", "profile": {"public_identifier": "hemasri-nagaraj-923a56a3", "profile_pic_url": null, "background_cover_image_url": null, "first_name": "Hemasri", "last_name": "Nagaraj", "full_name": "Hemasri Nagaraj", "follower_count": null, "occupation": "Principal Consultant", "headline": null, "summary": "Associate Consultant - Talent Acquisition at AVTAR Career Creators", "country": "US", "country_full_name": null, "city": null, "state": null, "experiences": [{"starts_at": null, "ends_at": null, "company": null, "company_Professional Social Network_profile_url": null, "company_facebook_profile_url": null, "title": "Principal Consultant", "description": null, "location": null, "logo_url": null}, {"starts_at": {"day": 1, "month": 6, "year": 2017}, "ends_at": null, "company": "Avtar Career Creators", "company_Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/company/avtar-career-creators", "company_facebook_profile_url": null, "title": "Associate Consultant - Talent Acquisition At Avtar Career Creators", "description": null, "location": "India", "logo_url": null}, {"starts_at": {"day": 1, "month": 12, "year": 2015}, "ends_at": {"day": 1, "month": 5, "year": 2017}, "company": "Avtar Career Creators", "company_Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/company/avtar-career-creators", "company_facebook_profile_url": null, "title": "Junior Consultant - Retailing, Insurance, Ites Practice, Banking, Bpo", "description": "Experience in handling End to End Recruitment for BPO, ITES, IT, Retail, Insurance, Banking, Manufacturing, FMCG industry", "location": "India", "logo_url": null}, {"starts_at": {"day": 1, "month": 12, "year": 2013}, "ends_at": {"day": 1, "month": 12, "year": 2015}, "company": "Crossdomain", "company_Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/company/crossdomain", "company_facebook_profile_url": null, "title": "Process Associate", "description": null, "location": "Bangalore, Karnataka, India", "logo_url": null}], "education": [{"starts_at": null, "ends_at": null, "field_of_study": null, "degree_name": "Bachelor of Commerce, Bachelors", "school": null, "school_Professional Social Network_profile_url": null, "school_facebook_profile_url": null, "description": null, "logo_url": null, "grade": null, "activities_and_societies": null}, {"starts_at": {"day": 1, "month": 1, "year": 2016}, "ends_at": {"day": 1, "month": 1, "year": 2016}, "field_of_study": null, "degree_name": "Master of Business Administration, Masters", "school": "Academy of Management Studies", "school_Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/school/academy-of-management-studies", "school_facebook_profile_url": null, "description": null, "logo_url": null, "grade": null, "activities_and_societies": null}], "languages": [], "accomplishment_organisations": [], "accomplishment_publications": [], "accomplishment_honors_awards": [], "accomplishment_patents": [], "accomplishment_courses": [], "accomplishment_projects": [], "accomplishment_test_scores": [], "volunteer_work": [], "certifications": [], "connections": 500, "people_also_viewed": [], "recommendations": [], "activities": [], "similarly_named_profiles": [], "articles": [], "groups": [], "skills": []}, "last_updated": "1970-01-01T00:00:00"}, {"Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/in/naman-kaur-573ba05a", "profile": {"public_identifier": "naman-kaur-573ba05a", "profile_pic_url": null, "background_cover_image_url": null, "first_name": "Naman", "last_name": "Kaur", "full_name": "Naman Kaur", "follower_count": null, "occupation": "Human Resources Recruiter at Elite Hr Practices", "headline": null, "summary": "IT Recruiter Elite HR Practices Oct 2012 \u2013 Till Date , New Delhi 1. Handling IT Requirement. 2. Understanding the requirement 3. Generating the candidates using various sources through job portels, references, in Database. 4. Screening &amp; Short listing the resumes according the client requirement &amp; requested skills. 5. Primarily conducting the telephonic interview (Check it out their communication skills, project experience, cost, Notice period, Attitude &amp; other related Factors) 6. Coordinating the end to end interview process. 7. Coordinating with my team lead getting the feedback regularly. 8. Maintaining the Database making the new additions regularly. 9 Closing the Positions 10.Client Handling, as a SPOC of different companies.", "country": "US", "country_full_name": null, "city": null, "state": null, "experiences": [{"starts_at": null, "ends_at": null, "company": "Elite Hr Practices", "company_Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/company/elite-hr-practices", "company_facebook_profile_url": null, "title": "Human Resources Recruiter", "description": null, "location": "Irvine, California, United States", "logo_url": null}], "education": [], "languages": [], "accomplishment_organisations": [], "accomplishment_publications": [], "accomplishment_honors_awards": [], "accomplishment_patents": [], "accomplishment_courses": [], "accomplishment_projects": [], "accomplishment_test_scores": [], "volunteer_work": [], "certifications": [], "connections": 500, "people_also_viewed": [], "recommendations": [], "activities": [], "similarly_named_profiles": [], "articles": [], "groups": [], "skills": []}, "last_updated": "1970-01-01T00:00:00"}, {"Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/in/patty-woolcock-ba1b47", "profile": null, "last_updated": null}
</code></pre>
<p>The profile example above containing <code>"occupation": "Human Resources Recruiter at Elite Hr Practices"</code> as a key data point, of course.</p>
<p>You can see all of the possibilities in terms of additional parameters available with our Person Search Endpoint on our documentation <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#search-api-person-search-endpoint">here</a>.</p>
<p>But finding the right prospects and their respective phone numbers is just the first step in cold calling.</p>
<p>To really maximize the results of your cold calling, you'll want to utilize the rich data available through our API to personalize your cold calling outreach.</p>
<div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">💡</div><div class="kg-callout-text"><b><strong style="white-space: pre-wrap;">Note: </strong></b>If you're interested in a no-code option that's capable of everything mentioned in this article (contact enrichment, search, etc), <a href="https://sapiengraph.com/?utm_campaign=own_platforms&utm_source=proxycurl_website&utm_medium=platforms&utm_content=article_link" rel="noreferrer">check out Sapiengraph</a>, our Google Sheets extension that allows you to pull fresh B2B data directly into a spreadsheet. </div></div><h2 id="using-personalization-for-the-ultimate-cold-call">Using personalization for the ultimate cold call</h2>
<p>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.</p>
<p>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.</p>
<p>That's where the <a href="https://nubela.co/blog/how-salesforge-integrates-rich-prospecting-data-with-chatgpt-to-automatically-personalize-emails/">power of personalization</a> comes in.</p>
<p>For example, let's say you're selling a marketing automation platform. With our API, you can enrich your prospects with information like:</p>
<ul>
<li>Job title</li>
<li>Work history</li>
<li>Skills</li>
<li>Location</li>
<li>Summary of the individual</li>
<li>Education</li>
<li>The size and industry of their company</li>
<li>Recent company news and events</li>
<li>Beyond</li>
</ul>
<p>...and with these insights, you can tailor your pitch to speak directly to the prospect's challenges and goals.</p>
<p>So, instead of a generic opener like, <em>"Hi, I'm calling from MarketCo and we offer marketing automation software,"</em> you could say something like:</p>
<p><em>"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?"</em></p>
<p>See the difference?</p>
<p>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.</p>
<p>And the more relevant and personalized your outreach, the more likely prospects are to actually engage and take a meeting.</p>
<p>In fact while we're talking about enrichment, let me show you one more of our most notable endpoints here:</p>
<h2 id="general-prospect-enrichment">General prospect enrichment</h2>
<p>Outside of using the enrichment parameter on our Person Search Endpoint, if you already have a social media profile URL like a Professional Social Network URL on your prospects, you can also use our <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#people-api-person-profile-endpoint">Person Profile Endpoint</a> to return structured and enriched data of your prospect.</p>
<p>And on this endpoint, if you're using our <code>use_cache=if-present</code> endpoint, we can guarantee it was scraped within 29 days, often live. It also has a <code>personal_contact</code> parameter, and if you choose to enable that, you could also pull their phone number through this endpoint as well.</p>
<p>Here's an example using cURL:</p>
<pre><code class="language-python">curl \
    -G \
    -H "Authorization: Bearer Your_API_Key_Here" \
    'https://nubela.co/proxycurl/api/v2/Professional Social Network' \
    --data-urlencode 'Professional Social Network_profile_url=https://professionalsocialnetwork.com/in/johnrmarty/' \
    --data-urlencode 'personal_contact_number=include' \
    --data-urlencode 'use_cache=if-recent' \
    --data-urlencode 'fallback_to_cache=on-error'
</code></pre>
<p>Which returns a similar JSON result, such as the Person Search Endpoint with the enrichment parameter, but also includes contact information:</p>
<pre><code class="language-python">{"public_identifier": "johnrmarty", "profile_pic_url": "https://media.licdn.com/dms/image/C5603AQHaJSx0CBAUIA/profile-displayphoto-shrink_800_800/0/1558325761562?e=1720051200&amp;v=beta&amp;t=rNrh9lwaFpks3-BT90EvJz-UmC28IONAFMxI52y2yAo", "background_cover_image_url": "https://media.licdn.com/dms/image/C5616AQH9tkBTUhHfng/profile-displaybackgroundimage-shrink_350_1400/0/1614530499400?e=1720051200&amp;v=beta&amp;t=8owZfJSpPKhBGpqPxKufol56_rk6N0gwYnSVHhcZ2EY", "first_name": "John", "last_name": "Marty", "full_name": "John Marty", "follower_count": 261634, "occupation": "Co-Founder at FF Real Estate", "headline": "Professional Social Network Top Voice", "summary": "Most people go through life lost, disengaged, and unhappy at work and in their lives - I'm on a mission to solve that.\n\nI spent 10 years as the founder of Axxis Audio, an electronics company that grew to multi-million dollar sales, which I sold in 2012. At that time, I funneled my earnings into the creation of an Internet of Things company, but numerous factors lead to its demise after 2 hard fought years. \n\nAt 31, I was penny-less, had a baby on the way, and had zero job prospects (despite applying to 150 companies). My desperate situation led me to take a job at Best Buy for $12 an hour while reinventing myself through the completion of an MBA at the University of Colorado, and a 6-month software development boot camp. \n\nAfter graduation, I landed at American Express as a Senior Product Manager and then got poached by Amazon in 2017 (because of my Professional Social Network profile). My journey has led to a deep sense of perspective, humility, and purpose that I draw on to help others find clarity, meaning, and happiness in their careers and lives. \n\nCheck out my website for details on my Mindset Reset Podcast, Public Speaking, Consulting, or my free 40 page Professional Social Network guide\n\nhttp://www.johnraphaelmarty.com/\n\nFAQ's\n\nQ: Can you speak at my Company, University, event or podcast?\nA: I'd love to! I've shared my message on the future of employment, breaking into big tech, and my personal story of reinventing myself and discovering my sense of purpose (and how you can too!).\n\n\u2611\ufe0f  YouTube Channel #1 (John Marty) : http://www.youtube.com/c/JohnMarty-uncommon\n\u2611\ufe0f  YouTube Channel #2 (Tech Careers for non-engineers: https://www.youtube.com/channel/UC900gMMPLwRGGXSTW1gdZHA\n\nFUN FACTS:\n\u2611\ufe0f I am an Avid cyclist and runner, and I just started learning to skateboard a half-pipe.\n\u2611\ufe0f Into the Enneagram? - I'm a #3 (The Achiever)\n\nLETS CONNECT:\n\u2611\ufe0f Email: JohnRmarty@gmail.com (don't forget that \"R\"....The other guy gets my emails all the time)", "country": "US", "country_full_name": "United States of America", "city": "Seattle", "state": "Washington", "experiences": [{"starts_at": {"day": 1, "month": 8, "year": 2021}, "ends_at": null, "company": "FF Real Estate", "company_Professional Social Network_profile_url": null, "company_facebook_profile_url": null, "title": "Co-Founder", "description": "Our mission is to provide everyday people seeking financial freedom long before the age of 65 with the ability to contribute to real estate projects that were only accessible in the past for a select few wealthy individuals.", "location": null, "logo_url": null}, {"starts_at": {"day": 1, "month": 1, "year": 2021}, "ends_at": null, "company": "Mindset Reset Podcast", "company_Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/company/mindset-reset-podcast/", "company_facebook_profile_url": null, "title": "Founder", "description": "We dive into the mindsets of the world\u2019s foremost thought leaders and turn them into actionable insights so that others can discover greater happiness, success, and fulfillment.\n\nhttps://podcasts.apple.com/us/podcast/mindset-reset/id1553212607", "location": "Denver, Colorado, United States", "logo_url": "https://media.licdn.com/dms/image/C560BAQF9QJVQm3SOvA/company-logo_400_400/0/1630654774302/mindset_reset_podcast_logo?e=1722470400&amp;v=beta&amp;t=sJxL8TYqnNMHsrRarkpnhDf7MQiRGtQqmED83pJI0fc"}, {"starts_at": {"day": 1, "month": 1, "year": 2017}, "ends_at": null, "company": "YouTube", "company_Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/company/youtube/", "company_facebook_profile_url": null, "title": "Youtube Content Creator - \"John Marty\"", "description": null, "location": "Seattle, Washington", "logo_url": "https://media.licdn.com/dms/image/C4D0BAQEfoRsyU4yUzg/company-logo_400_400/0/1631053379845/youtube_logo?e=1722470400&amp;v=beta&amp;t=Lc9cCqZK4kAqpxsUAHZXGEue-VFFcqTw02X_rMC3NSI"}, {"starts_at": {"day": 1, "month": 3, "year": 2017}, "ends_at": {"day": 31, "month": 3, "year": 2021}, "company": "Amazon", "company_Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/company/amazon/", "company_facebook_profile_url": null, "title": "Sr. Manager of Product", "description": "I had a mix of roles at Amazon from Sr. PM to Sr. Manager of Product\nTwo years were spent on Marketplace Product Quality and 2 years in New Business Innovation", "location": "Greater Seattle Area", "logo_url": "https://media.licdn.com/dms/image/C560BAQHTvZwCx4p2Qg/company-logo_400_400/0/1630640869849/amazon_logo?e=1722470400&amp;v=beta&amp;t=Kl4OmP2UYQHWMJ0JFzgESXelV5EcD1cNQqDsrvfZ_yo"}, {"starts_at": {"day": 1, "month": 1, "year": 2020}, "ends_at": {"day": 31, "month": 1, "year": 2020}, "company": "Product School", "company_Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/school/product-school/", "company_facebook_profile_url": null, "title": "Featured Speaker", "description": "Product School is a global leader in Product Management training with a community of over one million product professionals. As a featured speaker, I help inspire the next generation of Product Managers to create innovative products and apply best practices in their work.", "location": "Seattle, Washington, United States", "logo_url": "https://media.licdn.com/dms/image/D4E0BAQGODY7RuiroaA/company-logo_400_400/0/1688233590665?e=1722470400&amp;v=beta&amp;t=5DWHgxc4Twq5v6Qi3tF3I9w1zXXxytKl0saLAEvVsvY"}, {"starts_at": {"day": 1, "month": 7, "year": 2015}, "ends_at": {"day": 31, "month": 3, "year": 2017}, "company": "American Express", "company_Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/company/american-express/", "company_facebook_profile_url": null, "title": "Senior Global Product Manager", "description": null, "location": "Phoenix, Arizona Area", "logo_url": "https://media.licdn.com/dms/image/C4D0BAQGRhsociEn4gQ/company-logo_400_400/0/1631367875582?e=1722470400&amp;v=beta&amp;t=W2_ZLifgygTQiN_C2IxeIg453ChanIE0ZgbUe80KCWE"}, {"starts_at": {"day": 1, "month": 3, "year": 2014}, "ends_at": {"day": 31, "month": 7, "year": 2014}, "company": "Mile High Automation, Inc.", "company_Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/company/mile-high-automation-inc-/", "company_facebook_profile_url": null, "title": "Sr. Product Manager", "description": "Mile High Automation is a Smart Home Technology (Internet of Things) software and hardware development company. Our mission is to flawlessly develop and deliver impeccable software, hardware and system design for the high-end consumer market nationally and internationally. \n\n\u2022  Performed a short term change management engagement to lead a 12 member cross functional team through a major strategy and vision transition\n\u2022  Developed an international supply chain that increased profit margin by 30% on core products\n\u2022  Conceptualized, implemented, and rolled out a CRM that led to a 15% higher month over month close rate; trained sales team on newly created key performance indicators to maximize growth\n\u2022  Developed, implemented and oversaw a training process that scaled to 180+ national subcontractors\n\u2022  Translated user stories into detailed product requirements documents that the software development team used to build new features and functionality \n\u2022  Developed benchmarks for customer service, sales, and traffic conversion to maximize profit", "location": "Denver Colorado", "logo_url": "https://media.licdn.com/dms/image/C4E0BAQHofg3toK4P7A/company-logo_400_400/0/1631345561176?e=1722470400&amp;v=beta&amp;t=HbLfcyc2bQC7r1EbCHdoVnqxWuaX5p5t9sYCe72b1Z0"}, {"starts_at": {"day": 1, "month": 2, "year": 2012}, "ends_at": {"day": 31, "month": 5, "year": 2014}, "company": "EOS Controls", "company_Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/company/eos-controls/", "company_facebook_profile_url": null, "title": "Founder/ Chief Operating Officer", "description": "A Smart Home Technology (Internet of Things) software and hardware development company specializing in the mid to high-end condominium market in the United States and South America. \nEOS Controls supports the advancement of affordable and easy to user smart home technology through a network of non-traditional sales channels of architects, designers, and contractors. \n\n\u2022  Coordinated engineering, design, and marketing strategy for the launch of 6 iOS apps\n\u2022  Led a 5 member product team of engineers; conducted daily stand-ups and weekly design review meetings\n\u2022  Managed and prioritized product backlog for development Sprints as well as tested products before release\n\u2022  Effectively placed products through non-traditional distribution channels by identifying and developing relationships with over 100 national and international builders, architects, and designers", "location": "Miami, Florida", "logo_url": "https://media.licdn.com/dms/image/C560BAQFV1hvbuwyU-A/company-logo_400_400/0/1631302568978?e=1722470400&amp;v=beta&amp;t=R7-7AUws3dDFnQGtQpAimIKu0JZQlhOZ4s5BXlIZwPw"}, {"starts_at": {"day": 1, "month": 11, "year": 2002}, "ends_at": {"day": 31, "month": 1, "year": 2012}, "company": "Axxis Audio", "company_Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/company/axxis-audio/", "company_facebook_profile_url": null, "title": "President/Founder", "description": "Specializing in Smart Home Technology - Home Automation, Internet of Things\n\n\u2022  Raised $10,000 in investment to develop a home theater and home automation sales and installation business that grew to multi-million dollar sales (sold the company in 2011)\n\u2022  Developed mission-centric training, responsibility, and accountability framework \n\u2022  10 Direct Reports\n\u2022  Responsible for resource planning, scheduling, and project management \n\u2022  Filled the role of HR and developed a team building program for 10 direct reports, that included formal training, personal and professional peer support, mentoring and professional development; resulting in 20% higher retention rate and improved trust and communication\n\u2022  Deployed an ERP Solution in 2007 that unified 5 departments and provided a central reporting and accountability framework for a 23% employees productivity gain\n\u2022  Handled acquisition of 2nd largest competitor Cobalt Automation", "location": "Durango Colorado", "logo_url": "https://media.licdn.com/dms/image/C560BAQHI-DLifzJs9Q/company-logo_400_400/0/1631341384611?e=1722470400&amp;v=beta&amp;t=lcwme0Al53RkJq1JsM3KoL3QLGrD2-cvsLFIXb-eKYk"}], "education": [{"starts_at": {"day": 1, "month": 1, "year": 2013}, "ends_at": {"day": 31, "month": 1, "year": 2015}, "field_of_study": "Finance + Economics", "degree_name": "Master of Business Administration (MBA)", "school": "University of Colorado Denver", "school_Professional Social Network_profile_url": null, "school_facebook_profile_url": null, "description": null, "logo_url": "https://media.licdn.com/dms/image/D560BAQE7ljLBZdILiQ/company-logo_400_400/0/1705930128687/university_of_colorado_denver_logo?e=1722470400&amp;v=beta&amp;t=d_k6FRSvW7j3GjkQww87tJj0Z6aYRCdDhUibWPoQvE4", "grade": null, "activities_and_societies": null}, {"starts_at": {"day": 1, "month": 1, "year": 2015}, "ends_at": {"day": 31, "month": 1, "year": 2015}, "field_of_study": "School of Software Development", "degree_name": null, "school": "Galvanize Inc", "school_Professional Social Network_profile_url": null, "school_facebook_profile_url": null, "description": null, "logo_url": "https://media.licdn.com/dms/image/C560BAQFKNxOZ4X0g8Q/company-logo_400_400/0/1670610916696/galvanize_it_logo?e=1722470400&amp;v=beta&amp;t=F_Ph32FgMQcnWwdA7WQpD6YfsS9X1yUyPFkc2w4MMz4", "grade": null, "activities_and_societies": null}, {"starts_at": {"day": 1, "month": 1, "year": 1999}, "ends_at": {"day": 31, "month": 1, "year": 2005}, "field_of_study": "Business", "degree_name": "BA", "school": "Fort Lewis College", "school_Professional Social Network_profile_url": null, "school_facebook_profile_url": null, "description": null, "logo_url": "https://media.licdn.com/dms/image/C4D0BAQGs5hZ3ROf-iw/company-logo_400_400/0/1631300889781?e=1722470400&amp;v=beta&amp;t=ZJFESAqNcGUlMs2gj4BK-S8_vVJekS_5YTN_ZzTGFRE", "grade": null, "activities_and_societies": null}, {"starts_at": {"day": 1, "month": 1, "year": 2002}, "ends_at": {"day": 31, "month": 1, "year": 2002}, "field_of_study": null, "degree_name": "Japanese Language and Literature", "school": "Yamasa Institute Okazaki Japan", "school_Professional Social Network_profile_url": null, "school_facebook_profile_url": null, "description": null, "logo_url": null, "grade": null, "activities_and_societies": null}, {"starts_at": {"day": 1, "month": 1, "year": 2000}, "ends_at": {"day": 31, "month": 1, "year": 2000}, "field_of_study": "Spanish Language and Literature", "degree_name": null, "school": "Inter American University of Puerto Rico, San German Campus", "school_Professional Social Network_profile_url": null, "school_facebook_profile_url": null, "description": null, "logo_url": "https://media.licdn.com/dms/image/C4D0BAQF6s2Y-SXyPww/company-logo_400_400/0/1630550017283/inter_american_university_of_puerto_rico_san_german_campus_logo?e=1722470400&amp;v=beta&amp;t=32ykY4EAFFl31DwjUIbewTeoHpkQMXQ0bj-LC_8Sbco", "grade": null, "activities_and_societies": null}, {"starts_at": {"day": 1, "month": 1, "year": 1996}, "ends_at": {"day": 31, "month": 1, "year": 1999}, "field_of_study": null, "degree_name": "High School", "school": "Western Reserve Academy", "school_Professional Social Network_profile_url": null, "school_facebook_profile_url": null, "description": null, "logo_url": "https://media.licdn.com/dms/image/C4E0BAQF_vH_WwK1okg/company-logo_400_400/0/1630630589937/western_reserve_academy_logo?e=1722470400&amp;v=beta&amp;t=ALPr8kHhzHgnmBDuPotiDxHNZFsyZcoMPty25QeE4Ww", "grade": null, "activities_and_societies": null}], "languages": ["English", "Japanese", "Spanish"], "accomplishment_organisations": [], "accomplishment_publications": [], "accomplishment_honors_awards": [], "accomplishment_patents": [], "accomplishment_courses": [], "accomplishment_projects": [{"starts_at": {"day": 1, "month": 3, "year": 2015}, "ends_at": {"day": 31, "month": 3, "year": 2015}, "title": "gMessenger", "description": "gMessenger was built using Ruby on Rails, and the Bootstrap HTML, CSS, and JavaScript framework. It uses a Websocket-Rails integration to post a user's message content to the page in real time, with no page refresh required. gMessenger also includes custom authentication with three different permissions levels.", "url": null}, {"starts_at": {"day": 1, "month": 1, "year": 2015}, "ends_at": {"day": 31, "month": 1, "year": 2015}, "title": "Taskly", "description": "A task and project management responsive web app utilizing Ruby on Rails - CSS and HTML", "url": null}, {"starts_at": {"day": 1, "month": 5, "year": 2013}, "ends_at": {"day": 31, "month": 5, "year": 2013}, "title": "Simple Wall Mount", "description": "Injection molded residential and commercial wall mounts for iPads and iPods. This stylish flush wall mounted solution is meant to be used in conjunction with any Home Automation System.", "url": null}, {"starts_at": null, "ends_at": null, "title": "Overwatch Safety Systems", "description": "Overwatch Safety Systems is developing an advanced warning and information distribution system to assist law enforcement and first responders with active shooter situations in public and private venues. The system utilizes modern sonic detection algorithms to sense and announce the position of active threats to people and property. This technology is also being designed as a hi-tech electronic deterrent for high profile or vulnerable venues.", "url": null}], "accomplishment_test_scores": [], "volunteer_work": [{"starts_at": {"day": 1, "month": 1, "year": 2018}, "ends_at": null, "title": "Mentor", "cause": "CHILDREN", "company": "IDEO", "company_Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/company/ideo/", "description": "Early Childhood Innovation Prize Mentorship", "logo_url": "https://media.licdn.com/dms/image/C560BAQEtno-g_UV4xg/company-logo_400_400/0/1659296502580/ideo_logo?e=1722470400&amp;v=beta&amp;t=bnC15w7NWmm6E70jfawan07hKc-WREeSLgc3ZEhZ5j8"}], "certifications": [{"starts_at": null, "ends_at": null, "name": "SAFe Agile Framework Practitioner - ( Scrum, XP, and Lean Practices in the SAFe Enterprise)", "license_number": null, "display_source": null, "authority": "Scaled Agile, Inc.", "url": null}, {"starts_at": null, "ends_at": null, "name": "SCRUM Alliance Certified Product Owner", "license_number": null, "display_source": null, "authority": "Scrum Alliance", "url": null}, {"starts_at": null, "ends_at": null, "name": "Scaled Agile Framework PM/PO", "license_number": null, "display_source": null, "authority": "Scaled Agile, Inc.", "url": null}], "connections": 500, "people_also_viewed": [{"link": "https://www.professionalsocialnetwork.com/in/mrfow", "name": "Tim S.", "summary": "Forbes Next 1000 x THE Experience Architect x Sr. Director of Product &amp; Platform Experience x AI Systems Designer x Chief Experience Officer x Talent &amp; Employee Experience Einstein x Citizen Technologist", "location": null}, {"link": "https://www.professionalsocialnetwork.com/in/connieyuan", "name": "Connie Carey (Yuan)", "summary": "Growth Product @ Uscreen.tv", "location": null}, {"link": "https://www.professionalsocialnetwork.com/in/niiato", "name": "Nii Ato Bentsi-Enchill, MA, Ed.M", "summary": "Professional Social Network Top Voice | Holistic Career Coach for Professionals of Color | Resume &amp; Professional Social Network Writing | Job Search &amp; Networking Strategy | Leadership Coaching | Interviews | Professional Branding | Speaker | Panelist", "location": null}, {"link": "https://www.professionalsocialnetwork.com/in/scottbelsky", "name": "Scott Belsky", "summary": "product/design obsessive, founder, author, investor", "location": null}, {"link": "https://www.professionalsocialnetwork.com/in/soumeyab", "name": "Soumeya B.", "summary": "Product Management Leader", "location": null}, {"link": "https://www.professionalsocialnetwork.com/in/gibsonbiddle", "name": "Gibson Biddle", "summary": "Former Netflix/Chegg VP Product; speaker, writer &amp; workshop host", "location": null}, {"link": "https://www.professionalsocialnetwork.com/in/gyanda", "name": "Gyanda Sachdeva", "summary": "VP of Product Management at Professional Social Network", "location": null}, {"link": "https://www.professionalsocialnetwork.com/in/felixjr", "name": "Felix Watson Jr.", "summary": "Product @ Google | Founder @ The PM Mastermind, join our community of PMs helping each other level up", "location": null}, {"link": "https://www.professionalsocialnetwork.com/in/rohanrajiv", "name": "Rohan Rajiv", "summary": "Product Lead on Jobseeker, Employer Brand, Skills - Professional Social Network Talent Solutions", "location": null}, {"link": "https://www.professionalsocialnetwork.com/in/alokotkova", "name": "Ana Lokotkova", "summary": "Startup Advisor &amp; Coach | Workshop &amp; Content Design | Speaker | Helping startups turn their ideas into customer &amp; investor magnets", "location": null}], "recommendations": [], "activities": [], "similarly_named_profiles": [{"name": "John Martinez", "link": "https://www.professionalsocialnetwork.com/in/john-martinez-90384a229", "summary": "Leader Sometimes, Problem Creator, Happy Smile the whole Time !", "location": "Memphis, TN"}, {"name": "John Marty", "link": "https://www.professionalsocialnetwork.com/in/john-marty-4226a6132", "summary": "Co-Owner at Stellar Coating Solutions, LLC \nOwner Marty Energy Services (MES)", "location": "Mansfield, TX"}, {"name": "John Marty", "link": "https://www.professionalsocialnetwork.com/in/johntmarty", "summary": "Director - Brand Finance", "location": "Portland, OR"}, {"name": "John Marty", "link": "https://www.professionalsocialnetwork.com/in/johnmarty", "summary": "Lead Software Engineer, Commerce at Disney Parks  &amp; Resorts Digital", "location": "Orlando, FL"}], "articles": [], "groups": [], "skills": [], "inferred_salary": null, "gender": null, "birth_date": null, "industry": null, "extra": null, "interests": [], "personal_emails": [], "personal_numbers": ["+19707495020"]}%
</code></pre>
<p>It's safe to say it's pretty easy to get access to the B2B data you need.</p>
<h2 id="how-to-get-the-most-out-of-your-cold-calling">How to get the most out of your cold calling</h2>
<h3 id="do-your-research">Do your research</h3>
<p>Before each call, take a few minutes to review the prospect's enriched data.</p>
<p>Look for key points that you can use to tailor your pitch, like recent company events, tech stack info, or industry-specific challenges.</p>
<h3 id="prioritize-relevance-over-volume">Prioritize relevance over volume</h3>
<p>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.</p>
<p>Instead, pick the one or two most relevant points and focus on those. Quality over quantity.</p>
<h3 id="connect-the-dots">Connect the dots</h3>
<p>Don't just recite facts about the prospect's company. Use that information to draw explicit connections to your offering.</p>
<p>For instance, <em>"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."</em></p>
<h3 id="keep-it-conversational">Keep it conversational</h3>
<p>While a script is important, you don't want to sound like you're reading from a teleprompter.</p>
<p>Use your personalization data points as natural conversation starters, but be prepared to go off-script and actually listen to the prospect's responses.</p>
<p>By the way, generally speaking, a cold call should flow something like this:</p>
<ul>
<li>Intro - who you are, reason for calling</li>
<li>Value prop - how you help similar companies solve a relevant problem</li>
<li>Qualification - key questions to see if they're a fit</li>
<li>CTA - book a meeting/demo/next step</li>
<li>Objection handling - acknowledge concerns, pivot to value</li>
</ul>
<p>Be prepared to go off-script to address their unique needs. The goal is to start a dialog, not close on the first call.</p>
<h3 id="continue-reiterating">Continue reiterating</h3>
<p>Keep track of which talking points seem to resonate most with prospects, and which fall flat.</p>
<p>Over time, refine your cold calling script based on what's working. It's an iterative process.</p>
<p>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.</p>
<div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">💡</div><div class="kg-callout-text"><b><strong style="white-space: pre-wrap;">Note: </strong></b>Interested in learning about automating cold emailing too? We're Proxycurl. <a href="https://nubela.co/blog/cold-email-mastery-a-step-by-step-guide-to-automating-prospecting-and-cold-email-outreach-that-works" rel="noreferrer">Of course we have an article about that</a>. </div></div><h2 id="recapping-things">Recapping things</h2>
<p>Throughout this article I talked about a lot of different ways our B2B enrichment API could help you with your cold calling. Let me recap them for you.</p>
<p>To begin with, you can leverage our <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#search-api-person-search-endpoint">Person Search Endpoint</a> to build targeted cold calling prospecting lists and surface fresh, accurate leads that fit your ideal customer profile.</p>
<p>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 of other B2B data points using our various enrichment APIs like the <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#contact-api-personal-contact-number-lookup-endpoint">Personal Contact Lookup</a> and <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#people-api-person-profile-endpoint">Person Profile Endpoints</a>.</p>
<p>Your existing CRM leads and downloaded lists can also be continuously enriched and kept up-to-date using these same API endpoints.</p>
<p>Additionally, you can set up workflows to identify "warm" prospects ready for outreach based on activity signals, fresh funding news, [job changes](<a href="https://nubela.co/blog/how-to-automatically-track-Professional">https://nubela.co/blog/how-to-automatically-track-Professional</a> Social Network-job-changes/), and other trigger events, then automatically (and manually, such as cold calling) conduct outreach.</p>
<p>Essentially, our B2B data can power your entire outreach efforts, and we give you the power to integrate it into your workflow however you'd like, or build whatever application you'd like to accomplish your goals best. There are no limits.</p>
<p>The key is to think of our API not as a separate tool, but as a core data layer that integrates into your B2B business.</p>
<h2 id="the-bottom-line">The bottom line</h2>
<p>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.</p>
<p>To truly excel at cold calling, you need accurate contact information, fresh data on your prospects, a personalized outreach, and a focus on delivering value.</p>
<p>That said, said our various B2B enrichment endpoints, such as our:</p>
<ul>
<li><a href="https://nubela.co/proxycurl/docs?shell&ref=nubela.co#search-api-person-search-endpoint">Person Search Endpoint</a></li>
<li><a href="https://nubela.co/proxycurl/docs?shell&ref=nubela.co#people-api-person-profile-endpoint">Person Profile Endpoint</a></li>
<li><a href="https://nubela.co/proxycurl/docs?shell&ref=nubela.co#contact-api-personal-contact-number-lookup-endpoint">Personal Contact Number Lookup Endpoint</a></li>
</ul>
<p>...make that much, much easier.</p>
<h2 id="create-your-proxycurl-account">Create your Proxycurl account</h2>
<p>Ready for all of the B2B data and contact information you could ever need and the power to integrate it into your workflow however you'd like?</p>
<p>If so, <a href="https://nubela.co/proxycurl/auth/register?ref=nubela.co">then you can click here to create your Proxycurl account for free</a>. You'll start with 10 trial credits.</p>
<p>After you run out we use a credit system and you could top up as little as $10 to continue using our API, for more information on our pricing, <a href="https://nubela.co/proxycurl/pricing?ref=nubela.co">you can click here</a>.</p>
<p>Thanks for reading!</p>
<p><strong>P.S.</strong> Have any questions about how we can help in terms of B2B data and our API? Feel free to send us an email at "<a href="mailto:hello@nubela.co">hello@nubela.co</a>" and we'll respond as soon as possible.</p>
 ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ Introducing Proxycurl&#x27;s Customer API ]]></title>
        <description><![CDATA[ I am pleased to announce that the Customer API is now available in production on Proxycurl. The Customer API enables you to retrieve a list of customers and followers of any company.


Let&#39;s see it in action. It is no secret that People Data Labs (PDL) is one ]]></description>
        <link>https://nubela.co/blog/introducing-proxycurls-customer-api/</link>
        <guid isPermaLink="false">66263223c7d8a00001137229</guid>
        <category><![CDATA[ proxycurl ]]></category>
        <dc:creator><![CDATA[ Steven Goh | CEO ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2019/05/square.jpg"/>
        <pubDate>Mon, 22 Apr 2024 17:48:47 +0800</pubDate>
        <media:content url="" medium="image"/>
        <content:encoded><![CDATA[ <p>I am pleased to announce that the <a href="https://pxlcl.co/customer-api?ref=nubela.co">Customer API</a> is now available in production on Proxycurl. The Customer API enables you to retrieve a list of customers and followers of any company.</p>
<p>Let's see it in action. It is no secret that People Data Labs (PDL) is one of our competitors. So, let's attempt to fetch some customers of PDL with the Customer API:</p>
<pre><code class="language-bash">$ curl --location 'https://nubela.co/proxycurl/api/customers?Professional Social Network_company_profile_url=https%3A%2F%2Fwww.professionalsocialnetwork.com%2Fcompany%2Fpeopledatalabs%2F&amp;page_size=10' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer &lt;YOUR_API_KEY&gt;'
</code></pre>
<p>I requested 10 customers of PDL, and here's a sample of the results:</p>
<pre><code class="language-json">{
  "companies": [
    {
      "Professional Social Network_company_profile_url": "https://www.professionalsocialnetwork.com/company/iinet",
      "twitter_profile_url": "https://twitter.com/iinet",
      "email": "support@iinet.net.au"
    },
    {
      "Professional Social Network_company_profile_url": "https://www.professionalsocialnetwork.com/company/iinet",
      "twitter_profile_url": "https://twitter.com/iinet",
      "email": "info@intersight.iinet.net.au"
    },
    {
      "Professional Social Network_company_profile_url": "https://www.professionalsocialnetwork.com/company/cisco",
      "twitter_profile_url": "https://twitter.com/ciscosystems",
      "email": null
    },
    {
      "Professional Social Network_company_profile_url": "https://www.professionalsocialnetwork.com/company/cisco",
      "twitter_profile_url": "https://twitter.com/cisco",
      "email": null
    },
    {
      "Professional Social Network_company_profile_url": "https://www.professionalsocialnetwork.com/company/veterati",
      "twitter_profile_url": null,
      "email": null
    },
    {
      "Professional Social Network_company_profile_url": "https://www.professionalsocialnetwork.com/company/marc-research",
      "twitter_profile_url": "https://twitter.com/marc_research",
      "email": "marketing@marcresearch.com"
    },
    {
      "Professional Social Network_company_profile_url": "https://www.professionalsocialnetwork.com/company/bmc-software",
      "twitter_profile_url": "https://twitter.com/bmcsoftware",
      "email": null
    },
    {
      "Professional Social Network_company_profile_url": "https://www.professionalsocialnetwork.com/company/inklingsf",
      "twitter_profile_url": "https://twitter.com/inkling",
      "email": null
    },
    {
      "Professional Social Network_company_profile_url": "https://www.professionalsocialnetwork.com/company/future-super",
      "twitter_profile_url": "https://twitter.com/myfuturesuper",
      "email": null
    },
    {
      "Professional Social Network_company_profile_url": "https://www.professionalsocialnetwork.com/company/hudson-global",
      "twitter_profile_url": null,
      "email": null
    }
  ],
  "next_page": "https://nubela.co/proxycurl/api/customers?Professional Social Network_company_profile_url=https%3A%2F%2Fwww.professionalsocialnetwork.com%2Fcompany%2Fpeopledatalabs%2F&amp;page_size=10&amp;after=maestro-health"
}
</code></pre>
<p>We've taken the initiative to include contact information alongside the results, providing the general email address for each result (on a best-effort basis).</p>
<p>Upon a quick review of the results, we've identified some bugs. One glaring issue is the presence of duplicate results for both Cisco and iiNet. This is why the product is released with the <code>EXPERIMENTAL</code> tag, so please take note of that. If you happen to spot any bugs, please feel free to send an email to <a href="mailto:hello@nubela.co">hello@nubela.co</a>, and we'll address them promptly.</p>
<h2 id="cool-but-what-can-you-do-with-customer-data">Cool, but what can you do with Customer Data?</h2>
<p>Here's how we initially utilized the Customer API internally. In July 2023, we conducted a cold email campaign targeting 400 of PDL's customers, <a href="https://nubela.co/blog/people-data-labs-customers-get-25-000-proxycurl-credits-for-free/">offering them free credits</a>, which resulted in converting a couple of PDL customers. For us, the Customer API is invaluable for generating prospect lists for our BDR team.</p>
<p>There are countless potential use cases for customer data. As we collect more data on customer behaviors, we'll provide additional write-ups on <a href="https://nubela.co/proxycurl/use-cases?ref=nubela.co">use-cases</a> enabled by the Customer API.</p>
<h2 id="customer-api-endpoints">Customer API Endpoints</h2>
<p>Let's delve deeper into what exactly comprises the Customer API. Essentially, there are two types of data returned by the Customer API:</p>
<ol>
<li>Companies highly likely to be paying customers of a target company.</li>
<li>Individual followers of a target company.</li>
</ol>
<p>With that in mind, the API endpoints that constitute the Customer API revolve around these two data types.</p>
<ul>
<li><strong><a href="https://pxlcl.co/customer-listing-endpoint?ref=nubela.co">Customer Listing Endpoint</a></strong> returns a list of corporate customers of a target company.</li>
<li><strong><a href="https://pxlcl.co/customer-listing-count-endpoint?ref=nubela.co">Customer Listing Count Endpoint</a></strong> returns the total count of corporate customer results so you don't have to pay for all the results to understand the total count.</li>
<li><a href="https://pxlcl.co/follower-listing-endpoint?ref=nubela.co"><strong>Follower Listing Endpoint</strong></a> returns a list of individual followers of a target company.</li>
<li><a href="https://pxlcl.co/follower-listing-count-endpoint?ref=nubela.co"><strong>Follower Listing Count Endpoint</strong></a> returns the total count of individual followers of a target company that we have in the database.</li>
</ul>
<h2 id="how-does-it-work">How does it work?</h2>
<p>Without delving into technical details of the inner workings, I can describe the general heuristics involved in gathering customer data.</p>
<p>We began with a rich database of companies and individuals globally. Then, we started connecting the dots with signals that indicate a user is a paying customer of a target company.</p>
<p>For instance, as a publicly available customer signal, Proxycurl is a Slack customer because <code>nubelacorp.slack.com</code> is a publicly hosted site for our internal users. And <code>Nubela</code> is our legacy incorporated name. By connecting these dots, one might infer that Proxycurl is a customer of Slack.</p>
<p>Understanding this heuristic, you'd also realize that our method of gathering customers is not ideal for identifying customer churn. Even if Proxycurl stops using Slack, <code>nubelacorp.slack.com</code> would still be present.</p>
<h2 id="customer-data-coverage">Customer Data coverage</h2>
<p>Globally, there are tens of millions of companies. It's impractical to identify possible customers for all of them. Hence, we decided to prioritize the top 1M customers by employee count, a subset of company data easily retrieved with <a href="https://nubela.co/proxycurl/linkdb?ref=nubela.co">LinkDB</a>.</p>
<p>We're continually expanding the dataset, but as of April 22, 2024, here's what we have:</p>
<p><strong>Customer Listing Endpoint</strong></p>
<ul>
<li>Total coverage: 656,086 companies</li>
<li>Max single result: 34,515 customers</li>
<li>Average result: 109 customers</li>
</ul>
<p><strong>Follower Listing Endpoint</strong></p>
<ul>
<li>Total coverage: 1,111,249 companies</li>
<li>Max single result: 37,621 followers</li>
<li>Average result: 296 followers</li>
</ul>
<p>We further tested the dataset with 5000 <em>notable companies</em> (companies with at least 5000 employees) and found that:</p>
<ul>
<li>We have customer data for 67.1% of these notable companies.</li>
<li>We have follower data for 71.2% of these notable companies.</li>
</ul>
<hr>
<p>This snapshot represents our progress, and these numbers will continue to grow over time as our coverage expands.</p>
<h2 id="how-is-customer-api-priced">How is Customer API priced?</h2>
<p>Understanding the process through which we acquire customer data, you'll notice that the Customer Dataset is a growing dataset where the core data remains relatively stable. This means that, for the most part, you'll only need to retrieve relevant customer data once. As a software business constantly iterating, if our users only engage with us once, we risk going out of business quickly.</p>
<p>Therefore, the Customer API is priced to encourage you, the customer, to commit to our platform for all kinds of B2B data, including Customer Data.</p>
<p>The Customer and Follower Listing Endpoints will cost <code>100</code> credits per result for casual customers and <code>10</code> credits per result for committed customers on an Annual/Enterprise plan. Please note that Annual Plans do not include those with monthly payment options. Moving forward, it will also be our policy to heavily favor customers who have committed to Proxycurl, offering them cheaper credits.</p>
<p>In the same vein, it will cost <code>1</code> credit to get a count for either followers or customers for committed users, and <code>10</code> credits for casual users.</p>
<h2 id="private-b2b-data-made-accessible">Private B2B Data, made accessible</h2>
<p>At Proxycurl, we are deeply focused on building private B2B datasets as our platform grows. By "private," we mean data that cannot be publicly scraped. We view Customer Data as a "Blue Ocean" dataset because no one else has such datasets, and we will be investing heavily in this area.</p>
<p>We have also identified Contact Data as another form of data that cannot be publicly scraped. It's in our roadmap to dramatically increase our coverage of work email addresses to encompass 80+% of all individuals on the planet. You can expect to hear about a significantly revamped and improved <a href="https://nubela.co/proxycurl/contact-api?ref=nubela.co">Contact API</a> in the coming quarters.</p>
<hr>
<p>Data accessibility is important to us. Proxycurl enables software engineers to access fresh and valuable B2B data via API calls. For those who do not code, we've developed <a href="https://sapiengraph.com/?utm_campaign=own_platforms&utm_source=proxycurl_website&utm_medium=platforms&utm_content=article_link">Sapiengraph</a> for you. I'm also pleased to announce that our Customer Data will soon be available on Sapiengraph through a web UI.</p>
<p>If you have any questions about the Customer API, feel free to send us an email at <a href="mailto:hello@nubela.co">hello@nubela.co</a>. I look forward to hearing from you!</p>
 ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ An Update To Proxycurl&#x27;s Free API Offerings ]]></title>
        <description><![CDATA[ We have to update our free API offerings due to bad actors abusing our free API offerings. As you already know, we have always offered a suite of free API endpoints that lets you

 1. check an email address to see if it is a disposable email, a free email, ]]></description>
        <link>https://nubela.co/blog/updates-to-proxycurls-free-api-offerings/</link>
        <guid isPermaLink="false">661fcc6cdbfa050001053950</guid>
        <category><![CDATA[ proxycurl ]]></category>
        <dc:creator><![CDATA[ Steven Goh | CEO ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2019/05/square.jpg"/>
        <pubDate>Wed, 17 Apr 2024 21:20:30 +0800</pubDate>
        <media:content url="" medium="image"/>
        <content:encoded><![CDATA[ <p>We have to update our free API offerings due to bad actors abusing our free API offerings. As you already know, we have always offered a suite of <a href="https://nubela.co/proxycurl/free-tools?ref=nubela.co">free API endpoints</a> that lets you</p><ol><li>check an email address to see if it is a disposable email, a free email, or a business email</li><li>get logos of any company</li><li>get profile pictures of any Professional Social Network member</li></ol><p>We offer these at no cost and anyone can literally sign up, and get access to it. We prioritize resources to those who pay, therefore the use of these free API services is <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#proxycurl-overview-rate-limit">rate limited based on your subscription level</a>. Regardless, anyone whether you are paying or not, gets access to it.</p><p>Sadly, some bad actors opted to spend time and resources recently creating hundreds of fake accounts to fraudulently gain an aggregated large rate limit and began abusing our free API services. Therefore to combat these bad actors, we have decided to update our free API offerings:</p><ul><li>The free API endpoints will only be unlocked after making at least one $10 top-up. Thereafter, the API endpoints will remain free perpetually. </li><li>Prior to the first top-up, the endpoints will cost <code>1</code> credit / successful request.</li></ul><p>We apologize for this change. I guess a small group of bad actors is why we, the general population, can't have nice things.</p><hr><p>On a separate note: if you are a business owner suffering from having your free trial or free services abused with fake new accounts, then you might find our <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#contact-api-disposable-email-address-check-endpoint" rel="noreferrer">Disposable Email Checker API</a> very helpful. It is free too! (The caveat is that you have to make a one-time $10 payment to unlock the free tier.)</p> ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ How to Get a Professional Social Network Profile’s Contact Information Programmatically ]]></title>
        <description><![CDATA[ Learn how to find the contact information of any given Professional Social Network profile programmatically with our B2B enrichment API. ]]></description>
        <link>https://nubela.co/blog/get-a-linkedin-profiles-contact-information/</link>
        <guid isPermaLink="false">65fcb02b8cc97e0001c8a4b2</guid>
        <category><![CDATA[ contact api ]]></category>
        <dc:creator><![CDATA[ Colton Randolph | Technical Writer ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2023/08/cr.jpg"/>
        <pubDate>Tue, 09 Apr 2024 18:00:56 +0800</pubDate>
        <media:content url="" medium="image"/>
        <content:encoded><![CDATA[ <p>Many businesses use Professional Social Network for prospecting and outreach because of the massive amounts of B2B data available on it, but it can be rather challenging and expensive.</p>
<p>On one hand, Professional Social Network's native solutions like InMail messages are designed to keep you on their platform, rather than natively integrating with your workflow because it's more expensive for you, and more profitable for them.</p>
<p>And then, on the other hand, [third-party solutions like Professional Social Network messaging/outreach automation tools and browser extensions](<a href="https://nubela.co/blog/best-Professional">https://nubela.co/blog/best-Professional</a> Social Network-automation-tools/) don't scale well and include the risk of getting banned from the platform.</p>
<p>The next option is scraping data from Professional Social Network yourself, but that comes with its share of headaches too like constantly rotating proxies, Professional Social Network accounts, and always having to update your scraper to keep it working.</p>
<p>So, you're basically, stuck between a rock and a hard place.</p>
<p>Unless, of course, you had a way to programmatically access all of the B2B data you could ever need without having to scrape a single thing yourself or download any browser extensions...</p>
<div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">💡</div><div class="kg-callout-text"><b><strong style="white-space: pre-wrap;">Note:</strong></b> <a href="https://nubela.co/blog/get-a-Professional%20Social%20Network-profiles-contact-information/#download-the-contact-enrichment-demo" rel="noreferrer">You can click right here</a> to skip to the section where you can download a working Python demo that uses our Contact API to enrich Professional Social Network profile URLs with contact information.</div></div>
<!--kg-card-begin: html-->
<img class="Sirv" data-src="https://crandolph.sirv.com/Images/main_large.gif" alt="">
<script src="https://scripts.sirv.com/sirvjs/v3/sirv.js"></script>
<!--kg-card-end: html-->
<h2 id="meet-proxycurl-a-b2b-enrichment-api">Meet Proxycurl, a B2B enrichment API</h2>
<p>Hi! That's us.</p>
<p>We've already done the hard part for you by scraping over 472 million Professional Social Network profiles ([we call our Professional Social Network dataset LinkDB](<a href="https://nubela.co/blog/linkdb-Professional">https://nubela.co/blog/linkdb-Professional</a> Social Network-dataset-with-people-and-company-profiles/)) and enriching it with external sources.  We make B2B data easy.</p>
<p>All you need to do is request the data from our API (application programming interface, ELI5 definition: a fast food menu for data), and you're free to do whatever you want with it. You can even natively integrate our API into your outreach systems and automate the whole process.</p>
<p>When it comes to contact information enrichment specifically, our <a href="https://nubela.co/proxycurl/contact-api?ref=nubela.co">Contact API</a> provides a programmatic and cost-effective way to enrich a profile/prospect with verified work emails, personal emails, contact numbers, and more.</p>
<p>By integrating our API into your existing workflow, you can:</p>
<ul>
<li>Access verified personal/work emails and contact numbers</li>
<li>Enrich your existing leads with accurate and up-to-date information</li>
<li>Scale your outreach efforts without the need for manual data entry</li>
<li>Save time and money compared to using Professional Social Network's native tools</li>
</ul>
<h2 id="how-to-request-b2b-data-from-our-professional-social-network-api">How to request B2B data from our Professional Social Network API</h2>
<p>There are many different ways you can request data from an API, like cURL, Python or JavaScript, but regardless all of these different ways revolve around making HTTP requests.</p>
<p>Continuing on from the ELI5 fast food menu example from earlier, HTTP requests are like the different ways you can order your food or ask about it.</p>
<p>You can <code>GET</code> (ask for the menu), <code>POST</code> (order something), <code>PUT</code> (change your order), <code>DELETE</code> (cancel your order), and a few more. These requests are the standard way the internet talks; it's the language of web browsers and servers.</p>
<p>cURL is a tool available on Linux, macOS, and Windows used to transfer data to or from a server, and and is one of the easiest ways to request data, so we'll start with that.</p>
<p>In the case of cURL, it's like a messenger you can send to the restaurant (server) with a specific note (request).</p>
<p>The note says things like "Please tell me what pizzas you have" or "I want one large pepperoni pizza". cURL knows how to talk to the restaurant no matter what language they speak or what dishes they serve. It's versatile and can send messages to any restaurant (server) in the world as long as you know the address (URL) and what you want to order (the request method and data).</p>
<h3 id="how-to-get-personal-email-addreses-from-professional-social-network-profiles">How to get personal email addreses from Professional Social Network profiles</h3>
<p>Using cURL, we can request the personal email address from a given Professional Social Network profile with our <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#contact-api-personal-email-lookup-endpoint">Personal Email Lookup Endpoint</a>.</p>
<p>Here's how:</p>
<pre><code class="language-python">curl \
    -G \
    -H "Authorization: Bearer ${YOUR_API_KEY}" \
    'https://nubela.co/proxycurl/api/contact-api/personal-email' \
    --data-urlencode 'Professional Social Network_profile_url=https://professionalsocialnetwork.com/in/williamhgates' \
    --data-urlencode 'email_validation=include' \
    --data-urlencode 'page_size=0'
</code></pre>
<p>Which would return a <code>JSON</code> result such as this:</p>
<pre><code class="language-json">{"emails":[],"invalid_emails":["bill.gates@gatesfoundation.org""]}
</code></pre>
<p>In this case, the email is invalid because it's not a personal email but rather charity/business.</p>
<p>You could <a href="https://nubela.co/proxycurl/auth/register?ref=nubela.co">sign up for a Proxycurl account here and test out this cURL request yourself</a>. After creating your account you'll receive 10 free credits.</p>
<p>By the way, the above cURL command is using <code>GET</code> which is declared by the <code>-G</code>.</p>
<h3 id="how-to-get-personal-phone-numbers-from-professional-social-network-profiles">How to get personal phone numbers from Professional Social Network profiles</h3>
<p>Similar to our Personal Email Lookup Endpoint, a simple cURL request to our <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#contact-api-reverse-contact-number-lookup-endpoint">Personal Contact Number Lookup Endpoint</a> with a given Professional Social Network profile URL will allow you to receive a phone number back in return.</p>
<p>Here's how:</p>
<pre><code class="language-python">curl \
    -G \
    -H "Authorization: Bearer ${YOUR_API_KEY}" \
    'https://nubela.co/proxycurl/api/contact-api/personal-contact' \
    --data-urlencode 'Professional Social Network_profile_url=https://professionalsocialnetwork.com/in/williamhgates' \
    --data-urlencode 'page_size=0'
</code></pre>
<p>Which would return a <code>JSON</code> result such as this:</p>
<pre><code class="language-json">{"numbers": [+13334248181]}% 
</code></pre>
<h3 id="how-to-get-work-emails-from-professional-social-network-profiles">How to get work emails from Professional Social Network profiles</h3>
<p>Finally, last, but not least, our <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#contact-api-work-email-lookup-endpoint">Work Email Lookup Endpoint</a> is our API endpoint that allows you to retrieve the work email address associated with a given Professional Social Network profile URL.</p>
<p>It works a bit differently from the other two because it will only return the data to a webhook. For testing, there are free services out there like <a href="https://webhook.site/?ref=nubela.co">webhook.site</a>. Other than that, it's the same.</p>
<p>Here's how we could request a work email with cURL:</p>
<pre><code class="language-python">curl \
    -G \
    -H "Authorization: Bearer ${YOUR_API_KEY}" \
    'https://nubela.co/proxycurl/api/Professional Social Network/profile/email' \
    --data-urlencode 'Professional Social Network_profile_url=https://professionalsocialnetwork.com/in/williamhgates' \
    --data-urlencode 'callback_url=	https://webhook.site/0a0a6db2-6593-4bdc-bfa5-cc85dc9303ca'
</code></pre>
<p>Which will immediately return <code>JSON</code> back with your work email queue count:</p>
<pre><code class="language-json">{"email_queue_count": 1}%  
</code></pre>
<p>And then send the work email to your webhook:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/04/webhook-results.png" class="kg-image" alt="My Webhook.site response received back after the work email is enriched" loading="lazy" width="1580" height="509"><figcaption><span style="white-space: pre-wrap;">My Webhook.site response received back after the work email is enriched</span></figcaption></figure><h2 id="we-even-built-a-demo-to-show-you-how-to-enrich-contacts">We even built a demo to show you how to enrich contacts</h2>
<p>To demonstrate the capabilities of our Contact API (because we believe in showing and not just telling), I've developed a simple B2B contact enrichment demo application using <a href="https://www.djangoproject.com/?ref=nubela.co">Django</a> and <a href="https://www.python.org/?ref=nubela.co">Python</a>:</p>

<!--kg-card-begin: html-->
<img class="Sirv" data-src="https://crandolph.sirv.com/Images/main_large.gif" alt="">
<script src="https://scripts.sirv.com/sirvjs/v3/sirv.js"></script>
<!--kg-card-end: html-->
<p>It allows you to:</p>
<ul>
<li>Enter a Professional Social Network profile URL and enrich it with verified [work email addresses](<a href="https://skrapp.io/Professional?ref=nubela.co">https://skrapp.io/Professional</a> Social Network), personal email addresses, and phone numbers.</li>
<li>Import Professional Social Network profile URLs in bulk using a CSV file, making it easy to process large numbers of profiles simultaneously.</li>
<li>Store enriched contact information in a SQLite database, providing a persistent and easily accessible storage solution.</li>
<li>Export enriched contact data as a CSV file, allowing you to easily import the data into your existing CRM or marketing automation tools.</li>
<li>View and search enriched contact information through a user-friendly web interface, making it simple to find and manage the data you need.</li>
</ul>
<p>While this application is intended as a demo, it could indeed be used locally in production or slightly altered (such as implementing authentication logic so random individuals couldn't use it publicly and changing out the development Django web server) and used between an entire team.</p>
<p>Once adding things like authentication, you could further integrate something like Stripe's API and build a full-blown SaaS tool. Accomplishing this is pretty easy with Django's framework.</p>
<h3 id="download-the-contact-enrichment-demo">Download the contact enrichment demo</h3>
<p>The application is entirely open source, and you can download it below:</p>

<!--kg-card-begin: html-->
<p></p><form class="stylized-form" action="https://sendy.nubela.co/subscribe" method="POST" accept-charset="utf-8">
	<label for="name">Enter your first name:</label><br/>
	<input type="text" name="name" id="name"/>
	<br/>
    <br>
	<label for="email">Enter your email:</label><br/>
	<input type="email" name="email" id="email"/><br/><div style="display:none;">
	<label for="hp">HP</label><br/>
	<input type="text" name="hp" id="hp"/>
	</div>
	<input type="hidden" name="list" value="o9892fRkdePC919eJm9892Kiuw"/>
	<input type="hidden" name="subform" value="yes"/>
    <br>
    <input type="submit" name="submit" id="submit" value="Download the contact enrichment application"/>
</form>
<!--kg-card-end: html-->
<p>(Just check your email shortly after submitting the above form.)</p>
<h1 id="how-to-integrate-our-api-into-your-application">How to integrate our API into your application</h1>
<p>The rest of the article will be spent explaining how you can use our API in the background for your contact enrichment/outreach using the application as a demonstration.</p>
<p>That said, I've intentionally built the demo with Python as it's a very high level programming language that's easy to pick up, and easy to get help with from ChatGPT or Claude.</p>
<p>Regardless if you know zero code, you're somewhat experienced, or your a coding guru, you'll be able to find value out of this article.</p>
<p>We'll cover the following steps:</p>
<ol>
<li>[Setting up your development environment](<a href="https://nubela.co/blog/get-a-Professional">https://nubela.co/blog/get-a-Professional</a> Social Network-profiles-contact-information/#setting-up-your-development-environment)</li>
<li>[Configuring ngrok for handling webhooks in local development](<a href="https://nubela.co/blog/get-a-Professional">https://nubela.co/blog/get-a-Professional</a> Social Network-profiles-contact-information/#setting-up-ngrok-for-webhooks)</li>
<li>[Defining your data models for persistent storage](<a href="https://nubela.co/blog/get-a-Professional">https://nubela.co/blog/get-a-Professional</a> Social Network-profiles-contact-information/#modelspy)</li>
<li>[Implementing your view functions](<a href="https://nubela.co/blog/get-a-Professional">https://nubela.co/blog/get-a-Professional</a> Social Network-profiles-contact-information/#viewspy)</li>
<li>[Setting up URL patterns](<a href="https://nubela.co/blog/get-a-Professional">https://nubela.co/blog/get-a-Professional</a> Social Network-profiles-contact-information/#urlspy)</li>
<li>[Creating HTML templates](<a href="https://nubela.co/blog/get-a-Professional">https://nubela.co/blog/get-a-Professional</a> Social Network-profiles-contact-information/#styling-your-django-application)</li>
<li>[Running the application](<a href="https://nubela.co/blog/get-a-Professional">https://nubela.co/blog/get-a-Professional</a> Social Network-profiles-contact-information/#running-your-new-application)</li>
</ol>
<p>Let's dive in.</p>
<h2 id="setting-up-your-development-environment">Setting up your development environment</h2>
<h3 id="first-things-first-youll-need-a-python-ide">First things first, you'll need a Python IDE</h3>
<p>IDE stands for integrated development environment, which is a software suite that includes a code editor, compiler or interpreter, debugger, and build automation tools, streamlining the entire development process.</p>
<p>For Python, my favorite IDE is PyCharm, which advertises itself as, "the Python IDE for data science and web development," and <a href="https://www.jetbrains.com/pycharm/download/?ref=nubela.co">has a community edition available for free here</a>.</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/04/pycharm-ui.png" class="kg-image" alt="PyCharm's user interface" loading="lazy" width="2000" height="1250"><figcaption><span style="white-space: pre-wrap;">PyCharm's user interface</span></figcaption></figure><p>If you don't have Python installed already, you can install it during the process of installing PyCharm as well.</p>
<div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">💡</div><div class="kg-callout-text"><b><strong style="white-space: pre-wrap;">Note:</strong></b> If you're a student, you can get the "professional" PyCharm edition, which comes with a few more features for free through the <a href="https://education.github.com/pack?ref=nubela.co">GitHub Student Developer Pack</a>. Also, if you already have a Python IDE, you can of course skip installing PyCharm and use the tools you're familiar with. Just replace any of the following mentions of PyCharm with your IDE of choice.</div></div><h3 id="create-a-new-project">Create a new project</h3>
<p>Once PyCharm is installed, open it and select "File" &gt; "New Project". Choose a location for your project and give it a name (such as <code>contact_demo_app</code>).</p>
<p>In the new project window, ensure that the "Virtualenv" option is selected under the interpreter section. PyCharm will automatically use the bundled Python interpreter:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/03/py-1.png" class="kg-image" alt="PyCharm's virtual environment option" loading="lazy" width="1600" height="1300"><figcaption><span style="white-space: pre-wrap;">PyCharm's virtual environment option</span></figcaption></figure><h2 id="building-your-contact-enrichment-application">Building your contact enrichment application</h2>
<h3 id="installing-django-and-needed-dependencies">Installing Django and needed dependencies</h3>
<p>Next, open the terminal in PyCharm and run the following command to install Django and the requests library:</p>
<p><code>pip3 install django requests</code></p>
<h3 id="creating-a-new-django-project">Creating a new Django project</h3>
<p>After installing the required packages, navigate to the project directory you created earlier in the PyCharm terminal and run the following command to create a new Django app, replacing <code>contact_app</code> with the name of whatever you'd like to name your application:</p>
<p><code>django-admin startproject contact_app</code></p>
<p>If successful, you'll see a new folder appear named after your project name, including another folder with your project name and a file named <code>manage.py</code> within. This is your Django project.</p>
<p>In the same folder as <code>manage.py</code> within a terminal run the following command:</p>
<p><code>python3 manage.py startapp contact_app</code></p>
<p>This will generate all of the necessary files and directories for your application.</p>
<h3 id="setting-up-ngrok-for-webhooks">Setting up ngrok for webhooks</h3>
<p>As mentioned above, webhooks will play a crucial role in our contact enrichment application, as our <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#contact-api-work-email-lookup-endpoint">Work Email Lookup Endpoint</a> only returns results via webhook.</p>
<p>So, for development purposes, we'll use <a href="https://ngrok.com/docs/integrations/hostedhooks/webhooks/?ref=nubela.co">ngrok HostedHooks</a> for easy local webhooks that can communicate with both our API and Django locally (keyword here is locally, which is why we can't use Webhook.site).</p>
<p><a href="https://dashboard.ngrok.com/signup?ref=nubela.co">You can create your ngrok account for free here</a>, and then <a href="https://ngrok.com/download?ref=nubela.co">download the agent here</a>.</p>
<p>After that, navigate to the directory where you've extracted the ngrok executable and run the following command to authenticate your ngrok account:</p>
<pre><code>ngrok authtoken &lt;your-auth-token&gt;
</code></pre>
<p>Of course replacing the authentication token with your own from within the ngrok dashboard.</p>
<p>Then run the following command in the same directory as your ngrok executable to create a secure tunnel to your local Django server:</p>
<pre><code>ngrok http 8000
</code></pre>
<p>If successful, ngrok will display a public URL (such as <code>https://your-url.ngrok-free.app</code>) that you can use to access your local server from the internet:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/04/ngrok.png" class="kg-image" alt="Running a ngrok HostedHook" loading="lazy" width="893" height="371"><figcaption><span style="white-space: pre-wrap;">Running a ngrok HostedHook</span></figcaption></figure><p>Copy that URL. You'll need to keep ngrok running while using the contact enrichment application to receive the results back for work emails.</p>
<p>By the way, ngrok is for development uses only in this case. You'd need a different webhook process for production environments like shared team use or a SaaS.</p>
<h3 id="settingspy">Settings.py</h3>
<p>Next you'll need to open the <code>settings.py</code> file in your project directory.</p>
<p>By default, SQLite should already be set to be used as your database for Django. But you'll need to add your application name under <code>INSTALLED_APPS</code> as well as including your ngrok URL in your <code>ALLOWED_HOSTS</code>. This will be necessary everytime your ngrok address changes (when you restart it).</p>
<p>Here's an example of my <code>settings.py</code> file, with my contact application being named <code>contact_app</code>:</p>
<pre><code class="language-python">from pathlib import Path

# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent

# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/5.0/howto/deployment/checklist/

# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = 'django-key'

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True

ALLOWED_HOSTS = ['your-url.ngrok-free.app', 'localhost', '127.0.0.1']

# Application definition

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'contact_app',
]

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

ROOT_URLCONF = 'contact_demo_app.urls'

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

WSGI_APPLICATION = 'contact_demo_app.wsgi.application'


# Database
# https://docs.djangoproject.com/en/5.0/ref/settings/#databases

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',
    }
}

# Password validation
# https://docs.djangoproject.com/en/5.0/ref/settings/#auth-password-validators

AUTH_PASSWORD_VALIDATORS = [
    {
        'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
    },
]


# Internationalization
# https://docs.djangoproject.com/en/5.0/topics/i18n/

LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC'
USE_I18N = True
USE_TZ = True

# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/5.0/howto/static-files/

STATIC_URL = 'static/'

# Default primary key field type
# https://docs.djangoproject.com/en/5.0/ref/settings/#default-auto-field

DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
</code></pre>
<h3 id="modelspy">Models.py</h3>
<p>Next up is the <code>models.py</code> file, where you define the data models for your application.</p>
<p>Models are Python classes that represent database tables and define the structure and relationships of your application's data.</p>
<p>In the contact enrichment application, we'll define a <code>ProfileResult</code> model to store the enriched contact information retrieved from Proxycurl's API.</p>
<p>Go ahead and copy and paste the following into <code>models.py</code>:</p>
<pre><code class="language-python">from django.db import models

class ProfileResult(models.Model):
    Professional Social Network_url = models.URLField(unique=True)
    work_emails = models.TextField(blank=True, null=True)
    personal_emails = models.JSONField(blank=True, null=True, default=None)  # Updated
    contact_info = models.JSONField(blank=True, null=True, default=None)  # Updated
    status = models.CharField(max_length=36, default='pending')
    batch_id = models.CharField(max_length=36, blank=True, null=True)  # Add this line

    def __str__(self):
        return self.Professional Social Network_url

</code></pre>
<p>Then go back to your PyCharm terminal in the same directory and run the following:</p>
<pre><code class="language-python">python3 manage.py makemigrations
python3 manage.py migrate
</code></pre>
<p>That will reflect the changes for your SQLite database. The <code>ProfileResult</code> model will include fields such as:</p>
<ul>
<li><code>Professional Social Network_url</code>: A URLField to store the Professional Social Network profile URL.</li>
<li><code>work_emails</code>: A TextField to store the work email addresses associated with the profile.</li>
<li><code>personal_emails</code>: A JSONField to store the personal email addresses as a JSON object.</li>
<li><code>contact_info</code>: A JSONField to store additional contact information (e.g., phone numbers, social media profiles) as a JSON object.</li>
<li><code>status</code>: A CharField to indicate the status of the enrichment process (e.g., "pending", "completed", "failed").</li>
<li><code>batch_id</code>: A CharField to store the batch ID if the profile was processed as part of a bulk import.</li>
</ul>
<p>By defining the <code>ProfileResult</code> model, you're creating a way for the enriched contact information to be stored.</p>
<p>Django uses this model to generate the necessary database schema and provides an ORM (object-relational mapping) layer to interact with the database using Python code.</p>
<h3 id="urlspy">Urls.py</h3>
<p>The <code>urls.py</code> file is where you define the URL patterns for your application. URL patterns map specific URLs or URL patterns to corresponding view functions.</p>
<pre><code class="language-python">from django.urls import path
from contact_app import views

urlpatterns = [
    path('', views.home, name='home'),
    path('start-lookup/', views.start_lookup, name='start_lookup'),
    path('webhook/', views.webhook, name='webhook'),
    path('check-webhook-status/&lt;int:task_id&gt;/', views.check_webhook_status, name='check_webhook_status'),
    path('check_batch_status/&lt;str:batch_id&gt;/', views.check_batch_status, name='check_batch_status'),
    path('upload-csv/', views.upload_csv, name='upload_csv'),
    path('export-csv/', views.export_csv, name='export_csv'),
]
</code></pre>
<p>You'll need to make sure you update the application name to yours again.</p>
<p>In this <code>urls.py</code> file, we define:</p>
<ul>
<li><code>/</code>: The root URL pattern that maps to the main dashboard or homepage view.</li>
<li><code>/enrich/</code>: A URL pattern for initiating the enrichment process for a single Professional Social Network profile URL.</li>
<li><code>/import/</code>: A URL pattern for handling bulk imports of Professional Social Network profile URLs from a CSV file.</li>
<li><code>/webhook/</code>: A URL pattern for receiving webhook notifications from Proxycurl's API.</li>
<li><code>/export/</code>: A URL pattern for exporting the enriched contact data as a CSV file.</li>
</ul>
<p>By defining these URL patterns, you're specifying how the application should route incoming requests to the appropriate views based on the requested URLs.</p>
<h3 id="viewspy">Views.py</h3>
<p>Now time for the most important part of the application, <code>views.py</code>, which controls what our Python application does.</p>
<p>In this file, you'll need to replace the ngrok URL with your own, as well as the Proxycurl API key.</p>
<p>Additionally, you'll need to change the <code>return render</code> line to the correct folder name per your project name from <code>contact_app</code>.</p>
<p>If you didn't already create your Proxycurl account above, <a href="https://nubela.co/proxycurl/auth/register?ref=nubela.co">you can create one for free here to get your key</a> and you'll start with 10 credits.</p>
<p>Here's my <code>views.py</code> file:</p>
<pre><code class="language-python">from django.shortcuts import render, redirect, get_object_or_404
from django.http import JsonResponse, HttpResponse
from django.views.decorators.http import require_http_methods
from django.views.decorators.csrf import csrf_exempt
from django.core.paginator import Paginator
import json
import requests
import logging
import csv
import uuid
import io
from .models import ProfileResult
import threading

logger = logging.getLogger(__name__)

API_KEY = "Proxycurl_API_Key_Here"
HEADERS = {'Authorization': f"Bearer {API_KEY}"}
WEBHOOK_URL = 'https://your-url.ngrok-free.app/webhook/'

def get_personal_emails(Professional Social Network_profile_url):
    api_endpoint = 'https://nubela.co/proxycurl/api/contact-api/personal-email'
    params = {'Professional Social Network_profile_url': Professional Social Network_profile_url, 'email_validation': 'include'}
    response = requests.get(api_endpoint, headers=HEADERS, params=params)
    return response.json() if response.status_code == 200 else None

def get_personal_numbers(Professional Social Network_profile_url):
    api_endpoint = 'https://nubela.co/proxycurl/api/contact-api/personal-contact'
    params = {'Professional Social Network_profile_url': Professional Social Network_profile_url}
    response = requests.get(api_endpoint, headers=HEADERS, params=params)
    return response.json() if response.status_code == 200 else None

def lookup_work_email(Professional Social Network_profile_url):
    api_endpoint = 'https://nubela.co/proxycurl/api/Professional Social Network/profile/email'
    params = {'Professional Social Network_profile_url': Professional Social Network_profile_url, 'callback_url': WEBHOOK_URL}
    requests.get(api_endpoint, headers=HEADERS, params=params)

@csrf_exempt
def webhook(request):
    if request.method == 'POST':
        try:
            data = json.loads(request.body)
            Professional Social Network_profile_url = data.get('profile_url')
            work_email = data.get('email')
            status = 'success' if work_email else 'email_not_found'
            logger.info(f"Received webhook data: {data}")
            logger.info(f"Setting status to: {status}")
            profile, _ = ProfileResult.objects.update_or_create(
                Professional Social Network_url=Professional Social Network_profile_url,
                defaults={
                    'work_emails': work_email if work_email else '',
                    'status': status
                }
            )
            logger.info(f"Returning status: {status}")
            return JsonResponse({'status': status, 'task_id': profile.id, 'message': 'Email updated/created'})
        except Exception as e:
            logger.error(f"Error processing webhook: {e}")
            return JsonResponse({'status': 'error', 'message': 'Error processing webhook'}, status=500)
    else:
        logger.error("Invalid request method")
        return JsonResponse({'status': 'error', 'message': 'Invalid request method'}, status=405)

@require_http_methods(["POST"])
def start_lookup(request):
    Professional Social Network_url = json.loads(request.body).get('Professional Social Network_profile_url')
    Professional Social Network_url = Professional Social Network_url.rstrip('/')
    try:
        profile = ProfileResult.objects.get(Professional Social Network_url=Professional Social Network_url)
    except ProfileResult.DoesNotExist:
        profile = ProfileResult.objects.create(Professional Social Network_url=Professional Social Network_url)

    emails = get_personal_emails(Professional Social Network_url)
    numbers = get_personal_numbers(Professional Social Network_url)
    profile.personal_emails = emails if emails else {}
    profile.contact_info = numbers if numbers else {}
    profile.save()

    lookup_work_email(Professional Social Network_url)

    return JsonResponse({'status': 'success', 'task_id': profile.id, 'message': 'Lookup initiated.'})

def check_webhook_status(request, task_id):
    profile = get_object_or_404(ProfileResult, id=task_id)
    status_value = profile.status
    print(f"Status value for task_id {task_id}: {status_value}")
    return JsonResponse({'status': status_value})

def check_batch_status(request, batch_id):
    incomplete_profiles = ProfileResult.objects.filter(batch_id=batch_id, work_emails__isnull=True)
    if incomplete_profiles.exists():
        return JsonResponse({'status': 'pending'})
    else:
        return JsonResponse({'status': 'complete'})

def home(request):
    search_query = request.GET.get('search', '')
    if search_query:
        all_profiles = ProfileResult.objects.filter(
            Professional Social Network_url__icontains=search_query
        ).order_by('-id')
    else:
        all_profiles = ProfileResult.objects.all().order_by('-id')

    paginator = Paginator(all_profiles, 10)
    page_number = request.GET.get('page')
    page_obj = paginator.get_page(page_number)

    if request.method == 'POST':
        action = request.POST.get('action')
        if action == 'enrich':
            Professional Social Network_url = request.POST.get('Professional Social Network_profile_url')
            if Professional Social Network_url:
                Professional Social Network_url = Professional Social Network_url.rstrip('/')
                try:
                    profile = ProfileResult.objects.get(Professional Social Network_url=Professional Social Network_url)
                except ProfileResult.DoesNotExist:
                    profile = ProfileResult.objects.create(Professional Social Network_url=Professional Social Network_url)

                emails = get_personal_emails(Professional Social Network_url)
                numbers = get_personal_numbers(Professional Social Network_url)
                profile.personal_emails = emails if emails else {}
                profile.contact_info = numbers if numbers else {}
                profile.save()

                # Start the enrichment process in a separate thread
                enrichment_thread = threading.Thread(target=start_enrichment, args=(Professional Social Network_url,))
                enrichment_thread.start()

                return JsonResponse({'status': 'success', 'task_id': profile.id, 'message': 'Lookup initiated.'})

        elif action == 'search':
            search_query = request.POST.get('Professional Social Network_profile_url')
            return redirect(f'/?search={search_query}')

    return render(request, 'contact_app/home.html', {'page_obj': page_obj, 'search_query': search_query})

def start_enrichment(Professional Social Network_url):
    lookup_work_email(Professional Social Network_url)

def upload_csv(request):
    if request.method == 'POST' and request.FILES.get('csv_file'):
        batch_id = str(uuid.uuid4())  # Generate a unique batch ID
        csv_file = request.FILES['csv_file']
        decoded_file = csv_file.read().decode('utf-8')
        io_string = io.StringIO(decoded_file)
        reader = csv.reader(io_string)
        next(reader, None)  # Skip the header row

        profiles_to_process = []
        for row in reader:
            Professional Social Network_url = row[0].strip()
            if Professional Social Network_url:
                profile, created = ProfileResult.objects.get_or_create(
                    Professional Social Network_url=Professional Social Network_url,
                    defaults={'batch_id': batch_id}
                )
                if created or not profile.work_emails:
                    profiles_to_process.append(profile)

        for profile in profiles_to_process:
            lookup_work_email(profile.Professional Social Network_url)

        return JsonResponse({'status': 'success', 'batch_id': batch_id, 'profiles_to_process': len(profiles_to_process)})
    else:
        return JsonResponse({'status': 'error', 'message': 'Invalid request'}, status=400)

def export_csv(request):
    response = HttpResponse(content_type='text/csv')
    response['Content-Disposition'] = 'attachment; filename="profile_results.csv"'

    writer = csv.writer(response)
    writer.writerow(['Professional Social Network URL', 'Work Email', 'Personal Email', 'Invalid Emails', 'Contact Info'])

    profiles = ProfileResult.objects.all().order_by('-id')
    for profile in profiles:
        # Process personal emails
        if isinstance(profile.personal_emails, dict):
            personal_emails_list = profile.personal_emails.get('emails', [])
            personal_emails = ', '.join(personal_emails_list) if personal_emails_list else 'N/A'
            invalid_emails_list = profile.personal_emails.get('invalid_emails', [])
            invalid_emails = ', '.join(invalid_emails_list) if invalid_emails_list else 'N/A'
        elif isinstance(profile.personal_emails, list):
            personal_emails = ', '.join(profile.personal_emails) if profile.personal_emails else 'N/A'
            invalid_emails = 'N/A'
        else:
            personal_emails = 'N/A'
            invalid_emails = 'N/A'

        # Process contact info
        if isinstance(profile.contact_info, dict):
            contact_numbers_list = profile.contact_info.get('numbers', [])
            contact_numbers = ', '.join(contact_numbers_list) if contact_numbers_list else 'N/A'
        elif isinstance(profile.contact_info, list):
            contact_numbers = ', '.join(profile.contact_info) if profile.contact_info else 'N/A'
        else:
            contact_numbers = 'N/A'

        # Process work emails
        work_email = profile.work_emails if profile.work_emails else 'N/A'

        # Write the data into the CSV
        writer.writerow([
            profile.Professional Social Network_url or 'N/A',
            work_email,
            personal_emails,
            invalid_emails,
            contact_numbers,
        ])

    return response
</code></pre>
<p>In a production environment, you would want to store your API key with an environment variable.</p>
<p>This <code>views.py</code> file includes the majority of our application logic, such as:</p>
<h3 id="lookup-initiation">Lookup initiation</h3>
<p><code>start_lookup</code> processes a <code>POST</code> request to start the enrichment process for a given Professional Social Network profile URL, fetching personal emails, contact numbers, and initiating a work email lookup.</p>
<p>The results are stored in a <code>ProfileResult</code> object.</p>
<h3 id="email-and-contact-number-fetching">Email and contact number fetching</h3>
<p><code>get_personal_emails</code> and <code>get_personal_numbers</code> functions make <code>GET</code> requests to Proxycurl's API endpoints to fetch personal emails and contact numbers, respectively, using a Professional Social Network profile URL.</p>
<p>The responses are returned as <code>JSON</code>.</p>
<h3 id="work-email-lookup">Work email lookup</h3>
<p><code>lookup_work_email</code> initiates a work email lookup by making a <code>GET</code> request to our Work Email Lookup Endpoint.</p>
<p>This function includes a <code>callback_url</code> parameter, to send the results to our webhook URL.</p>
<h3 id="webhook-handling">Webhook handling</h3>
<p>The webhook view is designed to handle <code>POST</code> requests, which sends back the work email lookup results.</p>
<p>The function processes the received data, updates or creates a <code>ProfileResult</code> object with the result, and logs the operation.</p>
<h3 id="status-checks">Status checks</h3>
<p><code>check_webhook_status</code> and <code>check_batch_status provide</code> endpoints for checking the status of individual and batch enrichment tasks, respectively.</p>
<h3 id="web-interface-and-batch-processing">Web interface and batch processing</h3>
<p>The home view renders a simple web interface for interacting with the system, including initiating enrichments and searching through enriched profiles.</p>
<p><code>upload_csv</code> allows for batch uploading of Professional Social Network URLs for enrichment via CSV file.</p>
<p><code>export_csv</code> provides functionality to export enriched profile data as a CSV file.</p>
<h2 id="styling-your-django-application">Styling your Django application</h2>
<p>Django uses a templating language that allows you to embed Python-like code and variables within HTML, allowing dynamic rendering of the content.</p>
<p>In addition to the templating language, Django templates can also include JavaScript code and perform client-side operations.</p>
<p>In the contact enrichment application, there are two main templates:</p>
<ol>
<li>
<p><code>base.html</code>: This is the base template that defines the common structure and layout of the application's pages. It includes the necessary HTML boilerplate, such as the <code>&lt;!DOCTYPE html&gt;</code> declaration, <code>&lt;html&gt;</code>, <code>&lt;head&gt;</code>, and <code>&lt;body&gt;</code> tags. The <code>base.html</code> template also contains blocks <code>({% block %})</code> that can be overridden by child templates to provide page-specific content.</p>
</li>
<li>
<p><code>home.html</code>: This is the main template for the application's homepage or dashboard. It extends the <code>base.html</code> template and provides the specific content for the homepage. The <code>home.html</code> template includes the necessary JavaScript, HTML, and Django template tags to display the enriched contact information, search functionality, pagination, and forms for initiating enrichment and importing/exporting data.</p>
</li>
</ol>
<p>The <code>home.html</code> template is responsible for rendering the main user interface of the contact enrichment application. It displays the list of enriched profiles, allows users to search and navigate through the results, and provides options to initiate enrichment for individual profiles or import profiles in bulk using a CSV file.</p>
<p>The view function associated with the homepage (<code>views.home</code>) renders the <code>home.html</code> template and passes the necessary data (such as <code>page_obj</code>, <code>search_query</code>) to populate the template with dynamic content.</p>
<h3 id="basehtml">Base.html</h3>
<p>You'll need to first create a <code>templates</code> folder within the same folder as your <code>settings.py</code> file.</p>
<p>Then within that <code>templates</code> folder, create a file named <code>base.html</code> with the following inside of it:</p>
<pre><code class="language-html">&lt;!DOCTYPE html&gt;
&lt;html lang="en"&gt;
&lt;head&gt;
    &lt;meta charset="UTF-8"&gt;
    &lt;meta name="viewport" content="width=device-width, initial-scale=1.0"&gt;
    &lt;title&gt;Contact App&lt;/title&gt;
    &lt;!-- Bootstrap CSS --&gt;
    &lt;link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css"&gt;
&lt;/head&gt;
&lt;body&gt;

    {% block content %}{% endblock %}

    &lt;!-- Bootstrap JS, Popper.js, and jQuery --&gt;
    &lt;script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"&gt;&lt;/script&gt;
    &lt;script src="https://cdn.jsdelivr.net/npm/popper.js@1.9.1/dist/umd/popper.min.js"&gt;&lt;/script&gt;
    &lt;script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"&gt;&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;
</code></pre>
<p>As you can see, it's pretty simple and relies on Bootstrap for styling.</p>
<p>Then within your <code>templates</code> folder, create a new folder named after your application, such as <code>contact_app</code>.</p>
<h3 id="homehtml">Home.html</h3>
<p>Next within <code>templates/contact_app</code>, we'll need to create our home file, which will control the majority of our application.</p>
<p>Go ahead and create a new file named <code>home.html</code>, and paste the following inside:</p>
<pre><code class="language-html">{% extends 'base.html' %}

{% block content %}
&lt;div class="container mt-4"&gt;
    &lt;h1 class="text-center text-gray mb-4"&gt;Contact enrichment with Proxycurl&lt;/h1&gt;
    &lt;div class="row"&gt;
        &lt;div class="col-md-12"&gt;
            &lt;table class="table table-striped table-bordered"&gt;
                &lt;thead class="thead-dark"&gt;
                    &lt;tr&gt;
                        &lt;th scope="col"&gt;Professional Social Network URL&lt;/th&gt;
                        &lt;th scope="col"&gt;Work Email&lt;/th&gt;
                        &lt;th scope="col"&gt;Valid Personal Email&lt;/th&gt;
                        &lt;th scope="col"&gt;Invalid Personal Email&lt;/th&gt;
                        &lt;th scope="col"&gt;Contact Number&lt;/th&gt;
                    &lt;/tr&gt;
                &lt;/thead&gt;
                &lt;tbody id="profile-table-body"&gt;
                    {% for profile in page_obj %}
                    &lt;tr&gt;
                        &lt;td&gt;&lt;a href="{{ profile.Professional Social Network_url }}" target="_blank"&gt;{{ profile.Professional Social Network_url }}&lt;/a&gt;&lt;/td&gt;
                        &lt;td&gt;{{ profile.work_emails|default:'None' }}&lt;/td&gt;
                        &lt;td&gt;
                            {% if profile.personal_emails and profile.personal_emails.emails %}
                                {{ profile.personal_emails.emails|join:', ' }}
                            {% else %}
                                None
                            {% endif %}
                        &lt;/td&gt;
                        &lt;td&gt;
                            {% if profile.personal_emails and profile.personal_emails.invalid_emails %}
                                {{ profile.personal_emails.invalid_emails|join:', ' }}
                            {% else %}
                                None
                            {% endif %}
                        &lt;/td&gt;
                        &lt;td&gt;
                            {% if profile.contact_info and profile.contact_info.numbers %}
                                {{ profile.contact_info.numbers|join:', ' }}
                            {% else %}
                                None
                            {% endif %}
                        &lt;/td&gt;
                    &lt;/tr&gt;
                    {% endfor %}
                &lt;/tbody&gt;
            &lt;/table&gt;
            {% if page_obj.has_other_pages %}
            &lt;nav aria-label="Page navigation example"&gt;
                &lt;ul class="pagination"&gt;
                    {% if page_obj.has_previous %}
                        &lt;li class="page-item"&gt;&lt;a class="page-link" href="?page=1{% if search_query %}&amp;search={{ search_query }}{% endif %}"&gt;First&lt;/a&gt;&lt;/li&gt;
                        &lt;li class="page-item"&gt;&lt;a class="page-link" href="?page={{ page_obj.previous_page_number }}{% if search_query %}&amp;search={{ search_query }}{% endif %}"&gt;Previous&lt;/a&gt;&lt;/li&gt;
                    {% endif %}
                    {% for num in page_obj.paginator.page_range %}
                        {% if page_obj.number == num %}
                            &lt;li class="page-item active"&gt;&lt;a class="page-link" href="?page={{ num }}{% if search_query %}&amp;search={{ search_query }}{% endif %}"&gt;{{ num }}&lt;/a&gt;&lt;/li&gt;
                        {% elif num &gt; page_obj.number|add:'-3' and num &lt; page_obj.number|add:'3' %}
                            &lt;li class="page-item"&gt;&lt;a class="page-link" href="?page={{ num }}{% if search_query %}&amp;search={{ search_query }}{% endif %}"&gt;{{ num }}&lt;/a&gt;&lt;/li&gt;
                        {% endif %}
                    {% endfor %}
                    {% if page_obj.has_next %}
                        &lt;li class="page-item"&gt;&lt;a class="page-link" href="?page={{ page_obj.next_page_number }}{% if search_query %}&amp;search={{ search_query }}{% endif %}"&gt;Next&lt;/a&gt;&lt;/li&gt;
                        &lt;li class="page-item"&gt;&lt;a class="page-link" href="?page={{ page_obj.paginator.num_pages }}{% if search_query %}&amp;search={{ search_query }}{% endif %}"&gt;Last&lt;/a&gt;&lt;/li&gt;
                    {% endif %}
                &lt;/ul&gt;
            &lt;/nav&gt;
            {% endif %}
        &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="my-4"&gt;
        &lt;div id="enrichment-message" class="alert alert-secondary" style="display:none;"&gt;
            &lt;p&gt;Enriching contact information... please wait.&lt;/p&gt;
        &lt;/div&gt;
        &lt;form method="post" class="form-inline" id="lookupForm"&gt;
            {% csrf_token %}
            &lt;input class="form-control mr-sm-2" name="Professional Social Network_profile_url" type="text" placeholder="Enter Professional Social Network Profile URL" value="{{ search_query }}" required&gt;
            &lt;button class="btn btn-primary mr-2 my-2 my-sm-0" type="submit" name="action" value="enrich"&gt;Enrich&lt;/button&gt;
            &lt;button class="btn btn-primary my-2 my-sm-0" type="submit" name="action" value="search"&gt;Search&lt;/button&gt;
        &lt;/form&gt;

        &lt;div class="mt-4"&gt;
            &lt;form method="post" enctype="multipart/form-data" action="{% url 'upload_csv' %}" class="form-inline" id="csvForm"&gt;
                {% csrf_token %}
                &lt;div class="input-group mr-2"&gt;
                    &lt;div class="custom-file"&gt;
                        &lt;input type="file" name="csv_file" id="csv_file" class="custom-file-input"&gt;
                        &lt;label class="custom-file-label" for="csv_file"&gt;Choose CSV file&lt;/label&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
                &lt;button type="submit" class="btn btn-primary"&gt;Enrich CSV&lt;/button&gt;
            &lt;/form&gt;
        &lt;/div&gt;
        &lt;div class="mt-4"&gt;
            &lt;a href="{% url 'export_csv' %}" class="btn btn-primary"&gt;Download contacts as CSV&lt;/a&gt;
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;

&lt;script&gt;
let webhookPollInterval;

document.getElementById('lookupForm').addEventListener('submit', function(event) {
    event.preventDefault();
    const Professional Social NetworkURLInput = document.querySelector('[name="Professional Social Network_profile_url"]');
    const Professional Social NetworkURL = Professional Social NetworkURLInput.value.trim();

    if (Professional Social NetworkURL === '') {
        alert('Please enter a Professional Social Network Profile URL.');
        return;
    }

    const action = document.querySelector('button[type="submit"][name="action"]:focus').value;
    if (action === 'enrich') {
        showEnrichmentMessage();
        fetch('/start-lookup/', {
            method: 'POST',
            headers: {
                'Content-Type': 'application/json',
                'X-CSRFToken': '{{ csrf_token }}',
            },
            body: JSON.stringify({ 'Professional Social Network_profile_url': Professional Social NetworkURL }),
        })
        .then(response =&gt; response.json())
        .then(data =&gt; {
            if (data.status === 'success') {
                start_work_email_lookup(Professional Social NetworkURL, data.task_id);
                pollWebhookStatus(data.task_id);
            } else {
                console.error('Error initiating lookup:', data.message);
            }
        })
        .catch(error =&gt; {
            console.error('Error initiating lookup:', error);
        });
    } else if (action === 'search') {
        window.location.href = `/?search=${encodeURIComponent(Professional Social NetworkURL)}`;
    }
});

document.getElementById('csvForm').addEventListener('submit', function(event) {
    event.preventDefault();
    const formData = new FormData(this);
    showEnrichmentMessage();

    fetch('{% url 'upload_csv' %}', {
        method: 'POST',
        body: formData,
        headers: {
            'X-CSRFToken': '{{ csrf_token }}',
        },
    })
    .then(response =&gt; response.json())
    .then(data =&gt; {
        console.log('CSV upload response:', data);
        if (data.status === 'success' &amp;&amp; data.batch_id &amp;&amp; data.check_batch_url) {
            pollBatchStatus(data.batch_id, data.check_batch_url);
        } else {
            alert('Failed to start batch processing.');
        }
    })
    .catch(error =&gt; {
        console.error('Error uploading CSV:', error);
    });
});

function showEnrichmentMessage() {
    const enrichmentMessage = document.getElementById('enrichment-message');
    enrichmentMessage.style.display = 'block';
}

function pollWebhookStatus(taskId) {
    clearInterval(webhookPollInterval); // Clear any existing interval

    webhookPollInterval = setInterval(() =&gt; {
        fetch(`/check-webhook-status/${taskId}/`)
        .then(response =&gt; response.json())
        .then(data =&gt; {
            if (data.status === 'success' || data.status === 'email_not_found') {
                clearInterval(webhookPollInterval);
                window.location.reload(); // Redirect on success or email_not_found
            } else {
                console.log(`Received status for ${taskId}:`, data);
            }
        })
        .catch(error =&gt; {
            console.error('Error checking webhook status:', error);
            clearInterval(webhookPollInterval);
        });
    }, 2000);
}

function pollBatchStatus(batchId) {
  const checkBatchUrl = `/check_batch_status/${batchId}/`;
  console.log('Starting to poll for batch status, batch ID:', batchId);
  const pollInterval = setInterval(() =&gt; {
    fetch(checkBatchUrl)
      .then(response =&gt; response.json())
      .then(data =&gt; {
        if (data.status === 'redirect') {
          // Handle the redirect
          console.log('Batch processing complete. Redirecting...');
          clearInterval(pollInterval);
          window.location.href = data.redirect_url;
        } else if (data.status === 'pending') {
          console.log('Batch processing pending...');
        } else {
          console.log('Unexpected status:', data.status);
        }
      })
      .catch(error =&gt; {
        console.error('Error during batch status polling:', error);
        clearInterval(pollInterval);
      });
  }, 5000); // Adjust polling interval as needed
}

function start_work_email_lookup(Professional Social Network_url, task_id) {
    const api_endpoint = 'https://nubela.co/proxycurl/api/Professional Social Network/profile/email';
    const params = {
        'Professional Social Network_profile_url': Professional Social Network_url,
        'callback_url': '{{ WEBHOOK_URL }}',
        'task_id': task_id
    };

    fetch(api_endpoint, {
        headers: {
            'Authorization': 'Bearer {{ API_KEY }}',
        },
        method: 'GET',
        params: params,
    })
    .then(response =&gt; {
        console.log('Lookup work email response:', response);
    })
    .catch(error =&gt; {
        console.error('Error looking up work email:', error);
    });
}
&lt;/script&gt;
{% endblock %}
</code></pre>
<h2 id="running-your-new-application">Running your new application</h2>
<p>The last step is pretty simple.</p>
<p>All you'll need to do to run your contact enrichment application is type in the following within a terminal that's in the same folder as <code>manage.py</code>:</p>
<p><code>python3 manage.py runserver</code></p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/04/python3.png" class="kg-image" alt="Running the Django web server" loading="lazy" width="617" height="199"><figcaption><span style="white-space: pre-wrap;">Running the Django web server</span></figcaption></figure><p>That'll run the Django development web server, and your application will be available in any browser through <code>127.0.0.1:8000</code>:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/04/django2.png" class="kg-image" alt="The contact enrichment application home page" loading="lazy" width="929" height="878"><figcaption><span style="white-space: pre-wrap;">The contact enrichment application home page</span></figcaption></figure><h2 id="understanding-the-contract-enrichment-application">Understanding the contract enrichment application</h2>
<h3 id="application-and-file-structure">Application and file structure</h3>
<p>Your application structure should look like this, only differing when it comes to the application/directory names:</p>
<pre><code>&lt;project_name&gt;/
│
├── __init__.py
├── asgi.py
├── settings.py
├── urls.py
├── wsgi.py
│
├── &lt;app_name&gt;/
│   │
│   ├── migrations/
│   │
│   ├── templates/
│   │   ├── base.html
│   │   └── &lt;app_name&gt;/
│   │       └── home.html
│   │
│   ├── __init__.py
│   ├── admin.py
│   ├── apps.py
│   ├── models.py
│   ├── tests.py
│   └── views.py
│
├── db.sqlite3
└── manage.py

</code></pre>
<p>The important things here being:</p>
<ul>
<li><code>&lt;app_name&gt;/</code>: This is the main Django application directory containing the core functionality of the contact enrichment application.</li>
<li><code>&lt;project_name&gt;/</code>: This is the project-level directory containing project-wide configuration files such as <code>settings.py</code> and <code>urls.py</code>.</li>
<li><code>templates/</code>: This is the project-level templates directory where the base.html template is located (as well as the <code>&lt;app_name&gt;</code> folder within <code>templates/</code> and <code>home.html</code> inside of that).</li>
<li><code>db.sqlite3</code>: This is the SQLite database file used by the application.</li>
<li><code>manage.py</code>: This is the command-line utility for managing the Django project.</li>
</ul>
<h3 id="how-the-application-works">How the application works</h3>
<p>Th <code>home.html</code> file along with our <code>views.py</code> file handle the vast majority of our application.</p>
<p>Specifically:</p>
<h4 id="1-form-submission">1) Form submission</h4>
<p>The JavaScript code on our <code>home.html</code> file adds an event listener to the form with the ID <code>lookupForm</code>.</p>
<p>When the form is submitted, it prevents the default form submission behavior and retrieves the entered Professional Social Network profile URL.</p>
<p>Based on the selected action (enrich or search), it either sends a <code>POST</code> request to initiate the enrichment process or redirects the user to the search results page.</p>
<h4 id="2-api-requests-pulling-data">2) API requests (pulling data)</h4>
<p>The Python code in the <code>views.py</code> file makes requests to Proxycurl's  API using the <code>requests</code> library.</p>
<p>The <code>get_personal_emails</code> and <code>get_personal_numbers</code> functions send <code>GET</code> requests to the Proxycurl API endpoints <code>https://nubela.co/proxycurl/api/contact-api/personal-email</code> and <code>https://nubela.co/proxycurl/api/contact-api/personal-contact</code>, respectively, to retrieve personal emails and contact information.</p>
<p>The <code>lookup_work_email</code> function sends a <code>GET</code> request to the Proxycurl API endpoint <code>https://nubela.co/proxycurl/api/Professional Social Network/profile/email</code> to initiate the work email enrichment process. This request includes the Professional Social Network profile URL and the callback URL for receiving the webhook response.</p>
<p>The server-side views handle the responses from Proxycurl's API and perform the necessary operations, such as storing the retrieved data in the <code>ProfileResult</code> model instances.</p>
<p>The JavaScript code on the <code>home.html</code> file interacts with the server-side endpoints using the fetch function to trigger the enrichment process and handle the responses accordingly.</p>
<h4 id="3-server-side-processing">3) Server-side processing</h4>
<p>The <code>views.py</code> file contains the server-side logic for handling requests and interacting with Proxycurl's API.</p>
<p>The <code>start_lookup</code> view function receives the <code>POST</code> request from the client-side JavaScript and initiates the work email enrichment process by making a <code>GET</code> request to Proxycurl's API endpoint <code>https://nubela.co/proxycurl/api/Professional Social Network/profile/email</code>.</p>
<p>The webhook view function handles the incoming webhook from Proxycurl's API, updating the corresponding <code>ProfileResult</code> model instance with the retrieved work email.</p>
<h4 id="4-storing-data">4) Storing data</h4>
<p>The <code>models.py</code> file defines the <code>ProfileResult</code> model, which represents the database table for storing enriched contact information.</p>
<p>The model defines fields such as <code>Professional Social Network_url</code>, <code>work_emails</code>, <code>personal_emails</code>, <code>contact_info</code>, <code>status</code>, and <code>batch_id</code> to store the relevant data.</p>
<p>The server-side views interact with the <code>ProfileResult</code> model to create, update, and retrieve records as needed during the enrichment process.</p>
<h4 id="5-ui-updates-data-export-batch-processing-and-webhook-handling-backend-logic">5) UI updates, data export, batch processing, and webhook handling (backend logic)</h4>
<p>The JavaScript code on the <code>home.html</code> file dynamically updates the user interface based on the responses received from the server-side and Proxycurl's API.</p>
<p>It shows enrichment messages, polls for webhook status updates, and updates the displayed data without requiring a full page reload.</p>
<p>The JavaScript code also handles functionalities like batch processing of CSV files and exporting enriched contact data as a CSV file.</p>
<h4 id="batch-processing">Batch processing</h4>
<p>For batch processing, the JavaScript code sends a <code>POST</code> request to the <code>/upload-csv/</code> endpoint on the server-side to upload a CSV file containing a list of Professional Social Network profile URLs.</p>
<p>It then polls the <code>/check_batch_status/</code> endpoint to monitor the batch processing status and redirects the user to the appropriate page once the batch is completed.</p>
<h4 id="webhook-handling">Webhook handling</h4>
<p>For webhook handling, the JavaScript code sets up polling intervals to check the status of webhook events by sending requests to the <code>/check-webhook-status/</code> endpoint.</p>
<p>It then updates the UI accordingly based on the webhook status (<code>success</code>, <code>email_not_found</code>, etc.).</p>
<p>In this example, I've used ngrok for local webhooks.</p>
<h4 id="server-side-functions">Server-side functions</h4>
<p>The server-side <code>views.py</code> file contains functions for handling CSV file uploads, batch processing, exporting enriched data as a CSV file, and managing webhooks.</p>
<p>The <code>upload_csv</code> view function handles the CSV file upload, processes the Professional Social Network profile URLs, initiates the enrichment process for each profile, and generates a unique batch ID for tracking.</p>
<p>The <code>check_batch_status</code> view function checks the status of the batch processing and returns the appropriate response (pending or complete).</p>
<p>The <code>webhook</code> view function handles the incoming webhooks from Proxycurl's API, updating the corresponding <code>ProfileResult</code> records with the retrieved work email.</p>
<h2 id="a-summarization">A summarization</h2>
<p>Overall, the application combines client-side JavaScript, server-side Python code (Django views), interaction with Proxycurl's API, data persistence using Django's ORM, batch processing, and webhook handling to provide a complete contact enrichment solution.</p>
<p>In terms of pricing per profile enriched, the application costs 3 credits per profile enrichment base rate (because of the work emails), 1 credit per phone number successfully returned, and 2 credits per personal email successfully returned (because the script uses email verification, if you wanted you could remove this and save 1 credit per result).</p>
<p>Amounting to a grand total of 6 credits per result if every variable was successfully returned, and 3 credits base rate per use (<a href="https://nubela.co/proxycurl/pricing?ref=nubela.co">you can learn more about what a credit costs here</a>, it varies).</p>
<p>Not bad, huh?</p>
<h2 id="its-time-to-put-this-into-practice">It's time to put this into practice</h2>
<p>If you'd like, you can take our contact enrichment app right now and use it commercially. It's open source, and I don't care what you do with it.</p>
<p>Or, taking the knowledge you've learned here about our Contact API, specifically our:</p>
<ul>
<li><a href="https://nubela.co/proxycurl/docs?ref=nubela.co#contact-api-work-email-lookup-endpoint">Work Email Lookup Endpoint</a></li>
<li><a href="https://nubela.co/proxycurl/docs?ref=nubela.co#contact-api-personal-contact-number-lookup-endpoint">Personal Contact Number Lookup Endpoint</a></li>
<li><a href="https://nubela.co/proxycurl/docs?ref=nubela.co#contact-api-personal-email-lookup-endpoint">Personal Email Lookup Endpoint</a></li>
</ul>
<p>You can build your own custom application, tailored specifically to your needs and workflow. You now have access to all of the B2B data and contact information you could ever need.</p>
<p>What are you waiting for?</p>
<h2 id="create-your-proxycurl-account">Create your Proxycurl account</h2>
<p><a href="https://nubela.co/proxycurl/auth/register?ref=nubela.co">You can click here to create your Proxycurl account for free</a>. You'll start with 10 credits.</p>
<p>After that, you can opt for a pay-as-you-go or subscription plan. <a href="https://nubela.co/proxycurl/pricing?ref=nubela.co">Our pricing information is available here</a>.</p>
<p>Thanks for reading!</p>
<p><strong>P.S.</strong> Have any questions about how we can help with contact enrichment? Feel free to reach out to us at "<a href="mailto:hello@nubela.co">hello@nubela.co</a>" and we'll get back to you ASAP.</p>
 ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ Does Proxycurl’s Third-Party Professional Social Network API Scrape Contact Information From Professional Social Network Profiles? ]]></title>
        <description><![CDATA[ You have questions. We have answers. This time about contact information enrichment. ]]></description>
        <link>https://nubela.co/blog/does-proxycurls-linkedin-api-pull-contact-information-from-linkedin-profiles/</link>
        <guid isPermaLink="false">609a24d1418c82000107dbe2</guid>
        <category><![CDATA[ proxycurl ]]></category>
        <dc:creator><![CDATA[ Colton Randolph | Technical Writer ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2023/08/cr.jpg"/>
        <pubDate>Wed, 20 Mar 2024 17:15:00 +0800</pubDate>
        <media:content url="" medium="image"/>
        <content:encoded><![CDATA[ <p>No, we don't scrape contact information from Professional Social Network profiles.</p>
<p>However, we integrate our publicly scraped Professional Social Network dataset, [LinkDB](<a href="https://nubela.co/blog/linkdb-Professional">https://nubela.co/blog/linkdb-Professional</a> Social Network-dataset-with-people-and-company-profiles/), with other data sources, which allows us to provide a complete enrichment, including contact information.</p>
<p>Meaning we can typically still provide you with contact information for a given Professional Social Network, Twitter/X, or Facebook profile while using our API, <a href="https://proxycurl.com/?ref=nubela.co">Proxycurl</a>, despite not scraping contact information from Professional Social Network.</p>
<p>For example, it could be as simple as the following cURL query to our <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#people-api-person-profile-endpoint">Person Profile Endpoint</a>:</p>
<pre><code class="language-curl">curl \
    -G \
    -H "Authorization: Bearer Your_API_Key_Here" \
    'https://nubela.co/proxycurl/api/v2/Professional Social Network' \
    --data-urlencode 'Professional Social Network_profile_url=https://professionalsocialnetwork.com/in/johnrmarty/' \
    --data-urlencode 'personal_contact_number=include' \
    --data-urlencode 'personal_email=include' \
    --data-urlencode 'use_cache=if-present' \
    --data-urlencode 'fallback_to_cache=on-error'
</code></pre>
<p>To enrich a Facebook or Twitter user, you would change this query to use <code>facebook_profile_url</code> or <code>twitter_profile_url</code> instead of <code>Professional Social Network_profile_url</code>. You only need one identifier.</p>
<p>The above cURL query to our Person Profile Endpoint would return you:</p>
<ul>
<li><code>Profile picture URL</code>: Direct URL to the profile picture.</li>
<li><code>Background cover image URL</code>: Direct URL to the background cover image.</li>
<li><code>First Name, last Name</code>: Name of the individual.</li>
<li><code>Follower count</code>: The number of followers the individual has.</li>
<li><code>Occupation</code>: Current job title and employer.</li>
<li><code>Headline</code>: Professional headline as listed on Professional Social Network.</li>
<li><code>Summary</code>: A brief overview of the professional's background, achievements, and goals.</li>
<li><code>Country, city, state</code>: Location details.</li>
<li><code>Company Name</code>: The name of the company where the individual worked.</li>
<li><code>Company Professional Social Network profile URL</code>: Direct URL to the company's Professional Social Network page.</li>
<li><code>Title</code>: Job title held during the tenure at the company.</li>
<li><code>Description</code>: Description of the role and responsibilities.</li>
<li><code>Start and end dates</code>: The duration of the employment.</li>
<li><code>School Name</code>: The name of the educational institution.</li>
<li><code>School Professional Social Network profile URL</code>: Direct URL to the institution's Professional Social Network page.</li>
<li><code>Birth date</code>: The birthdate of the user.</li>
<li><code>Degree name and field of study</code>: Specifics of the degree earned.</li>
<li><code>Start and end dates</code>: The duration of the educational program.</li>
<li><code>Languages</code>: Languages spoken by the individual.</li>
<li><code>Certifications</code>: Any certifications that the individual has obtained.</li>
<li><code>Volunteer work</code>: Volunteer positions held, including the organization and the role.</li>
<li><code>Projects</code>: Significant projects that the individual has contributed to, including a description and URL if applicable.</li>
<li><code>Recommendations</code>: Testimonials from colleagues, clients, or employers that underscore the individual's professional capabilities.</li>
<li><code>People also viewed</code>: Other Professional Social Network profiles that are frequently viewed alongside this individual's profile.</li>
<li><code>Groups</code>: Professional Social Network groups that the individual is a part of, providing insight into their professional interests and affiliations.</li>
<li><code>Interests</code>: A list of interests the user has.</li>
<li><code>Personal emails</code>: A list of personal emails associated with a given identifier.</li>
<li><code>Personal numbers</code>: A list of personal numbers associated with a given identifier.</li>
</ul>
<p>If you want to return other social media identifiers (such as for messaging), our <code>github_profile_id</code>, <code>facebook_profile_id</code>, and <code>twitter_profile_id</code> parameters will accomplish that with our Person Profile Endpoint.</p>
<p>Please note that any of the above enrichment parameters, including <code>personal_contact_number</code> and <code>personal_email</code> will cost 1 additional credit per successful result returned. For a full breakdown of credit usage costs, <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#people-api-person-profile-endpoint">view our documentation here</a>.</p>
<h2 id="finding-work-email-addresses">Finding work email addresses</h2>
<p>To enrich a profile with a work email, you'll need to use our <a href="https://nubela.co/proxycurl/docs?shell&ref=nubela.co#contact-api-work-email-lookup-endpoint">Work Email Lookup Endpoint</a>.</p>
<p>The main difference is that it functions via webhooks and a push mechanism. For demonstration purposes, you can use <a href="https://webhook.site/?ref=nubela.co">webhook.site</a> to set up a quick and easy webhook.</p>
<p>Here's how pulling a work email would look via a simple cURL command and a webhook.site webhook:</p>
<pre><code class="language-curl">curl \
    -G \
    -H "Authorization: Bearer Your_API_Key_Here" \
    'https://nubela.co/proxycurl/api/Professional Social Network/profile/email' \
    --data-urlencode 'Professional Social Network_profile_url=https://sg.professionalsocialnetwork.com/in/williamhgates' \
    --data-urlencode 'callback_url=https://webhook.site/110ddbc3-d0a2-424a-b011-1cc36302a7f3'
</code></pre>
<p>Which returns the following result:</p>
<pre><code class="language-json">{"email": "bill@gatesfoundation.org", "status": "email_found", "profile_url": "https://www.professionalsocialnetwork.com/in/williamhgates"}
</code></pre>
<h2 id="more-about-our-contact-api">More about our Contact API</h2>
<p>We also offer our respective <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#contact-api">Contact API</a> endpoints which may be useful, particularly if you have no interest in general enrichment and only need contact information:</p>
<ul>
<li><a href="https://nubela.co/proxycurl/docs?ref=nubela.co#contact-api-personal-email-lookup-endpoint">Personal Email Lookup Endpoint</a></li>
<li><a href="https://nubela.co/proxycurl/docs?ref=nubela.co#contact-api-personal-contact-number-lookup-endpoint">Personal Contact Number Lookup Endpoint</a></li>
</ul>
<h2 id="create-your-proxycurl-account">Create your Proxycurl account</h2>
<p>Between our Personal Profile Endpoint, including our additional contact enrichment parameters available for it, as well as our Work Email Lookup Endpoint, Personal Email Lookup Endpoint, and Personal Contact Numer Lookup Endpoint, you have several options for contact information enrichment.</p>
<p>If that interests you, <a href="https://nubela.co/proxycurl/auth/register?ref=nubela.co">you can create your Proxycurl account here</a>. Upon account creation, you'll receive 10 free credits to test out a few queries.</p>
<p><strong>P.S.</strong> For more information on our billing policy and pricing, <a href="https://nubela.co/proxycurl/pricing?ref=nubela.co">you can review our API pricing page here</a>.</p>
 ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ I’d Like to Cancel My Plan, Do I Have to Incur Any Cancellation Fee? ]]></title>
        <description><![CDATA[ Short answer, yes.


Long answer,



It depends on the plan you are on


There are three types of plans Proxycurl offers:


 1. Annual Plan, billed monthly
 2. Annual Plan, billed annually
 3. Pay-as-you-go, ala-carte credit purchase


The 2nd and 3rd plan types won&#39;t be the content of discussion ]]></description>
        <link>https://nubela.co/blog/subscription-plan-cancellation/</link>
        <guid isPermaLink="false">65f2bbadada96c0001a0547d</guid>
        <category><![CDATA[ faq ]]></category>
        <dc:creator><![CDATA[ Joseph Lim | Head of Marketing ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2023/03/Screenshot-2023-03-13-at-5.30.12-PM-min.png"/>
        <pubDate>Tue, 19 Mar 2024 13:30:27 +0800</pubDate>
        <media:content url="" medium="image"/>
        <content:encoded><![CDATA[ <p>Short answer, yes.</p>
<p>Long answer,</p>
<h2 id="it-depends-on-the-plan-you-are-on">It depends on the plan you are on</h2>
<p>There are <a href="https://nubela.co/proxycurl/pricing?ref=nubela.co">three types of plans Proxycurl offers</a>:</p>
<ol>
<li>Annual Plan, billed monthly</li>
<li>Annual Plan, billed annually</li>
<li>Pay-as-you-go, ala-carte credit purchase</li>
</ol>
<p>The 2nd and 3rd plan types won't be the content of discussion here because you would've already made payment before you get on the plans.</p>
<p>For the 1st plan - the <em>Annual Plan, billed monthly</em> - yes there'll be cancellation fees, <strong>amounting to the remaining month(s) of the plan left unpaid</strong>.</p>
<p>This plan involves a 12-month contract, with a monthly billing frequency. Therefore if a customer would like to cancel their subscription plan i.e. rescind the contract, this'll be the cancellation fee involved.</p>
<h2 id="more-details-on-the-annual-billed-monthly-plans">More details on the <em>Annual, billed monthly Plans</em></h2>
<p>When you're subscribing to a new <em>Annual Plan that is billed monthly</em> in your dashboard, you'll see this option at the bottom that states the annual commitment required for these Plans.</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/03/SCR-20240314-pfjz.png" class="kg-image" alt="The checkbox needed to be ticked off to proceed with the next step. " loading="lazy" width="1257" height="720"><figcaption><span style="white-space: pre-wrap;">Screenshot of what you'll see in your dashboard</span></figcaption></figure><p>The checkbox needed to be ticked off to proceed with the next step.</p>
<h2 id="need-to-talk-to-someone">Need to talk to someone?</h2>
<p>We presume about our plans and products? Email us at <a href="mailto:hello@nubela.co">hello@nubela.co</a>. We'll respond to you very quickly.</p>
 ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ LinkDB: A Comprehensive Professional Social Network Dataset of Over 485 Million People and Company Profiles ]]></title>
        <description><![CDATA[ Skip the web scraping team, proxies, Professional Social Network accounts, and beyond. Just grab our B2B dataset instead. ]]></description>
        <link>https://nubela.co/blog/linkdb-linkedin-dataset-with-people-and-company-profiles/</link>
        <guid isPermaLink="false">65e25fa4ada96c0001a04f77</guid>
        <category><![CDATA[ linkdb ]]></category>
        <dc:creator><![CDATA[ Colton Randolph | Technical Writer ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2023/08/cr.jpg"/>
        <pubDate>Mon, 18 Mar 2024 11:43:00 +0800</pubDate>
        <media:content url="" medium="image"/>
        <content:encoded><![CDATA[ <p>At the time of posting this article, <a href="https://nubela.co/proxycurl/linkdb?ref=nubela.co">LinkDB</a> has 485,373,254 public Professional Social Network profiles, to be specific. By the time you're reading this, it's even more.</p>
<p>Professional Social Network is by far the world's largest professional social media site, and by virtue, the world's largest source of B2B data. If you can tap into its B2B dataset, there are many different interesting things you can do with it.</p>
<p>Anywhere from <a href="https://nubela.co/blog/the-vc-playbook-proven-methods-for-identifying-and-securing-promising-startups-first/">finding prime investment opportunities</a>, to training AI models, or <a href="https://nubela.co/blog/the-blueprint-to-building-a-successful-sales-prospecting-application/">building the next best SaaS application</a>, and beyond.</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/03/Artboard_2.png" class="kg-image" alt="common use cases of linkdb" loading="lazy" width="2048" height="1040"><figcaption><span style="white-space: pre-wrap;">LinkDB acts as a data foundation for all kinds of B2B applications.</span></figcaption></figure><p>But the problem is Professional Social Network doesn't make it very easy to extract data from their platform, even if you're willing to pay for it. They want to gatekeep it and use it to power their own tools such as Professional Social Network Recruiter and Sales Navigator instead.</p>
<p>Thus, a need for things like [Professional Social Network scrapers](<a href="https://nubela.co/blog/reviewing-top-Professional">https://nubela.co/blog/reviewing-top-Professional</a> Social Network-scraping-api-services/)--but scraping Professional Social Network is never a hassle-free experience. You'll constantly be fixing things and it requires a dedicated web scraping team to scale. This often doesn't make sense for many businesses.</p>
<p>Which is exactly why we created LinkDB. It makes acquiring B2B data easy so that you can focus on implementing the data, rather than acquiring it.</p>
<h1 id="download-a-linkdb-sample">Download a LinkDB sample</h1>
<p>We're big believers in not just telling, but showing.</p>
<p>So, if you're interested in downloading either a company or profile LinkDB sample (there are 10,000 real profiles in either export), you can do so below:</p>
<p></p><form class="stylized-form" action="https://sendy.nubela.co/subscribe" method="POST" accept-charset="utf-8">
	<label for="name">Enter your first name:</label><br>
	<input type="text" name="name" id="name">
	<br>
    <br>
	<label for="email">Enter your email:</label><br>
	<input type="email" name="email" id="email"><br><div style="display:none;">
	<label for="hp">HP</label><br>
	<input type="text" name="hp" id="hp">
	</div>
	<input type="hidden" name="list" value="2H6Aq3qr76376365J1PrK3JY763g">
	<input type="hidden" name="subform" value="yes">
    <br>
    <input type="submit" name="submit" id="submit" value="Download a LinkDB sample">
</form><p>Just check your email shortly after submitting the form. This will help you follow along and get the most out of this article.</p>
<p>Continuing on:</p>
<h2 id="what-kind-of-data-does-linkdb-contain">What kind of data does LinkDB contain?</h2>
<p>LinkDB contains data on both people and companies.</p>
<h3 id="linkdbs-people-dataset">LinkDB's people dataset</h3>
<p>You can expect to receive the following data points as part of our people dataset:</p>
<ul>
<li>Articles related to the profiles, featuring titles, publication dates, and summaries.</li>
<li>Activities such as posts, comments, and engagements tied to profiles.</li>
<li>Certifications individuals hold, listing names, issuing bodies, and acquisition dates.</li>
<li>Courses completed, noting course titles, institutions, and completion dates.</li>
<li>Educational background with degrees, institutions, and years attended.</li>
<li>Professional experience outlining job titles, employers, tenure, and roles.</li>
<li>Group memberships detailing group names and individual roles.</li>
<li>Honors and Awards received, with names, issuers, and dates.</li>
<li>Language proficiencies listing languages and proficiency levels.</li>
<li>Organization affiliations beyond employment, including names and roles.</li>
<li>Projects detailing titles, descriptions, durations, and roles.</li>
<li>Publications authored, including titles, dates, and co-authors.</li>
<li>Recommendations given or received, with texts and relationship contexts.</li>
<li>Similar profile names for disambiguation.</li>
<li>Test scores listing test names, scores, and dates.</li>
<li>Volunteering experiences including roles, organizations, and durations.</li>
<li>Core profile information such as names, titles, and summaries.</li>
</ul>
<p>The core profile schema consists of:</p>
<ul>
<li><code>id</code>: Unique identifier for each profile.</li>
<li><code>profile_picture_url</code>: Link to the profile's image.</li>
<li><code>city</code>: Base city of the profile owner.</li>
<li><code>country</code>: Country code and full name, reflecting the profile's national affiliation.</li>
<li><code>first_name</code>: The first name name of the profile owner.</li>
<li><code>last_name</code>: The last name name of the profile owner.</li>
<li><code>headline</code>: The headline of the profile.</li>
<li><code>summary</code>: The summary of the profile.</li>
<li><code>state</code>: State or region for more precise geographical detail.</li>
<li><code>background_cover_image_url</code>: Link to the profile's background image.</li>
<li><code>birth_date</code>: Profile owner's birth date.</li>
<li><code>connections</code>: Network size.</li>
<li><code>follower_count</code>: The number of followers of the account.</li>
<li><code>occupation</code>: Current job title.</li>
<li><code>crawler_name</code>: Source of data collection.</li>
</ul>
<h3 id="linkdbs-company-dataset">LinkDB's company dataset</h3>
<p>For companies, the core schema consists of:</p>
<ul>
<li><code>html_url</code>: A URL to the company's profile page.</li>
<li><code>name</code>: The name of the company.</li>
<li><code>description</code>: A detailed description of what the company is about.</li>
<li><code>tagline</code>: Not provided, but would be a succinct statement representing the company's mission or ethos.</li>
<li><code>website</code>: The URL to the company's website.</li>
<li><code>industry</code>: The sector in which the company operates.</li>
<li><code>founded_year</code>: The year the company was established.</li>
<li><code>profile_pic_url</code>: A URL to the company's logo or profile picture.</li>
<li><code>background_cover_image_url</code>: A URL to a background or cover image for the company's profile.</li>
<li><code>search_id</code>: A unique search identifier, possibly related to the database or API query.</li>
<li><code>company_type</code>: Indicates the legal structure of the company.</li>
<li><code>company_size_on_Professional Social Network</code>: The number of employees listed on Professional Social Network.</li>
<li><code>company_size_min</code>: The minimum number of employees in the company.</li>
<li><code>company_size_max</code>: The maximum number of employees in the company.</li>
<li><code>follower_count</code>: The number of followers the company has.</li>
<li><code>Professional Social Network_internal_id</code>: A unique identifier within Professional Social Network.</li>
<li><code>email_pattern_probed</code>: The pattern used for company email addresses.</li>
<li><code>domain</code>: The internet domain name for the company.</li>
</ul>
<h1 id="what-format-does-linkdb-come-in">What format does LinkDB come in?</h1>
<p>When dealing with large datasets, especially those containing complex nested structures like those found in Professional Social Network profiles, the choice of file format becomes rather important.</p>
<p>Traditional formats like CSV or JSON might suffice for smaller datasets, but they quickly become inefficient for larger ones.</p>
<p>This is where <a href="https://parquet.apache.org/?ref=nubela.co">Apache Parquet</a> comes into play.</p>
<h2 id="introducing-parquet">Introducing Parquet</h2>
<p>Parquet is a columnar storage format that's optimized for big data processing. It differs from row-based storage formats by storing data column-wise instead of sequentially by row.</p>
<p>This columnar storage allows for efficient compression and encoding schemes that are tailored to the data type of each column, significantly improving query performance. This is especially beneficial for analytics workloads, which typically only access a subset of columns. One of the key features of Parquet is predicate pushdown, which enables query engines to skip entire chunks of data based on filter conditions, thereby speeding up query execution.</p>
<p>Additionally, Parquet files contain embedded schema information, making them self-describing and capable of evolving schemas without breaking compatibility.</p>
<p>This flexibility is complemented by cross-platform compatibility, as Parquet files can be read and written by various big data processing frameworks, such as Apache Spark, Apache Hive, and Apache Impala, ensuring high interoperability.</p>
<h2 id="why-use-parquet-for-linkdb">Why use Parquet for LinkDB?</h2>
<p>Given LinkDB's extensive dataset consists of over 485 million profiles, choosing the right file format is crucial for efficient data storage, processing, and analysis.</p>
<p>Parquet's columnar storage and compression capabilities make it an ideal choice for handling large volumes of structured data, such as the diverse range of attributes found in Professional Social Network profiles. Also, Parquet's support for schema evolution simplifies data management and facilitates seamless integration with evolving data models.</p>
<p>The long story short is by storing LinkDB's data in the Parquet format, we ensure optimal performance and scalability for various use cases, from basic profile searches to complex analytics and machine learning tasks.</p>
<h2 id="how-to-use-linkdb">How to use LinkDB</h2>
<p>Personally, I'm experienced with Python and prefer it, so we'll be using it in the following examples of interpreting this dataset, but of course, you could use your language of choice. Python does work pretty well for data analytics, though.</p>
<p>By using Python, <a href="https://pandas.pydata.org/?ref=nubela.co">pandas</a>, and <a href="https://pypi.org/project/fastparquet/?ref=nubela.co">fastparquet</a>, we'll have an intuitive framework for performing operations similar to those in SQL, but with more flexibility and efficiency, particularly when dealing with Parquet files.</p>
<p>That said, the first step in doing anything with this dataset is installing a Python integrated development environment (IDE) as well as the libraries required to intrepret it.</p>
<h2 id="installing-your-tools">Installing your tools</h2>
<h3 id="pycharm-your-python-ide">PyCharm: your Python IDE</h3>
<p>While any integrated development environment (IDE) will work, PyCharm is my Python IDE of choice. It provides coding assistance, debugging, and many other features to make Python development easier and more efficient.</p>
<p><a href="https://www.jetbrains.com/pycharm/?ref=nubela.co">You can download it here for free</a> (with the community edition).</p>
<h3 id="create-a-new-project">Create a new project</h3>
<p>After installing PyCharm, the next step is to create a new project and set up a virtual environment. This environment is crucial for managing project-specific dependencies without affecting other Python projects or the system-wide Python installation.</p>
<p>So open up PyCharm and select "File" then "New Project". Specify the project location and give your project a name.</p>
<p>In the new project window, ensure that the "Virtualenv" option is selected under the interpreter section. PyCharm will automatically suggest a location for the new virtual environment:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/03/py.png" class="kg-image" alt="Creating a new project in PyCharm" loading="lazy" width="1600" height="1300"><figcaption><span style="white-space: pre-wrap;">Creating a new project in PyCharm</span></figcaption></figure><h3 id="install-pandas-and-fastparquet">Install pandas and fastparquet</h3>
<p>With your project set up, you're now ready to install pandas and fastparquet. These libraries will be installed within the virtual environment you've created for your project.</p>
<p>You'll find the "Terminal" tab at the bottom of the PyCharm window. Click it to open the command line within PyCharm.</p>
<p>Then type the following command:</p>
<pre><code class="language-python3">pip3 install pandas
</code></pre>
<p>And after installing pandas, you can install fastparquet by typing the following command:</p>
<pre><code class="language-python3">pip3 install fastparquet
</code></pre>
<p>(<strong>Note:</strong> fastparquet might require additional dependencies like numpy and thrift. The <code>pip</code> install command should handle these automatically.)</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/03/terminalpy.png" class="kg-image" alt="Installing fastparquet within PyCharm" loading="lazy" width="2934" height="693"><figcaption><span style="white-space: pre-wrap;">Installing fastparquet within PyCharm</span></figcaption></figure><p>Also, consider installing <code>python-snappy</code>. This is optional but can be beneficial for working with compressed Parquet files.</p>
<p>You can install it with:</p>
<pre><code class="language-python3">pip3 install python-snappy
</code></pre>
<h2 id="verifying-the-installation">Verifying the installation</h2>
<p>After installation, you can verify that pandas and fastparquet are correctly installed by importing them in a PyCharm Python file:</p>
<pre><code class="language-python">import pandas as pd
import fastparquet
</code></pre>
<p>If no errors appear, congratulations! You've successfully set up your environment to work with pandas and fastparquet in PyCharm.</p>
<p>Now let me show you a few examples of using and interpreting LinkDB data:</p>
<h2 id="finding-and-displaying-linkdb-data">Finding and displaying LinkDB data</h2>
<p>Consider the common task of executing a basic profile search, which in the SQL world, would involve a simple <code>SELECT</code> statement to fetch essential information.</p>
<p>In the pandas realm, this translates to reading the Parquet file into a DataFrame and selecting the required columns with just a few lines of code.</p>
<p>For example, using some simple Python and pandas, here's how you could load up a given Parquet file and return the list of names enclosed within:</p>
<pre><code class="language-python">import pandas as pd

# Load the Parquet file
df = pd.read_parquet('path_to_your_parquet_file.parquet')

# Select the first_name and last_name columns and display the first 10 rows
print(df[['first_name', 'last_name']].head(10))
</code></pre>
<p>That would return a result such as follows:</p>
<figure class="kg-card kg-image-card"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/03/pandas.png" class="kg-image" alt="" loading="lazy" width="2000" height="1250"></figure><p>(<strong>Note:</strong> You can download this sample file [above](<a href="https://nubela.co/blog/linkdb-Professional">https://nubela.co/blog/linkdb-Professional</a> Social Network-dataset-with-people-and-company-profiles/#download-a-linkdb-sample).)</p>
<p>We could also pull and display anything else contained in the schema above.</p>
<p>For example, if we edit the above script accordingly:</p>
<pre><code class="language-python">import pandas as pd

# Load the Parquet file
df = pd.read_parquet('filtered-profile-0.parquet')

# Adjust pandas display settings
pd.set_option('display.max_columns', None)  # Ensure all columns are shown
pd.set_option('display.width', None)  # Automatically adjust display width

# Select the specified columns and display the first 10 rows
columns_to_select = [
    'id',
    'profile_pic_url',
    'first_name',
    'last_name',
    'city',
    'country',
    'headline',
    'summary',
    'state',
    'background_cover_image_url',
    'birth_date',
    'connections',
    'follower_count',
    'occupation',
    'crawler_name'
]

print(df[columns_to_select].head(10))
</code></pre>
<p>You'll see the following result returned instead:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/03/moreinfo.png" class="kg-image" alt="The new result with more information returned in PyCharm" loading="lazy" width="2000" height="1250"><figcaption><span style="white-space: pre-wrap;">The new result with more information returned in PyCharm</span></figcaption></figure><p>The list of course keeps going, returning any of the information we have available for the requested available data points contained within the dataset.</p>
<p>Now let's say you work for a recruiting firm, or run a HR tech SaaS and have a specific need to query LinkDB, searching for a specific individual that fit's a role.</p>
<h2 id="searching-for-software-engineers-in-san-francisco">Searching for software engineers in San Francisco</h2>
<p>Using some Python, we can specifically target and search for variables contained in <code>occupation</code> and <code>city</code>, here's how:</p>
<pre><code class="language-python">import pandas as pd

# Load the Parquet file
df = pd.read_parquet('filtered-profile-0.parquet')

# Adjust pandas display settings
pd.set_option('display.max_columns', None)  # Ensure all columns are shown
pd.set_option('display.width', None)  # Automatically adjust display width

# Filter for software engineers in cities containing "San Francisco"
software_engineers_sf = df[df['occupation'].str.contains('Software Engineer', case=False) &amp;
                           df['city'].str.contains('San Francisco', case=False)]

# Select and display the specified columns
columns_to_select = [
    'first_name',
    'last_name',
    'occupation'
]

print(software_engineers_sf[columns_to_select])
</code></pre>
<p>It returns us a bunch of results of software engineers contained in San Francisco:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/03/pycharmresults.png" class="kg-image" alt="Results returned in PyCharm" loading="lazy" width="2000" height="1250"><figcaption><span style="white-space: pre-wrap;">Results returned in PyCharm</span></figcaption></figure><p>Let's move onto something a little more specific:</p>
<h2 id="searching-for-apple-employees">Searching for Apple employees</h2>
<p>LinkDB contains work experience, which is contained in <code>filtered-profile_experience-0.parquet</code>--using this work experience along with the vanity IDs of any given profile, we can match these experiences to the profiles contained within <code>filtered-profile-0.parquet</code>.</p>
<p>And by doing so, we can search for interesting profiles that meet specific criteria, like working for a company.</p>
<p>That said, using some Python, here's how we could look for Apple employees:</p>
<pre><code class="language-python">import pandas as pd

# Load the profiles DataFrame from the Parquet file
profiles_df = pd.read_parquet('filtered-profile-0.parquet')
# Load the experience DataFrame from the Parquet file
experience_df = pd.read_parquet('filtered-profile_experience-0.parquet')

# Ensure both 'id' columns are strings to match correctly
profiles_df['id'] = profiles_df['id'].astype(str)
experience_df['profile_id'] = experience_df['profile_id'].astype(str)

# Check columns in both DataFrames before merging
print("Profiles DataFrame Columns:", profiles_df.columns)
print("Experience DataFrame Columns:", experience_df.columns)

# Perform the merge
merged_df = pd.merge(profiles_df, experience_df, how='inner', left_on='id', right_on='profile_id')

# Filter for Apple-related employees, excluding "Applebee's"
apple_related_employees = merged_df[
    merged_df['company'].str.contains('Apple', case=False, na=False) &amp;
    ~merged_df['company'].str.contains("Applebee's", case=False, na=False)
]

# Select columns to include from both original DataFrames
columns_to_include = [
    'id', 'first_name', 'last_name', 'city', 'country',
    'headline', 'state', 'occupation',  # From profiles_df
    'starts_at', 'ends_at', 'company', 'company_profile_url',
    'title', 'location', 'description',  # From experience_df
    'profile_id', 'company_urn', 'logo_url'
]

# Ensure columns exist in merged_df before selection
final_columns = [col for col in columns_to_include if col in merged_df.columns]
final_results = apple_related_employees[final_columns]

# Display count and preview
print(f"Count: {len(final_results)}")
print(final_results.head())

# Export to CSV
final_results.to_csv('apple_related_employees_detailed.csv', index=False)
print("Export completed: 'apple_related_employees_detailed.csv'")```</code></pre>
<p>In the above example, the script searches for anyone that contains "Apple" in their work history, excluding the common American business named "Applebee's"--if you wanted, you could also require an exact match.</p>
<p>You would just slightly alter the above script, such as following:</p>
<pre><code class="language-python"># Filter specifically for employees of Apple Inc., ensuring exact match
apple_employees = merged_df[
    (merged_df['company'] == 'Apple') | (merged_df['company'] == 'Apple Inc.')
]
</code></pre>
<p>After the script stops searching for Apple employees, it then prints the count, displaying a sample of data, and exports it to a <code>.csv</code> file named <code>apple_related_employees_detailed.csv</code> contained within the same directory of the script.</p>
<p>If you wanted, you could export this to a Parquet file by editing the end:</p>
<pre><code class="language-python"># Export to Parquet
final_results.to_parquet('apple_employees_detailed.parquet', index=False)
print("Export completed: 'apple_employees_detailed.parquet'")
</code></pre>
<h1 id="building-a-web-application-with-linkdb">Building a web application with LinkDB</h1>
<p>Now that you know a bit more about the logic behind searching for profiles, we can create a basic web application for searching for and exporting interesting data.</p>
<p>To do so, we'll use <a href="https://flask.palletsprojects.com/en/3.0.x/?ref=nubela.co">Flask</a>, which can be installed by running <code>pip3 install flask</code> in PyCharm's command line.</p>
<p>Then create a new folder for your project to go into, and we'll need to create a few files.</p>
<p>First, you'll create <code>app.py</code>, which needs the following inside:</p>
<pre><code class="language-python">from flask import Flask, request, render_template, make_response
import pandas as pd

app = Flask(__name__)

# Load the DataFrames (consider doing this on demand or caching if they're large)
profiles_df = pd.read_parquet('filtered-profile-0.parquet')
experience_df = pd.read_parquet('filtered-profile_experience-0.parquet')
merged_df = pd.merge(profiles_df, experience_df, how='inner', left_on='id', right_on='profile_id')


@app.route('/', methods=['GET', 'POST'])
def index():
    if request.method == 'POST':
        company_name = request.form['company_name']
        filtered_df = merged_df[merged_df['company'].str.contains(company_name, case=False, na=False)]

        # Generate HTML table and strip leading/trailing whitespace
        html_table = filtered_df.to_html(classes='data', escape=False).strip()

        return render_template('results.html', tables=[html_table], titles=filtered_df.columns.values, company_name=company_name)
    return render_template('index.html')


@app.route('/export/&lt;company_name&gt;', methods=['GET'])
def export(company_name):
    filtered_df = merged_df[merged_df['company'].str.contains(company_name, case=False, na=False)]

    # Clean each string column in the DataFrame before exporting
    for column in filtered_df.columns:
        if filtered_df[column].dtype == 'object':
            filtered_df[column] = filtered_df[column].apply(
                lambda x: x.replace('\n', '').replace('\'', '') if isinstance(x, str) else x)

    csv = filtered_df.to_csv(index=False)
    response = make_response(csv)
    response.headers['Content-Disposition'] = f'attachment; filename={company_name}_employees.csv'
    response.headers['Content-Type'] = 'text/csv'
    return response


if __name__ == '__main__':
    app.run(debug=True)
</code></pre>
<p>Then within that same folder, create another folder named <code>templates</code> and create two new <code>.html</code> files within it, the first being named <code>index.html</code>:</p>
<pre><code class="language-html">&lt;!DOCTYPE html&gt;
&lt;html&gt;
&lt;head&gt;
    &lt;title&gt;Company Search&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
    &lt;h2&gt;Search for Company Employees&lt;/h2&gt;
    &lt;form method="post"&gt;
        &lt;input type="text" name="company_name" placeholder="Enter Company Name"&gt;
        &lt;input type="submit" value="Search"&gt;
    &lt;/form&gt;
&lt;/body&gt;
&lt;/html&gt;
</code></pre>
<p>And the second being named <code>results.html</code>:</p>
<pre><code class="language-html">&lt;!DOCTYPE html&gt;
&lt;html&gt;
&lt;head&gt;
    &lt;title&gt;Search Results&lt;/title&gt;
    &lt;style&gt;
        table {
            width: 100%;
            border-collapse: collapse;
        }
        th, td {
            border: 1px solid #ddd;
            padding: 8px;
            text-align: left;
        }
        th {
            background-color: #f2f2f2;
        }
        tr:nth-child(even){background-color: #f9f9f9;}
        .button {
            display: inline-block;
            padding: 10px 20px;
            font-size: 16px;
            cursor: pointer;
            text-align: center;
            text-decoration: none;
            color: #fff;
            background-color: #007bff;
            border: none;
            border-radius: 5px;
        }
        .button:hover {
            background-color: #0056b3;
        }
    &lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
    &lt;h2&gt;Search Results for "{{ company_name }}"&lt;/h2&gt;
    {% if tables %}
        &lt;div&gt;{{ tables|safe }}&lt;/div&gt;
        &lt;!-- Convert link to button --&gt;
        &lt;a href="{{ url_for('export', company_name=company_name) }}" class="button"&gt;Export to CSV&lt;/a&gt;
    {% else %}
        &lt;p&gt;No results found.&lt;/p&gt;
    {% endif %}
    &lt;br&gt;
    &lt;br&gt;
    &lt;!-- Convert link to button for consistency, if desired --&gt;
    &lt;a href="/" class="button"&gt;New Search&lt;/a&gt;
&lt;/body&gt;
&lt;/html&gt;
</code></pre>
<p>Finally, move your two Parquet files <code>filtered-profile-0.parquet</code> and<br>
<code>filtered-profile_experience-0.parquet</code> into the same folder as <code>app.py</code> is contained in, as we'll use these as our database, and then right click <code>app.py</code> within PyCharm and click "Run".</p>
<p>Then visit <code>http://127.0.0.1:5000/</code> within your browser:</p>

<!--kg-card-begin: html-->
<img src="https://res.cloudinary.com/dpuhdckou/image/upload/v1715203953/webpython_1_lfnxy4.gif" alt="GIF demonstrating the use of a Flask Python web application" />
</a>

<!--kg-card-end: html-->
<p>Not bad! It allows you to search for employees of any given company, and export a <code>.csv</code> of the results. Of course it could use a bit of data cleaning, and be made a little more prettier, but it works as a foundation for a lot more to be built upon.</p>
<p>Also, typically most SaaS applications would also probably opt for <a href="https://www.djangoproject.com/?ref=nubela.co">Django</a> over Flask as well. <a href="https://nubela.co/blog/the-blueprint-to-building-a-successful-sales-prospecting-application/">LinkDB powers all kinds of B2B prospecting applications</a> that you see on the market today in the background.</p>
<h1 id="is-linkdb-legal">Is LinkDB legal?</h1>
<p>Yes. In the past, cases like [hiQ v. Professional Social Network](<a href="https://nubela.co/blog/is-Professional">https://nubela.co/blog/is-Professional</a> Social Network-scraping-legal/) have certified that it's legal to scrape publicly available profiles. [LinkDB's entire dataset consists of public profiles](<a href="https://nubela.co/blog/what-is-the-difference-between-Professional">https://nubela.co/blog/what-is-the-difference-between-Professional</a> Social Network-public-profiles-vs-Professional Social Network-private-profiles-with-python-code-samples/), so we're fully compliant.</p>
<p>This was even further cemented in the <a href="https://nubela.co/blog/meta-lost-the-scraping-legal-battle-to-bright-data/">Meta vs. Bright Data case</a>, where Meta later ended up dropping their case.</p>
<p>The conclusion, thus far, as established by legal precedent in the United States is that these social media platforms can't own anything that belongs in the public domain.</p>
<p>Quoting <a href="https://ia904702.us.archive.org/19/items/gov.uscourts.ded.81291/gov.uscourts.ded.81291.12.0.pdf?ref=nubela.co">Bright Data's motion</a>:</p>
<blockquote>
<p>This case is all about public data: whether the public has the right to search public information, or whether Meta can use the courts as a tool to eviscerate that right, even where Meta does not own the data at issue and has no property rights in it...</p>
</blockquote>
<p>They continued on:</p>
<blockquote>
<p>If Bright Data loses this case, the losers are not just Bright Data but the public, whose rights are being taken away.</p>
</blockquote>
<p>This works out well for the scraping community because many Professional Social Network users want their information public as it acts as a resume.</p>
<p>Then on the flipside, Professional Social Network wants profile information public so that it can be indexed in search engines (they try to prevent scraping and still accomplish this with complex authwalls that allow search engine crawlers to still see the data, but not visitors who aren't logged in).</p>
<p>So much of the information available on Professional Social Network is in fact publicly available, and therefore legal to scrape. Professional Social Network cannot own someone's name, or where they work, or what they do, etc. especially when their intentions of being on the site are to network and get their information out there.</p>
<h1 id="how-fresh-is-linkdbs-data">How fresh is LinkDB's data?</h1>
<p>Very fresh. <a href="https://proxycurl.com/?ref=nubela.co">We also operate an API named Proxycurl that's partially powered by LinkDB's dataset</a>, and further enriched with external sources.</p>
<p>Everytime someone requests information on a profile with Proxycurl, we update LinkDB's dataset in the backend. In essence, this means LinkDB is constantly being updated to refresh profiles that people care about.</p>
<p>In terms of actually receiving fresh exports of our LinkDB, we offer quarterly updates, or in some special instances, we can offer monthly updates.</p>
<h1 id="how-much-does-linkdb-cost">How much does LinkDB cost?</h1>
<p>LinkDB is sold by country for people profiles, and globally for companies.</p>
<p>Here's a breakdown of a few of our larger segments (these numbers are constantly growing as well):</p>
<table>
<thead>
<tr>
<th>Country</th>
<th>People Profiles</th>
<th>Company Profiles</th>
</tr>
</thead>
<tbody>
<tr>
<td>United States</td>
<td>258+M</td>
<td>5.9+M</td>
</tr>
<tr>
<td>India</td>
<td>25+M</td>
<td>865+K</td>
</tr>
<tr>
<td>United Kingdom</td>
<td>22+M</td>
<td>1.9+M</td>
</tr>
<tr>
<td>Brazil</td>
<td>17+M</td>
<td>522+K</td>
</tr>
<tr>
<td>Canada</td>
<td>13+M</td>
<td>417+K</td>
</tr>
<tr>
<td>France</td>
<td>11+M</td>
<td>1.0+M</td>
</tr>
<tr>
<td>Germany</td>
<td>8.9+M</td>
<td>1.0+M</td>
</tr>
<tr>
<td>Australia</td>
<td>8.4+M</td>
<td>453+K</td>
</tr>
<tr>
<td>Mexico</td>
<td>5.7+M</td>
<td>113+K</td>
</tr>
<tr>
<td>Italy</td>
<td>5.4+M</td>
<td>312+K</td>
</tr>
<tr>
<td>Spain</td>
<td>4.9+M</td>
<td>440+K</td>
</tr>
<tr>
<td>Netherlands</td>
<td>4.3+M</td>
<td>407+K</td>
</tr>
<tr>
<td>China</td>
<td>3.7+M</td>
<td>142+K</td>
</tr>
<tr>
<td>South Africa</td>
<td>3.4+M</td>
<td>151+K</td>
</tr>
</tbody>
</table>
<p>Our financing options are designed to fit various budgeting strategies, allowing for payments in monthly or quarterly installments.</p>
<p>The following are the costs of some of our most popular segments:</p>
<table>
<thead>
<tr>
<th>Offering</th>
<th>Data Profiles</th>
<th>Initial Cost</th>
<th>Quarterly Update Cost</th>
<th>Update Duration</th>
</tr>
</thead>
<tbody>
<tr>
<td>US People Profiles</td>
<td>258+M profiles</td>
<td>$45,000</td>
<td>$4,500</td>
<td>4 quarters</td>
</tr>
<tr>
<td>Per Country People Profiles</td>
<td>Varies</td>
<td>Starts from $3,000</td>
<td>Starts from $650</td>
<td>4 quarters</td>
</tr>
<tr>
<td>Global Companies</td>
<td>20+M profiles</td>
<td>$12,000</td>
<td>$2,000</td>
<td>4 quarters</td>
</tr>
<tr>
<td>All Data</td>
<td>465+M profiles + 20+M company profiles</td>
<td>$69,500</td>
<td>$9,000</td>
<td>4 quarters</td>
</tr>
</tbody>
</table>
<p>(<strong>Note:</strong> The quarterly update cost is optional and billed separately from the initial data access cost. To receive updates, a commitment from the start is required.)</p>
<h1 id="get-access-to-linkdb">Get access to LinkDB</h1>
<p>For more information about LinkDB, you can <a href="https://nubela.co/proxycurl/linkdb?ref=nubela.co">view our product page here</a>, or our<a href="https://nubela.co/proxycurl/linkdb/pricing?ref=nubela.co"> pricing page here</a>.</p>
<p>If you're interested in purchasing LinkDB, simply <a href="mailto:hello@nubela.co">send us an email to "hello@nubela.co"</a> and let us know which segments of LinkDB your interested in, and we'll follow up as soon as possible!</p>
<p>Also, if needed, we're happy to hop on a Google Meet call to discuss further, <a href="mailto:hello@nubela.co">just reach out</a>.</p>
<p><strong>P.S.</strong> Usually LinkDB is used for surfacing interesting profiles, and our API for enriching them (depends on latency requirements and use case), but you can still acccess all of the data contained within LinkDB through our API, <a href="https://proxycurl.com/?ref=nubela.co">Proxycurl</a>.</p>
 ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ How to Automate Professional Social Network Messaging (without Professional Social Network’s Messaging API) ]]></title>
        <description><![CDATA[ The idea of being able to programmatically message anyone on Professional Social Network, the world&#39;s largest social networking site, is quite appealing. But is it possible? ]]></description>
        <link>https://nubela.co/blog/automate-linkedin-messaging-without-api/</link>
        <guid isPermaLink="false">65c6a66186ccd600018f402c</guid>
        <category><![CDATA[ proxycurl ]]></category>
        <dc:creator><![CDATA[ Colton Randolph | Technical Writer ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2023/08/cr.jpg"/>
        <pubDate>Tue, 05 Mar 2024 10:37:38 +0800</pubDate>
        <media:content url="" medium="image"/>
        <content:encoded><![CDATA[ <p>The idea of being able to programmatically message anyone on Professional Social Network, the world's largest professional networking site, is quite appealing.</p>
<p>Unfortunately, while the [Professional Social Network Messages API](<a href="https://learn.microsoft.com/en-us/Professional?ref=nubela.co">https://learn.microsoft.com/en-us/Professional</a> Social Network/shared/integrations/communications/messages) does exist, it falls under the [Compliance API](<a href="https://learn.microsoft.com/en-us/Professional?ref=nubela.co">https://learn.microsoft.com/en-us/Professional</a> Social Network/compliance/compliance-api/overview), and to gain access to the Compliance API, you need to become a member of the Compliance Partner Program, which is quite heavily regulated.</p>
<p>Here's how Professional Social Network describes the requirements themselves:</p>
<blockquote>
<p>The Compliance Partner Program is a private and paid program where Professional Social Network provides access only to companies with use cases that meet our requirements. The requirement being that the organization or its customers should be FINRA / SEC registered.  The primary use case should be archiving and monitoring regulated member's (from financial institutions) posts and public correspondence as required for the organization to be compliant with FINRA &amp; SEC regulations.</p>
</blockquote>
<p>So if you're not FINRA / SEC registered, don't bother. The main use case should also be for archiving and monitoring as required by FINRA and SEC regulations, not for anything like sales or marketing.</p>
<p>Furthermore, the Professional Social Network Messages API has these additional ground rules:</p>
<ul>
<li>Your messages must be tied to specific user actions.</li>
<li>Your users must opt-in for messaging.</li>
<li>You can't give incentives for opting in to receive messages from you.</li>
<li>Your messages must be pure text. No styling of any kind.</li>
</ul>
<p>The above limitations would rule out about 99% of people, but, if you do happen to be one of 3 people in the world eligible for the Professional Social Network Messages API (I'm <em>kind of</em> joking), you can <a href="https://forms.office.com/pages/responsepage.aspx?id=v4j5cvGGr0GRqy180BHbR8-45gWDXSBCiG6crIdp2BFUMk5FSVdIVlZRMzM0WVMxTUlHSlM3VFBBSy4u&ref=nubela.co">apply for approval to the Compliance Partner Program here</a>.</p>
<p>On the other hand, if  you're in the majority that don't qualify for the Messages API, keep reading:</p>
<h1 id="alternative-solutions-to-the-professional-social-network-messages-api">Alternative solutions to the Professional Social Network Messages API</h1>
<p>While there are quite a few [Professional Social Network automation tools](<a href="https://nubela.co/blog/guide-to-Professional">https://nubela.co/blog/guide-to-Professional</a> Social Network-automation/) designed to unofficially automate various tasks, there are three main Professional Social Network automation tools designed entirely for messaging:</p>
<h2 id="1-dripify">1) Dripify</h2>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/02/dripify-no-uk.png" class="kg-image" alt="Dripify CRM's homepage" loading="lazy" width="2913" height="1507"><figcaption><span style="white-space: pre-wrap;">Dripify CRM's homepage</span></figcaption></figure><p>As the name would suggest, <a href="https://dripify.io/?ref=nubela.co">Dripify</a> focuses on "drip campaigns" which is just another way of saying complex outreach or if/then-based automation campaigns. Sometimes days, or weeks out, with varying paths possible depending on the prospects' actions (or lack of actions).</p>
<p>And it all functions via a simple web application:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/02/dripify-campaign.png" class="kg-image" alt="What a Dripify campaign looks like (Source: Dripify)" loading="lazy" width="1257" height="867"><figcaption><span style="white-space: pre-wrap;">What a Dripify campaign looks like (Source: Dripify)</span></figcaption></figure><p>It works quite well overall for Professional Social Network messaging automation and integrates with many different applications.</p>
<p>On Professional Social Network, [you can only message your 1st-degree connections](<a href="https://www.professionalsocialnetwork.com/help/Professional?ref=nubela.co">https://www.professionalsocialnetwork.com/help/Professional</a> Social Network/answer/a564261/Professional Social Network-messaging-overview), so you'll need to be connected first to send a message.</p>
<p>Luckily Dripify comes with a way to send connection requests via email to help circumvent what is normally approximately a 100 connection-per-week limit, which definitely comes in handy. Outside of that, it has a limit of 100 messages per day for a free Professional Social Network account or 150 messages per day for a paid Professional Social Network account.</p>
<p>Dripify's plans range from $59 per user per month to $99 per user per month.</p>
<h2 id="2-octopus-crm">2) Octopus CRM</h2>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/02/octo-no-uk.png" class="kg-image" alt="Octopus CRM's homepage" loading="lazy" width="2904" height="1338"><figcaption><span style="white-space: pre-wrap;">Octopus CRM's homepage</span></figcaption></figure><p>You could consider <a href="https://octopuscrm.io/?ref=nubela.co">Octopus CRM</a> Dripify's little brother in a sense. In fact, I'm honestly not sure if they're not owned by the same company.</p>
<p>But anyway, Octopus CRM does everything Dripify does in a simpler fashion, for less. Granted, it doesn't have as much automation complexity, so you are indeed getting less functionality.</p>
<p>Also, instead of operating via a web application, it operates via a Google Chrome extension:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/02/octo-msg.png" class="kg-image" alt="Octopus CRM's Professional Social Network messaging automation dashboard" loading="lazy" width="2920" height="1659"><figcaption><span style="white-space: pre-wrap;">Octopus CRM's Professional Social Network messaging automation dashboard</span></figcaption></figure><p>It supports sending connection requests via email, as well as supporting 100 messages per day on a free Professional Social Network account, or 150 per day on a paid Professional Social Network account.</p>
<p>Pricing for Octopus CRM ranges from $9.99 per month to $39.99 per month, so quite a bit more affordable than Dripify.</p>
<p>Overall, I think it's a great balance of simplicity and functionality for automating Professional Social Network messaging.</p>
<h2 id="3-expandi">3) Expandi</h2>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/02/expandi-min.png" class="kg-image" alt="Expandi's homepage" loading="lazy" width="2900" height="1651"><figcaption><span style="white-space: pre-wrap;">Expandi's homepage</span></figcaption></figure><p>Everything with <a href="https://expandi.io/?ref=nubela.co">Expandi</a> just works. And you don't have to click around much to find what you need, but you can rest assured that it has all of the complexity you need.</p>
<p>It functions pretty similarly to Dripify and also operates via a web app (no browser extension required):</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/02/if_connected1.png" class="kg-image" alt="Expandi's messaging automation dashboard" loading="lazy" width="945" height="551"><figcaption><span style="white-space: pre-wrap;">Expandi's messaging automation dashboard (Source: Expandi)</span></figcaption></figure><p>They advertise 300 connection requests per week and place a limit on the number of messages you can send per day at 100.</p>
<p>Expandi clocks in at the most expensive on this list, starting at a relatively steep $99 per month.</p>
<p>Now that you know the top 3 alternative tools for automating Professional Social Network messaging, let's talk about the bad part about doing it this way:</p>
<h1 id="the-con-about-doing-professional-social-network-messaging-automation-this-way">The con about doing Professional Social Network messaging automation this way</h1>
<p>Professional Social Network isn't a fan of automation at all. Here's [their official stance](<a href="https://www.professionalsocialnetwork.com/help/Professional?ref=nubela.co">https://www.professionalsocialnetwork.com/help/Professional</a> Social Network/answer/a1340567) on it:</p>
<blockquote>
<p>Professional Social Network is committed to keeping our members' data safe and our platform free from fraud and abuse. In order to protect our members' privacy and keep Professional Social Network a trusted platform for authentic interactions, we don't allow the use of third-party software or browser extensions that scrape, modify the appearance of, or automate activity on Professional Social Network's website.</p>
</blockquote>
<p>And they're pretty successful at preventing automation on Professional Social Network, too.</p>
<p>These [Professional Social Network automation tools](<a href="https://nubela.co/blog/best-Professional">https://nubela.co/blog/best-Professional</a> Social Network-automation-tools/) can only circumvent Professional Social Network's built-in limitations so well, but at the end of the day, Professional Social Network's limitations are difficult to bypass. That's why all of these tools more or less share the same limitations.</p>
<p>It's always going to be a game of cat and mouse automating Professional Social Network messaging this way, and any account you automate Professional Social Network messaging on will always be at risk. At scale, you'll constantly be rotating Professional Social Network accounts.</p>
<p>This is why many opt to add Professional Social Network messaging as a touchpoint in their outreach but don't rely on it entirely. There's a reason cold emailing and cold calling are still around, and <a href="https://nubela.co/blog/how-cold-emailing-grew-my-b2b-startup-to-100k-mrr/">that's because they still work</a>.</p>
<p>That said, there are different ways to tap into the power of Professional Social Network for outreach without having to deal with its messaging limitations...</p>
<p>Let me explain more:</p>
<h1 id="enriching-professional-social-network-contacts-and-taking-your-outreach-off-the-platform">Enriching Professional Social Network contacts and taking your outreach off the platform</h1>
<p>Professional Social Network is <a href="https://nubela.co/proxycurl/linkdb?ref=nubela.co">the world's largest B2B database</a>, and very useful because of this (particularly for B2B businesses), but there are some inherent flaws in doing outreach on the platform. Particularly at scale.</p>
<p>So, instead of just staying on Professional Social Network, confined to the limitations that fundamentally exist on Professional Social Network's messaging platform, you can tap into the data contained on Professional Social Network, and automate your outreach off-platform. It's kind of the best of both worlds and works quite well.</p>
<p>We can get all of the things we need for outreach from Professional Social Network like:</p>
<ul>
<li>Name</li>
<li>Job role</li>
<li>Work experience</li>
<li>A general prospect description</li>
<li>Education history</li>
<li>Phone/email</li>
<li>Beyond</li>
</ul>
<p>But it requires quite a bit of patience and knowledge to be able to successfully scrape this data at scale from Professional Social Network, and a rotating rolodex of things like Professional Social Network accounts and proxies.</p>
<p>(<strong>Note:</strong> Curious about the legality of scraping Professional Social Network data? To keep things short: it's legal if it's public data. [You can learn more about that here](<a href="https://nubela.co/blog/is-Professional">https://nubela.co/blog/is-Professional</a> Social Network-scraping-legal/).)</p>
<p>Many software developers simply don't want to deal with scraping platforms like Professional Social Network, even if they have the technical know-how, because they know it's going to be a big headache to keep operational.</p>
<p>Professional Social Network definitely goes the extra mile to make a scraper's life painful and intentionally does things like slightly changing web structure all the time to break scrapers. Even if it's obviously not going to do anything other than temporarily break things.</p>
<p>Luckily for you, you don't have to worry about scraping Professional Social Network yourself to source the data you need for outreach. We did it for you.</p>
<h1 id="meet-proxycurl-a-b2b-data-provider-and-api">Meet Proxycurl: a B2B data provider and API</h1>
<p>Over here at <a href="https://proxycurl.com/?ref=nubela.co">Proxycurl</a>, we've scraped hundreds of millions of Professional Social Network profiles (companies, personal profiles, jobs) with all of the same data points you could expect from Professional Social Network. The dataset we've built with it is called <a href="https://nubela.co/proxycurl/linkdb?ref=nubela.co">LinkDB</a>.</p>
<p>Then we took that dataset and built a B2B data enrichment API named Proxycurl with it as well as added additional data sources such as Crunchbase.</p>
<p>Using our different endpoints, you can programmatically pull all of the B2B data you could ever possibly need and use that to build an automated outreach system.</p>
<h2 id="our-different-api-endpoints">Our different API endpoints</h2>
<p>Proxycurl has many different API endpoints, such as the <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#people-api-person-profile-endpoint">Person Profile Endpoint</a>, which allows you to enrich any given social media URL, specifically a Professional Social Network profile URL. Or the <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#company-api-company-profile-endpoint">Company Profile Endpoint</a>, which allows you to get structured data of any given Professional Social Network company URL.</p>
<p>For pulling contact information, we have our <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#contact-api-personal-contact-number-lookup-endpoint">Personal Contact Number Lookup Endpoint</a>, <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#contact-api-personal-email-lookup-endpoint">Personal Email Lookup Endpoint</a>, and our <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#contact-api-work-email-lookup-endpoint">Work Email Lookup Endpoint</a>.</p>
<p>These endpoints, however, only allow you to input a given URL and receive a result back.</p>
<p>So, they work well if you're interested in enriching specified contacts/profiles, but, our <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#search-api">Search API</a> (which contains both a <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#search-api-company-search-endpoint">Company Search Endpoint</a>, and a <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#search-api-person-search-endpoint">Person Search Endpoint</a>), on the other hand, will allow you to search through our entire dataset for a given result.</p>
<p>For the sake of this article, we'll primarily be focusing on the Person Search Endpoint.</p>
<p>Let's put this into practice:</p>
<h1 id="programmatically-searching-and-extracting-data-from-professional-social-network">Programmatically searching and extracting data from Professional Social Network</h1>
<p>There are a ton of different ways you can use an API to build systems and pull data.</p>
<p>But to keep things simple and pretty universal, in this article, I'll only be using:</p>
<ol>
<li>Python, my programming language of choice</li>
<li>A <code>.CSV</code> file</li>
<li>An outreach tool</li>
</ol>
<p>Python is quite easy to use and frequently used for data manipulation so it'll work perfectly here. I chose <code>.CSV</code> as our plain text format for storing data because it's easy and all of these outreach tools support using it as an export/import format.</p>
<p>So, for example, let's say we run a marketing agency that focuses on computer <a href="https://macpaw.com/how-to/best-mac-cleaner-software?ref=nubela.co">cleaner software</a> companies, so we want to target decision-makers (not gatekeepers), but specifically the founders/co-founders of these companies. That way, our chance of actually closing a deal goes way up.</p>
<p>The following Python script would use our Person Search Endpoint as well as our Personal Contact Number Lookup Endpoint and our Personal Email Lookup Endpoint to search our API for the founders of computer software companies and export their contact information for us:</p>
<pre><code class="language-python">import requests
import csv

# API credentials and endpoint configuration
api_key = 'Your_API_Key_Here'  # Replace with your actual API key
headers = {'Authorization': 'Bearer ' + api_key}
search_api_endpoint = 'https://nubela.co/proxycurl/api/v2/search/person/'
contact_phone_endpoint = 'https://nubela.co/proxycurl/api/contact-api/personal-contact'
contact_email_endpoint = 'https://nubela.co/proxycurl/api/contact-api/personal-email'

# Parameters for the initial search request
search_params = {
    'country': 'US',
    'current_role_title': 'founder',
    'current_company_industry': 'computer software',
    'page_size': '1',
    'enrich_profiles': 'enrich',
}

# Output CSV file and headers configuration
output_file = 'enriched_profiles_with_contacts.csv'
fieldnames = [
    'Professional Social Network_profile_url', 'first_name', 'last_name', 'occupation', 'headline',
    'company', 'company_Professional Social Network_profile_url', 'city', 'state', 'personal_phone_number', 'personal_email'
]


def fetch_contact_info(api_endpoint, Professional Social Network_profile_url):
    """Fetch personal contact info (phone number or email)."""
    params = {'Professional Social Network_profile_url': Professional Social Network_profile_url}
    response = requests.get(api_endpoint, headers=headers, params=params)
    if response.status_code == 200:
        data = response.json()
        if 'personal-contact' in api_endpoint:
            return ', '.join(data.get('numbers', []))
        elif 'personal-email' in api_endpoint:
            return ', '.join(data.get('emails', []))
    else:
        print(f"Error fetching contact info from {api_endpoint}: {response.status_code}, {response.text}")
    return ''


def extract_company_info(profile):
    """Extract the most relevant company name and Professional Social Network URL from the profile's experiences."""
    company_name = ''
    company_Professional Social Network_url = ''
    experiences = profile.get('experiences', [])
    if experiences:
        most_recent_experience = experiences[0]
        company_name = most_recent_experience.get('company', '')
        company_Professional Social Network_url = most_recent_experience.get('company_Professional Social Network_profile_url', '')
    return company_name, company_Professional Social Network_url


def process_and_write_profiles(writer, result_limit):
    """Fetch profiles and write their details, including contact info, to the CSV file."""
    url = search_api_endpoint
    params = search_params.copy()
    result_count = 0

    while url and result_count &lt; result_limit:
        response = requests.get(url, headers=headers, params=params)
        if response.status_code != 200:
            print(f"Error fetching profiles: {response.status_code}, {response.text}")
            break

        data = response.json()
        for profile in data.get('results', []):
            if result_count &gt;= result_limit:
                break

            email_info = fetch_contact_info(contact_email_endpoint, profile['Professional Social Network_profile_url'])
            phone_info = fetch_contact_info(contact_phone_endpoint, profile['Professional Social Network_profile_url'])

            profile_details = profile.get('profile', {})
            first_name = profile_details.get('first_name', '')
            last_name = profile_details.get('last_name', '')
            occupation = profile_details.get('occupation', '')
            headline = profile_details.get('headline', '')

            company, company_Professional Social Network_url = extract_company_info(profile_details)

            city = profile_details.get('city', '')
            state = profile_details.get('state', '')

            writer.writerow({
                'Professional Social Network_profile_url': profile['Professional Social Network_profile_url'],
                'first_name': first_name,
                'last_name': last_name,
                'occupation': occupation,
                'headline': headline,
                'company': company,
                'company_Professional Social Network_profile_url': company_Professional Social Network_url,
                'city': city,
                'state': state,
                'personal_phone_number': phone_info,
                'personal_email': email_info,
            })
            result_count += 1

        next_page_url = data.get('next_page')
        if next_page_url and result_count &lt; result_limit:
            url = next_page_url
            params = {}
        else:
            break


with open(output_file, mode='w', newline='') as file:
    writer = csv.DictWriter(file, fieldnames=fieldnames)
    writer.writeheader()
    process_and_write_profiles(writer, 10)

    # Add desired result limit above

print("Completed fetching Professional Social Network profile data with contact information.")
</code></pre>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/02/pycharm1.png" class="kg-image" alt="Result returned in Pycharm, my Python IDE of choice, when the script hits the specified lead quantity" loading="lazy" width="2940" height="1838"><figcaption><span style="white-space: pre-wrap;">Results returned in Pycharm, my Python IDE of choice, when the script hits the specified lead quantity</span></figcaption></figure><p>It's set to generate 10 leads, grabbing the following information from the prospects found in your given search query:</p>
<ul>
<li>Professional Social Network profile URL</li>
<li>Full name</li>
<li>Occupation</li>
<li>Headline of the given profile</li>
<li>Company they work for</li>
<li>Their companies Professional Social Network URL</li>
<li>City</li>
<li>State</li>
<li>Personal phone number</li>
<li>Personal email number (to pull work emails on top of personal emails, you'd just need to integrate our <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#contact-api-work-email-lookup-endpoint">Work Email Lookup Endpoint</a> with the script as well)</li>
</ul>
<p>And then writes it into a <code>.CSV</code> named <code>enriched_profiles_with_contacts.csv</code> in the same folder as script is ran in:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/02/pycharm2.png" class="kg-image" alt="Exported results from our Python script" loading="lazy" width="2940" height="1838"><figcaption><span style="white-space: pre-wrap;">Exported results from our Python script (contact information being redacted) </span></figcaption></figure><p>(<strong>Note:</strong> To receive an API key for testing, you can <a href="https://nubela.co/proxycurl/auth/register?ref=nubela.co">click here to create your Proxycurl account</a>.)</p>
<p>It's important to note that our <a href="https://nubela.co/blog/ultimate-guide-to-boolean-search-syntax/">Search API supports Boolean operators</a> as well, so you can use <code>AND</code>,<code>OR</code>and<code>NOT</code> to refine your search results.</p>
<p>So, if for some reason you wanted exclusively founders instead of founders and co-founders (which the above query would search for), you could change it to <code>'current_role_title': 'founder NOT co-founder'</code> accordingly, instead of <code>'current_role_title': 'founder'</code>.</p>
<p>Additionally, to change the quantity of the amount of leads generated, just change the quantity at the end of the script where it says <code>process_and_write_profiles(writer, 10)</code>.</p>
<h2 id="we-now-have-a-way-to-programmatically-search-for-and-extract-contact-information">We now have a way to programmatically search for and extract contact information</h2>
<p>Nice! We have a <code>.CSV</code> full of our desired prospects' contact information ready for outreach. We just have to actually reach out.</p>
<p>(<strong>Note:</strong> To enrich a given profile, without searching, you'd use our Person Profile Endpoint. You can export the results in a very similar fashion. You can <a href="https://nubela.co/proxycurl/docs?ref=nubela.co">check out our docs here</a>.)</p>
<p>To do so, we'll use an outreach tool:</p>
<h1 id="turning-b2b-data-into-automated-outreach">Turning B2B data into automated outreach</h1>
<p>We'll use <a href="https://reply.io/?ref=nubela.co">Reply.io</a> in this example as they work quite well (and they're a customer of ours), but there are several other automated outreach tools available, too.</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/02/reply.png" class="kg-image" alt="Reply.io's homepage" loading="lazy" width="2880" height="1653"><figcaption><span style="white-space: pre-wrap;">Reply.io's homepage</span></figcaption></figure><p>Anyway, using that same <code>.CSV</code> from earlier, we can import every single contact and data point we gathered earlier into Reply.io and create an outreach sequence.</p>
<p>First, click "People" and then "New import" and then finally "Import from CSV" on Reply.io's dashboard:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/02/replyimport.png" class="kg-image" alt="Reply.io's import process" loading="lazy" width="1912" height="117"><figcaption><span style="white-space: pre-wrap;">Reply.io's import process</span></figcaption></figure><p>Then map the according data in our <code>.CSV</code> to variables within Reply.io -- you can also create any custom variables you'd like for importing variables that don't already exist within the platform:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/02/reply.io.png" class="kg-image" alt="Mapping our variables within Reply.io" loading="lazy" width="875" height="611"><figcaption><span style="white-space: pre-wrap;">Mapping our variables within Reply.io</span></figcaption></figure><p>Now all you have to do is click "Sequences" and "New sequence" and build out your desired outreach automation campaign:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/02/reply---seg-2.png" class="kg-image" alt="Reply.io's sequences" loading="lazy" width="2930" height="570"><figcaption><span style="white-space: pre-wrap;">Reply.io's sequences</span></figcaption></figure><p>You can build it out until your hearts content, combining email, text, etc (Reply.io supports Professional Social Network messaging as well):</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/02/reply---seg-1.png" class="kg-image" alt="Reply.io's sequence builder" loading="lazy" width="2892" height="1565"><figcaption><span style="white-space: pre-wrap;">Reply.io's sequence builder</span></figcaption></figure><p>Using any of the variables that we imported that you'd like:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/02/reply---segmentation.png" class="kg-image" alt="Repy.io's message editor" loading="lazy" width="2894" height="1557"><figcaption><span style="white-space: pre-wrap;">Repy.io's message editor</span></figcaption></figure><p>Not bad! Automating your Professional Social Network outreach really is that simple.</p>
<p>But let me show you another old-school option as well:</p>
<h2 id="the-barebones-alternative-option-for-cold-emailing">The barebones alternative option for cold emailing</h2>
<p>If you want to focus solely on cold email outreach using Professional Social Network data, you could use a tool like <a href="https://sendy.com/?ref=nubela.co">Sendy</a>, which is a simple self-hosted email automation tool. I've used it for years, and as a company, <a href="https://nubela.co/blog/cold-email-mastery-a-step-by-step-guide-to-automating-prospecting-and-cold-email-outreach-that-works/">Proxycurl has also used it</a>.</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/02/sendyhomepage.png" class="kg-image" alt="Sendy's homepage" loading="lazy" width="1894" height="937"><figcaption><span style="white-space: pre-wrap;">Sendy's homepage</span></figcaption></figure><p>It costs $69 one time and integrates with AWS SES, which costs $0.10 per 1,000 emails. You can also use it with any other email relay out there.</p>
<p><a href="https://nubela.co/blog/cold-email-mastery-a-step-by-step-guide-to-automating-prospecting-and-cold-email-outreach-that-works/">We published an A-Z guide on using Sendy for cold emailing here</a>, so I won't get too in-depth on this article, but it's quite easy to use.</p>
<p>The only con is the importation system, but you could use the following script to import your <code>.CSV</code> using the Sendy API after configuring your custom fields in Sendy (which we explain how to do <a href="https://nubela.co/blog/cold-email-mastery-a-step-by-step-guide-to-automating-prospecting-and-cold-email-outreach-that-works/">in the guide</a>).</p>
<pre><code>//-------------------- EDIT HERE -----------------------//
$sendy_url = 'https://SendyInstallation.com';
$api_key = 'xxxxxxxxxxxxxx';
$list_id = 'xxxxxxxxxxxxxx'; 
$csv_file = 'enriched_profiles_with_contacts.csv';   
//------------- STOP EDITING HERE --------------------//
ini_set('auto_detect_line_endings',TRUE);
$file_handle = fopen($csv_file, "r");
$ch = curl_init();

while (!feof($file_handle) ) {
    set_time_limit(0);

    $line_of_text = fgetcsv($file_handle, 1024);
    // Extract the first email if there are multiple emails
    $emails = explode(',', $line_of_text[10]); // Emails are in the 11th column
    $email = isset($emails[0]) ? trim($emails[0]) : '';

    // Check if a phone number is present
    $phone_number = isset($line_of_text[9]) &amp;&amp; !empty($line_of_text[9]) ? $line_of_text[9] : ''; // Phone numbers are in the 10th column

    $fields = array(
        'name' =&gt; urlencode($line_of_text[1] . ' ' . $line_of_text[2]), // Combining first name and last name
        'email' =&gt; urlencode($email), // Using the first email if multiple
        // Add your custom fields here
        'Occupation' =&gt; urlencode($line_of_text[3]), // Occupation is in the 4th column
        'Company' =&gt; urlencode($line_of_text[5]), // Company is in the 6th column
        'City' =&gt; urlencode($line_of_text[7]), // City is in the 8th column
        'State' =&gt; urlencode($line_of_text[8]), // State is in the 9th column
        'PhoneNumber' =&gt; urlencode($phone_number), // Phone number is in the 10th column
        'api_key' =&gt; urlencode($api_key),
        'list' =&gt; urlencode($list_id)
    );

    $fields_string = http_build_query($fields);
    
    curl_setopt($ch, CURLOPT_URL, $sendy_url.'/subscribe');
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string);
    
    // Making sure there's a first name and a valid email before sending the request
    if (!empty($line_of_text[1]) &amp;&amp; filter_var($email, FILTER_VALIDATE_EMAIL)) {
        $response = curl_exec($ch);
        // It is recommended to check the response from curl_exec() for errors
        if(curl_errno($ch)) {
            echo 'Curl error: ' . curl_error($ch);
        }
        sleep(5); // Throttling requests to avoid overloading Sendy or your server
    }
    
    echo htmlspecialchars($line_of_text[1], ENT_QUOTES, 'UTF-8');
    echo '&lt;br&gt;';
}

fclose($file_handle);
curl_close($ch);
//------------------------------------------------------//
</code></pre>
<p>Just create an <code>import</code> folder in your Sendy installation, create <code>index.php</code> within that, and copy and paste the above script, adding your Sendy API information at the top (it's available in your Sendy settings).</p>
<p>Then upload your <code>.CSV</code> in that same folder and go to <code>YourSendyInstall.com/import/index.php</code> and all of your list will be imported with the according data points (it may take a while depending on your quantity of leads, let it run).</p>
<p>Then from there on, you can automatically cold email your new leads!</p>
<h1 id="see-you-didnt-need-a-professional-social-network-messages-api-anyway">See? You didn't need a Professional Social Network Messages API anyway</h1>
<p>You can do all of your outreach on your own.</p>
<p>From Professional Social Network messaging to cold emailing, to texting and beyond. You can do it all, programmatically, with Proxycurl in combination with your cold emailing or outreach tool of choice.</p>
<p>Unfortunately, it may not be as you imagined, officially through the Professional Social Network API, but it's certainly still possible to tap into the vast B2B database that Professional Social Network offers and automate outreach with it.</p>
<p>You could even further improve on the ideas displayed here in this article, automating this process even more, such as integrating our API directly with other outreach solutions APIs, requiring no need to upload a <code>.CSV</code> or anything similar.</p>
<p>You'll just need to weigh out the pros and cons of Professional Social Network automation and decide what outreach setup is right for you.</p>
<h1 id="create-your-proxycurl-account">Create your Proxycurl account</h1>
<p>If you're ready to level up your outreach and tap into an excessive amount of rich B2B data, you can <a href="https://nubela.co/proxycurl/auth/register?ref=nubela.co">click here to create your Proxycurl account today</a>.</p>
<p>It's free and you'll start with 10 credits to test out a few basic actions. Then you can opt for a pay-as-you-go plan and top up as little as $10, or select a subscription. For more information on our pricing, <a href="https://nubela.co/proxycurl/pricing?ref=nubela.co">you can view this page here</a>.</p>
<p>Thanks for reading, and here's to better outreach!</p>
<p><strong>P.S.</strong> Have any questions about our API or about how we can help your Professional Social Network outreach process? Send us an email over to "<a href="mailto:hello@nubela.co">hello@nubela.co</a>" and we'll be glad to help.</p>
 ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ This Is Why Meta Lost the Scraping Legal Battle to Bright Data ]]></title>
        <description><![CDATA[ Meta took Bright Data to court, and the results are probably not as you expect... ]]></description>
        <link>https://nubela.co/blog/meta-lost-the-scraping-legal-battle-to-bright-data/</link>
        <guid isPermaLink="false">65bb2eaa86ccd600018f3ae8</guid>
        <category><![CDATA[ proxycurl ]]></category>
        <dc:creator><![CDATA[ Joseph Lim | Head of Marketing ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2023/03/Screenshot-2023-03-13-at-5.30.12-PM-min.png"/>
        <pubDate>Mon, 04 Mar 2024 11:18:00 +0800</pubDate>
        <media:content url="" medium="image"/>
        <content:encoded><![CDATA[ <p><em>Note: a few weeks after the first edition of this article was published, Meta announced that they were dropping the lawsuit. We have since then updated this article with the latest developement. In summary, this concluded the case with a clear win for Bright Data.</em></p>
<p>We’re treated to yet another legal drama in the world of web scraping. This time the verdict is out on Meta vs. Bright Data.</p>
<p>Bright Data won, and Meta lost. Yay to the web scraping community.</p>
<p>This win came off the back of a similarly high-profile, years-long [legal battle between hiQ and Professional Social Network](<a href="https://nubela.co/blog/is-Professional">https://nubela.co/blog/is-Professional</a> Social Network-scraping-legal/), which hiQ won and Professional Social Network lost.</p>
<p>That case ended in 2022 and was a  huge win for the web scraping community because it further cemented that scraping a website for data is in fact legal, provided you meet certain requirements.</p>
<p>We highly recommend that you [read the hiQ v. Professional Social Network case](<a href="https://nubela.co/blog/is-Professional">https://nubela.co/blog/is-Professional</a> Social Network-scraping-legal/) alongside this Meta v. Bright Data case, because both address important facts about web scraping.</p>
<p>Now, time to start unpacking the details of this case:</p>
<p>(By the way, if you're already pretty familiar with the web scraping legal world, <a href="https://nubela.co/blog/p/411fe144-3fdf-4d88-8988-90ccf4735075/#key-points-and-summarieswhat-it-meant-for-web-scraping">you can jump straight to the ruling and the key points here</a>.)</p>
<h2 id="who-are-the-players">Who are the players?</h2>
<p>For the benefit of you who want to know in detail the parties involved in this case, here's the background:</p>
<h3 id="meta-facebook">Meta / Facebook</h3>
<p>You should know who Meta is unless you’re a late Gen Z or Gen Alpha or a pure TikToker.</p>
<p>Either way, Meta is a gigantic technology company that owns multiple popular social networking products such as Facebook, Instagram, WhatsApp, and most recently Threads.</p>
<p>With these popular social-related products naturally come large user bases, making Meta a popular scraping target because of that vast and valuable user data.</p>
<h3 id="bright-data">Bright Data</h3>
<p>Bright Data is a web data company headquartered in Israel. The company started its history as a <a href="https://www.911proxy.com/?ref=nubela.co">proxies</a> &amp; IPs provider and in recent years since 2022, it dabbled into web scraping and selling the scraped data in the form of datasets.</p>
<p>Here’s a [full walkthrough of Bright Data](<a href="https://nubela.co/blog/proxycurl-api-vs-brightdatas-Professional">https://nubela.co/blog/proxycurl-api-vs-brightdatas-Professional</a> Social Network-profile-scraper/) as a scraping service.</p>
<h3 id="senior-us-district-judge-edward-chen">Senior U.S. District Judge Edward Chen</h3>
<p>Legal commentaries usually only look at the companies/parties involved. But in this case, the involvement of the presiding judge - <a href="https://www.cand.uscourts.gov/judges/chen-edward-m-emc/?ref=nubela.co">Judge Chen</a> was a very intriguing one. Coincidentally <em>(or not)</em>, he was too the presiding judge of the hiQ v. Professional Social Network case, in which he ruled in favor of the scraping company and against the Professional Social Network platform.</p>
<p>Although his involvement might not and should not be a cause of the ruling for this Meta v. Bright Data case, but interesting nevertheless.</p>
<h2 id="timeline-of-events-in-meta-v-bright-data">Timeline of events in Meta v. Bright Data</h2>
<p>Now that we’re clear on who was involved. Let’s dive in on the drama.</p>
<p>There were five main events:</p>
<ol>
<li>Nov’22: Cease-and-desist initiated by Meta</li>
<li>Jan’23: Meta sued, then Bright Data countersued</li>
<li>May’23: First hearing</li>
<li>Jan’24: Ruling issued: Bright Data won</li>
<li>Feb'24: Meta dropped the lawsuit: web scraping won</li>
</ol>
<p>Starting with…</p>
<h3 id="29-november-2022cease-and-desist-initiated-by-meta">29 November 2022 - Cease-and-desist initiated by Meta</h3>
<p>Meta initiated contact with Bright Data via 1) a video call and 2) an email back in November 2022 for a cease-and-desist. In these communications, Meta demanded that Bright Data stop any scraping activity on Meta’s platforms, in this case, Facebook and Instagram.</p>
<p>In our <em>(non-legal)</em> opinion, these actions by Meta were more to go through the motion to prove that contact was made, so that they can proceed to file a court action later. They for sure didn't expect Bright Data to comply with their demands.</p>
<p>And naturally, Bright Data didn’t. This prompted Meta’s next action:</p>
<h3 id="6-january-2023meta-sued-bright-data">6 January 2023 - Meta sued Bright Data</h3>
<p>Meta sent a reminder letter to Bright Data that day, informing them of their "illegal" scraping activities, and demanded Bright Data to stop these activities immediately.</p>
<p>On the same day, Meta proceeded to sue Bright Data. They filed a complaint with the US District Court for California, claiming:</p>
<blockquote>
<p>a breach of contract and tortious interference.</p>
</blockquote>
<p>This is a very important fact because to Meta, Bright Data was a user and thus its scraping activities violated the Terms of Service (ToS) <strong>as a user</strong>. This was also a key consideration to Judge Chen which will explain the rationale of his ruling - more later.</p>
<h3 id="20-january-2023bright-data-countersued-meta">20 January 2023 -  Bright Data countersued Meta</h3>
<p>Bright Data in return filed their complaint with the US District Court for Delaware.</p>
<h3 id="happenings-in-the-subsequent-months">Happenings in the subsequent months</h3>
<p>The usual legal administrative and procedural steps happened from hereon. We saved you the troubles of going through these months, here are some highlights and references:</p>
<ul>
<li><a href="https://ia804708.us.archive.org/2/items/gov.uscourts.cand.406956/gov.uscourts.cand.406956.1.0.pdf?ref=nubela.co">Meta’s motion</a> was submitted on 6 Jan 2023</li>
<li><a href="https://www.courtlistener.com/docket/66706470/meta-platforms-inc-v-bright-data-ltd/?ref=nubela.co#entry-28">Exact timeline of the case</a></li>
<li><a href="https://www.courtlistener.com/docket/66706470/meta-platforms-inc-v-bright-data-ltd/?ref=nubela.co#entry-28">Case reassigned</a> to <em>legendary web-scraping judge</em> - Judge Chen</li>
<li><a href="https://www.courtlistener.com/docket/66706470/meta-platforms-inc-v-bright-data-ltd/?ref=nubela.co#entry-70">The first hearing</a> on 9 May 2023</li>
<li><a href="https://news.bloomberglaw.com/us-law-week/virtual-court-hearings-earn-permanent-spot-after-pandemics-end?ref=nubela.co">Covid-19 has too transformed the legal world</a>, the proceedings in the whole case <a href="https://www.courtlistener.com/docket/66706470/meta-platforms-inc-v-bright-data-ltd/?ref=nubela.co#entry-70">were mostly through Zoom</a></li>
</ul>
<h3 id="d-day-the-ruling">D-Day: the ruling</h3>
<p>On 23 Jan 2024, <a href="https://ia904708.us.archive.org/2/items/gov.uscourts.cand.406956/gov.uscourts.cand.406956.181.0.pdf?ref=nubela.co">Judge Chen issued his ruling</a>, in favor of Bright Data.</p>
<p>After the ruling, as with past countless court cases related to web scraping, everyone expected the drama to continue brewing and unfolding in the weeks and months to come.</p>
<p>But..</p>
<h3 id="meta-dropped-the-lawsuit-giving-victory-to-web-scraping">Meta dropped the lawsuit, giving victory to web scraping</h3>
<p>On 23 February 2024, one month after the ruling, Meta dropped the lawsuit against Bright Data without further fights.</p>
<p>Definitely an intriguing move but through which we can glean: what did all this mean for web scraping? Is it finally legal? Fully legal, half? Has the case concluded for good for web scraping?</p>
<p>That's what we're going to discuss next:</p>
<h2 id="key-points-and-summarieswhat-it-meant-for-web-scraping">Key points and summaries - what it meant for web scraping</h2>
<p>Nothing is set in stone, there are still many unanswered questions and grey areas, but from what we've seen so far we can say,</p>
<blockquote>
<p><strong>Scrape ahead</strong>!</p>
</blockquote>
<p>As long as your scraping:</p>
<ol>
<li>Involves only [public data](<a href="https://nubela.co/blog/what-is-the-difference-between-Professional">https://nubela.co/blog/what-is-the-difference-between-Professional</a> Social Network-public-profiles-vs-Professional Social Network-private-profiles-with-python-code-samples/) and not private data</li>
<li>Isn’t done while logged in, i.e. not a user of the platform that owns the data</li>
</ol>
<p><a href="https://nubela.co/blog/p/411fe144-3fdf-4d88-8988-90ccf4735075/#6-january-2023meta-sued-bright-data">As mentioned earlier</a>, keep in mind that Meta sued for breach of contract, i.e. they’re suing Bright Data as a user of their products. This was a key point to Judge Chen's ruling.</p>
<p>That said, here are three highlights followed by the judge’s opinions/ruling:</p>
<h3 id="highlight-1-bright-data-scraped-meta-while-being-a-user">Highlight #1: Bright Data scraped Meta while being a user</h3>
<p>How was Bright Data a user? Well, they basically just had some Facebook and Instagram accounts for their corporate and branding purposes as any company would.</p>
<p>Being a user of any platform, you’ll generally need to comply with their Terms of Service (ToS). In this case, it means that Bright Data being a user and scraping the platforms as a user, violated Meta’s ToS - according to Meta.</p>
<p>In Bright Data’s view, however, those Facebook and Instagram accounts were meant as company profiles for branding and marketing purposes. They had nothing to do with Bright Data’s scraping activities.</p>
<p>The judge duly agreed.</p>
<p>Note: due to the case, Bright Data has since <a href="https://www.facebook.com/search/top?q=bright%20data">deleted all their Facebook</a> &amp; Instagram accounts. Try searching for them and you'll find user-created "fake" accounts under the name of Bright Data.</p>
<h3 id="highlight-2-bright-data-scraped-meta-while-not-being-a-user">Highlight #2: Bright Data scraped Meta while <em>not</em> being a user</h3>
<p>Now, because Bright Data has deleted all their Facebook and Instagram profiles, they were no longer a user at that point.</p>
<p>Still, Meta argued that Bright Data was bound by their ToS as an ex- or non-user, and thus their scraping activities on Meta's platforms were still illegal.</p>
<p>Interestingly, Judge Chen again ruled in favor of Bright Data on this point.</p>
<p>Why <em>interestingly</em>? The practice has always been that no matter whether a user or not, any scraping activity will constitute a violation of the ToS  simply because of the nature of ToS being readily available and accessible thus becoming a necessary knowledge on the scrapers' part. Rightfully so, ToS is intended as a protection for platforms.</p>
<p>So, in this case, having ruled in favor of the web scraping company Bright Data, it is a <em><strong>huge</strong></em> win for the scraping community.</p>
<h3 id="highlight-3-bright-data-scraped-public-data-without-being-logged-in">Highlight #3: Bright Data scraped public data without being logged in</h3>
<p>This remained a very important aspect of web-scraping-related cases, [as with hiQ v. Professional Social Network](<a href="https://nubela.co/blog/is-Professional">https://nubela.co/blog/is-Professional</a> Social Network-scraping-legal/). Because precedence has already been set that web scraping of public data is perfectly legal, social platforms can’t limit access to public data because it belongs to, as the name suggests, the public.</p>
<p>To quote <a href="https://ia904702.us.archive.org/19/items/gov.uscourts.ded.81291/gov.uscourts.ded.81291.12.0.pdf?ref=nubela.co">Bright Data’s motion</a>:</p>
<blockquote>
<p><em>"This case is all about public data: whether the public has the right to search public information, or whether Meta can use the courts as a tool to eviscerate that right, even where Meta does not own the data at issue and has no property rights in it...</em><br>
<em>If Bright Data loses this case, the losers are not just Bright Data but the public, whose rights are being taken away."</em></p>
</blockquote>
<p>The last line is quite epic.</p>
<h3 id="parallels-between-meta-v-bright-data-hiq-v-professional-social-network-and-another-2008-case-facebook-v-power-ventures">Parallels between <em>Meta v. Bright Data</em>, <em>hiQ v. Professional Social Network</em>, and another 2008 case: <em>Facebook v. Power Ventures</em></h3>
<p>Looking at the three high-profile web scraping cases of [hiQ v. Professional Social Network](<a href="https://nubela.co/blog/is-Professional">https://nubela.co/blog/is-Professional</a> Social Network-scraping-legal/#a-timeline-of-events), [Facebook v. Power Ventures](<a href="https://nubela.co/blog/is-Professional">https://nubela.co/blog/is-Professional</a> Social Network-scraping-legal/#another-legal-battle-on-web-scrapingfacebook-v-power-ventures) <em>(started as far back as 2008)</em>, and this Meta v. Bright Data case, it is very clear that scraping of public data while being logged off is legal in the eyes of the courts.</p>
<p>In Facebook v. Power Ventures, the scraping itself wasn’t illegal for sure, rather it was Power Venture’s copying of Facebook’s copyrighted page designs and interface wholesale that caused Power Ventures to lose the case.</p>
<p>In hiQ v. Professional Social Network, similarly, the scraping was deemed legal. But it was hiQ’s creation of fake accounts that got them into trouble.</p>
<p>And now in Bright Data’s case, they emerged the full winner because they steered clear of creating fake accounts for scraping purposes and avoided any copyright infringement like Power Ventures did. In other words, they scraped for public data as a non-user, non-logged-in.</p>
<p>Also, did you know that Meta actually employed Bright Data’s services before to scrape other websites? That's a turn of events.</p>
<p>By the way, [the worst of it was done by Mantheos](<a href="https://nubela.co/blog/what-you-should-know-now-that-mantheos-a-Professional">https://nubela.co/blog/what-you-should-know-now-that-mantheos-a-Professional</a> Social Network-scraping-service-is-sued-by-Professional Social Network/), another web scraping company, which got sued and forced to close down because they fraudulently created fake Professional Social Network accounts and fabricated fake debit cards to get access to Professional Social Network Sales Navigator and then scraped millions of those private profiles.</p>
<h2 id="ultimately-we%E2%80%99re-still-treading-along-a-fine-line-when-it-comes-to-web-scraping">Ultimately, we’re still treading along a fine line when it comes to web scraping</h2>
<p>And that is why platforms continue to sue scraping companies year after year after year.</p>
<p>Even with this clear win by Bright Data, and in extension the scraping community, we shouldn’t expect Meta or any data plafrom to accept the defeat for good just like that.</p>
<p>Platforms will continue to sue scraping companies, even Meta themselves have had court cases with countless scraping companies. Professional Social Network is another "culprit".</p>
<p>That happened in hiQ v. Professional Social Network too where Professional Social Network appealed the Court’s decision, which led to the case changing courts a few times, the ruling being backtracked, and it went on for years before both parties settled privately in December 2022.</p>
<p>Web scraping aside, there are better ways of getting data at scale from platforms like Professional Social Network and Facebook without all the headaches - one such way is via <a href="https://nubela.co/proxycurl/products?ref=nubela.co">APIs like ours at Proxycurl</a>, or <a href="https://nubela.co/proxycurl/linkdb?ref=nubela.co">buying datasets directly</a>.</p>
<p>[Vendors like us](<a href="https://nubela.co/blog/reviewing-top-Professional">https://nubela.co/blog/reviewing-top-Professional</a> Social Network-scraping-api-services/) take care of the complicated, dangerous, and ever-changing landscape of web scraping, including circumventing creative scraping blockers employed by these platforms like CAPTCHAs &amp; IP blocking, while you focus on getting quality data to build your applications.</p>
<p>We hope this <em>non-legal</em> legal commentary helped shed light on this pivotal case, and what it meant for you if you're into web scraping.</p>
<h2 id="the-next-step">The next step?</h2>
<p>Use a data vendor like Proxycurl or Bright Data instead. Create your Proxycurl account, grab your API key, and test out the APIs for yourself:</p>
<p><a href="https://nubela.co/proxycurl/auth/register?ref=nubela.co">Click here to create your Proxycurl account now for free.</a></p>
<p><strong>P.S.</strong> Have any questions? No problem, we have answers. Just reach out to us at "<a href="mailto:hello@nubela.co">hello@nubela.co</a>" and we'll get you taken care of ASAP!</p>
 ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ Ultimate Guide to Boolean Search Syntax ]]></title>
        <description><![CDATA[ There is a good chance you already know the Boolean search syntax if you&#39;re good at googling because a large of advance search expressions are in fact a Boolean search. In this guide, we will go a bit further and formally document the Boolean Search syntax.



Boolean Search ]]></description>
        <link>https://nubela.co/blog/ultimate-guide-to-boolean-search-syntax/</link>
        <guid isPermaLink="false">65ded57cada96c0001a04cc6</guid>
        <category><![CDATA[ proxycurl ]]></category>
        <dc:creator><![CDATA[ Steven Goh | CEO ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2019/05/square.jpg"/>
        <pubDate>Fri, 01 Mar 2024 17:36:25 +0800</pubDate>
        <media:content url="" medium="image"/>
        <content:encoded><![CDATA[ <p>There is a good chance you already know the Boolean search syntax if you're good at googling because a large of advance search expressions are in fact a Boolean search. In this guide, we will go a bit further and formally document the Boolean Search syntax.</p>
<h2 id="boolean-search-basics-also-why-boolean-search">Boolean Search Basics. Also, why Boolean Search?</h2>
<p>At the core of Boolean search are expressions that allow you to combine or exclude keywords in specific ways, using a set of operators such as AND, OR, NOT, and more. These expressions can be simple terms, exact phrases, or a complex combination of both, structured to refine your search criteria.</p>
<p>At Proxycurl, we decided to <a href="https://nubela.co/blog/product-update-search-api-v2/">replace regular expressions with Boolean search</a> because:</p>
<ol>
<li>we were getting too many support tickets from users who were tripping up on regular expressions.</li>
<li>we looked at most regular expressions given by our users, and they are very basic queries.</li>
</ol>
<p>What if we can have 90% of the power that regular expressions give but with a dramatically simpler learning curve? Boolean Search is the answer.</p>
<h3 id="understanding-the-grammar">Understanding the Grammar</h3>
<p>Let's break down the Boolean grammar that forms the backbone of this search syntax:</p>
<ul>
<li><strong><code>&lt;expression&gt;</code></strong>: This is the basic unit of your search query. It can be a single term, a conditional expression combining multiple terms, or even a group of expressions.</li>
<li><strong><code>&lt;term&gt;</code></strong>: A term can be a single word (e.g., <code>"banana"</code>), an exact phrase enclosed in quotes (e.g., <code>"banana bread"</code>), or an expression group, which is an expression enclosed in parentheses (e.g., <code>(banana OR bread)</code>).</li>
<li><strong><code>&lt;conditional-expression&gt;</code></strong>: This involves combining terms with operators like AND, OR, NOT, and their symbolic equivalents (&amp;&amp;, ||, -) to refine your search.</li>
</ul>
<h3 id="supported-syntax">Supported Syntax</h3>
<ol>
<li><strong>Quotes " "</strong>: Search for an exact phrase. Using quotes around your terms (e.g., <code>"banana bread"</code>) will return results containing that exact phrase.</li>
<li><strong>OR ||</strong> : Use the pipe symbol to search for either term. For instance, <code>bananas || apples</code> will fetch results that include either "bananas", "apples", or both.</li>
<li><strong>AND &amp;&amp;</strong>: Ensure your results include all terms by using the double ampersand. A search like <code>bananas &amp;&amp; apples</code> will only show results that feature both "bananas" and "apples".</li>
<li><strong>NOT -</strong> (hyphen): Exclude terms using the hyphen or NOT. For example, <code>bananas -apples</code> will return results including "bananas" but exclude any that mention "apples".</li>
<li><strong>Parentheses ( )</strong>: Group terms and operators to form complex queries. A search like <code>(bananas || apples) &amp;&amp; bread</code> will yield results that contain "bread" and either "bananas" or "apples."</li>
<li><strong>Asterisk <code>*</code></strong>: The asterisk acts as a wildcard operator. Searching for <code>star*</code> might return "star", "stars", "start", and so on, capturing a broader range of terms that share a root. The asterisk wildcard operator cannot be used as a leading operator. It can only be used in the middle or trailing portion of the query. For example, <code>* apple</code> is not allowed. <code>apple * orange</code> and <code>apple*</code>is allowed.</li>
</ol>
<h3 id="crafting-your-search-queries">Crafting Your Search Queries</h3>
<p>To make the most of boolean search syntax, consider how your query might be interpreted and structure it accordingly:</p>
<ul>
<li><strong>Be specific</strong>: Use exact phrases and conditional expressions to narrow down your search results.</li>
<li><strong>Use parentheses</strong>: Group terms to control the order of operations, just like in mathematics.</li>
<li><strong>Experiment with wildcards</strong>: Wildcards can help you find related terms you might not have considered.</li>
</ul>
<h3 id="examples">Examples</h3>
<p>Here are a few examples to illustrate how you might use Boolean search syntax in practice:</p>
<ul>
<li><strong>Find recipes that must include bananas but not nuts</strong>: <code>"banana bread" -nuts</code></li>
<li><strong>Research articles that mention either climate change or global warming</strong>: <code>("climate change" | "global warming")</code></li>
<li><strong>Find documents that mention technology and either innovation or startups</strong>: <code>technology &amp;&amp; (innovation || startups)</code></li>
</ul>
<h2 id="conclusion">Conclusion</h2>
<p>Mastering Boolean search syntax empowers you to conduct more efficient and effective searches. By understanding and applying the principles outlined in this guide, you can navigate through information with precision, saving time and focusing on the results that matter most. Practice forming your own Boolean queries and watch how they can improve your search game. Happy searching!</p>
 ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ Search API V2 is live! No more regexes, hello Boolean searches ]]></title>
        <description><![CDATA[ We take the iteration process very seriously at Proxycurl. After months of development, we have revamped the Search API and this update for the new Search API is live today!



Now Boolean search, no more regexes


This is how you can search for people who had studied at Caltech or ]]></description>
        <link>https://nubela.co/blog/product-update-search-api-v2/</link>
        <guid isPermaLink="false">65ded4a6ada96c0001a04cbb</guid>
        <category><![CDATA[ changelog ]]></category>
        <dc:creator><![CDATA[ Steven Goh | CEO ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2019/05/square.jpg"/>
        <pubDate>Fri, 01 Mar 2024 17:33:36 +0800</pubDate>
        <media:content url="" medium="image"/>
        <content:encoded><![CDATA[ <p>We take the iteration process very seriously at Proxycurl. After months of development, we have revamped the <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#search-api">Search API</a> and this update for the new Search API is live today!</p>
<h2 id="now-boolean-search-no-more-regexes">Now Boolean search, no more regexes</h2>
<p>This is how you can search for people who had studied at Caltech or MIT, named either "Sarah Jackson" or "Sarah Johnson" today:</p>
<pre><code class="language-shell">curl \
    -G \
    -H "Authorization: Bearer ${YOUR_API_KEY}" \
    'https://nubela.co/proxycurl/api/v2/search/person/' \
    --data-urlencode 'country=US' \
    --data-urlencode 'first_name=Sarah' \
    --data-urlencode 'last_name=Jackson OR Johnson' \
    --data-urlencode 'education_school_name=Caltech OR Massachusetts Institute of Technology'
</code></pre>
<p>Notice that there are <a href="https://nubela.co/blog/regular-expressions-the-proxycurl-search-api/">no more regexes</a>. The Search API now uses <a href="https://nubela.co/blog/ultimate-guide-to-boolean-search-syntax/">Boolean search</a> in place of regular expressions which I believe is a lot easier for most people to pick up and use.</p>
<h2 id="no-more-35-credit-base-cost">No more 35-credit base cost</h2>
<p>Previously Search API had a 35-credit base cost with 3 credits chargeable per result. That was 38 credits if you're doing just one search.</p>
<p>Now,</p>
<blockquote>
<p>No more 35-credit base cost.</p>
</blockquote>
<p>You'll only be charged for 3 credits/result returned. Meaning, you can do ad-hoc searches <em>(even just one)</em> with this revamped Search API.</p>
<h2 id="significant-speed-boost">Significant speed boost</h2>
<p>We have also <strong>significantly improved the speed of Search API</strong>. Most requests should complete in a few seconds as is compared to 60-100s before this revamp.</p>
<p>For more information, check out the API documentation of the updated <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#search-api">Search API</a>. You might also want to check out this guide that we wrote on <a href="https://nubela.co/blog/ultimate-guide-to-boolean-search-syntax/">Boolean searches</a>.</p>
<h2 id="now-now-how-about-search-api-v1">Now, now, how about Search API V1?</h2>
<p>It'll be deprecated with the launch of Search API V2 and it's sunset date will be on 2 April 2024. Thereafter it'll no longer be usable.</p>
<p>We've moved to a better revamped-product that is the Search API V2. You should too!</p>
 ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ How Fresh Is the Data from Employee Listing Endpoint or the Search API? ]]></title>
        <description><![CDATA[ Proxycurl&#39;s Employee Listing Endpoint and the Search API are powered by LinkDB. This means that searches are performed within LinkDB. We do not scrape Professional Social Network for employee data or to perform people/company searches.

Since LinkDB is not synced with the latest data on Professional Social ]]></description>
        <link>https://nubela.co/blog/how-fresh-is-the-data-from-employee-listing-endpoint-or-the-search-api/</link>
        <guid isPermaLink="false">65ba1ec986ccd600018f3a87</guid>
        <category><![CDATA[ faq ]]></category>
        <dc:creator><![CDATA[ Steven Goh | CEO ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2019/05/square.jpg"/>
        <pubDate>Tue, 06 Feb 2024 16:31:27 +0800</pubDate>
        <media:content url="" medium="image"/>
        <content:encoded><![CDATA[ <p>Proxycurl's <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#company-api-employee-listing-endpoint">Employee Listing Endpoint</a> and the <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#search-api">Search API</a> are powered by <a href="https://nubela.co/proxycurl/linkdb?ref=nubela.co" rel="noreferrer">LinkDB</a>. This means that searches are performed within LinkDB. We do not scrape Professional Social Network for employee data or to perform people/company searches.</p><p>Since LinkDB is not synced with the latest data on Professional Social Network, you might experience:</p><ol><li>Some profiles that match your query initially, but do not match upon refresh (with the <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#people-api-person-profile-endpoint" rel="noreferrer">Person Profile Endpoint</a> using the <code>use_cache=if-recent</code> parameter).</li><li>Some profiles that should be included but are otherwise excluded from our API results.</li></ol><p>To understand this phenomenon, it's important to know that<strong> the results are only as good and fresh as LinkDB</strong>. Here's <a href="https://nubela.co/blog/how-often-is-linkdb-updated/">how we update LinkDB</a>:</p><blockquote>LinkDB is updated with every real-time (API) request to scrape a Professional Social Network profile. Essentially, this methodology keeps data in LinkDB constantly updated, amounting to (up to) millions of profiles a day.</blockquote><p>Furthermore, since the Proxycurl API only works with <a href="https://nubela.co/blog/what-is-the-difference-between-Professional%20Social%20Network-public-profiles-vs-Professional%20Social%20Network-private-profiles-with-python-code-samples/" rel="noreferrer">publicly accessible Professional Social Network profiles</a>, not all Professional Social Network profiles are included within LinkDB.</p><p>As a result, popular profiles (like those of software engineers, CEOs, etc.) are often fresh on LinkDB. Less popular roles and people are updated less frequently. Profiles with their <a href="https://nubela.co/blog/the-ultimate-guide-to-Professional%20Social%20Network-public-profile-visibility/">public profile visibility settings</a> turned off, either fully or partially, will also be a poor match or not matched within the results you expect.</p><hr><p>We do not scrape Professional Social Network for employee data and searches for <a href="https://nubela.co/blog/is-Professional%20Social%20Network-scraping-legal/" rel="noreferrer">legal compliance reasons</a>. This ensures that you can trust Proxycurl to <a href="https://nubela.co/blog/is-Professional%20Social%20Network-scraping-gdpr-compliant/" rel="noreferrer">build your application in a sustainable way</a>.</p><p>Moreover, Professional Social Network search results are <a href="https://nubela.co/blog/how-to-bypass-Professional%20Social%20Network-search-limit/" rel="noreferrer">limited to a maximum of 1000 results</a>. This means that companies with more than 1000 employees will never be returned exhaustively.</p> ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ Can You Retrieve a List of Employees at a Given Company With the Professional Social Network API? ]]></title>
        <description><![CDATA[ Professional Social Network is full of tons of B2B data, especially in relation to employment. What if you could effortlessly tap into this data and use it for your benefit? ]]></description>
        <link>https://nubela.co/blog/how-can-i-retrieve-a-list-of-all-employees-within-a-company-through-the-linkedin-api/</link>
        <guid isPermaLink="false">60c1c204418c82000107dd11</guid>
        <category><![CDATA[ proxycurl ]]></category>
        <dc:creator><![CDATA[ Colton Randolph | Technical Writer ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2023/08/cr.jpg"/>
        <pubDate>Fri, 02 Feb 2024 12:21:00 +0800</pubDate>
        <media:content url="" medium="image"/>
        <content:encoded><![CDATA[ <p>Unfortunately Professional Social Network no longer offers any kind of employee data through their official API. But you can use third-party Professional Social Network APIs like <a href="https://proxycurl.com/?ref=nubela.co">Proxycurl</a> (hello! that's us) instead.</p>
<p>It can be as simple as a query to our <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#company-api-employee-listing-endpoint">Employee Listing Endpoint</a> with your specified company, here's a Python example for pulling all Apple employees:</p>
<pre><code class="language-python">import requests

api_key = 'Your_API_Key_Here'
headers = {'Authorization': 'Bearer ' + api_key}
api_endpoint = 'https://nubela.co/proxycurl/api/Professional Social Network/company/employees/'
params = {
    'url': 'https://www.professionalsocialnetwork.com/company/apple/',
}
try:
    response = requests.get(api_endpoint, params=params, headers=headers)
    print("Status Code:", response.status_code)

    print(response.json())

except requests.exceptions.RequestException as e:
    print("Error:", e)
</code></pre>
<p>That said, want some proof it actually works?</p>
<p>We've prepared a JSON export of:</p>
<ul>
<li>A list of 1,000 current Apple employees</li>
<li>A list of 10 current enriched Apple employees</li>
</ul>
<p>You can download the two demo lists of current Apple employees here:</p>

<!--kg-card-begin: html-->
<p></p><form class="stylized-form" action="https://sendy.nubela.co/subscribe" method="POST" accept-charset="utf-8">
	<label for="name">Enter your first name:</label><br/>
	<input type="text" name="name" id="name"/>
	<br/>
    <br>
	<label for="email">Enter your email:</label><br/>
	<input type="email" name="email" id="email"/><br/><div style="display:none;">
	<label for="hp">HP</label><br/>
	<input type="text" name="hp" id="hp"/>
	</div>
	<input type="hidden" name="list" value="mt5P892xl8892j0vdL8uiBLh892w"/>
	<input type="hidden" name="subform" value="yes"/>
    <br>
    <input type="submit" name="submit" id="submit" value="Download the lists"/>
</form>
<!--kg-card-end: html-->
<p>(Check your email after submission.)</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/02/iScreen-Shoter---Google-Chrome---240124153727.png" class="kg-image" alt="Exporting Apple employees" loading="lazy" width="2000" height="436"><figcaption><span style="white-space: pre-wrap;">Exporting Apple employees</span></figcaption></figure><p>Of course, you could export even more yourself.</p>
<p>Continuing on:</p>
<h2 id="how-proxycurls-api-works">How Proxycurl's API works</h2>
<h3 id="step-1-we-scrape-data-from-various-sources">Step 1) We scrape data from various sources</h3>
<p>The first step to our API is scraping data from various sources. Our primary data source is Professional Social Network (we actually sell our public Professional Social Network database dump, it's called <a href="https://nubela.co/proxycurl/linkdb?ref=nubela.co">LinkDB</a>), but we also use additional data sources for enrichment.</p>
<p>We take care of all the headaches involved like dealing with cookies, proxies, CAPTCHAs, Professional Social Network accounts, and beyond. There is zero risk of losing your Professional Social Network account with a third-party Professional Social Network API in comparison to desktop or browser-based Professional Social Network data extraction solutions.</p>
<h3 id="step-2-data-parsing-filtering-and-organizing">Step 2) Data parsing, filtering, and organizing</h3>
<p>Profiles are parsed into JSON format, making it easier to organize and filter.</p>
<p>This makes the next step easier (and makes it easier for you to receive and manipulate this B2B data however you like).</p>
<h3 id="step-3-we-offer-that-data-through-our-api-endpoints">Step 3) We offer that data through our API endpoints</h3>
<p>Using our exhaustive B2B database -  LinkDB, we're able to offer API endpoints like the <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#company-api-employee-listing-endpoint">Employee Listing Endpoint</a>, which allows you to pull a list of employees for any given Professional Social Network company URL just as well as the official API would work--if they had it.</p>
<h2 id="how-to-use-proxycurls-third-party-professional-social-network-api-to-pull-a-list-of-employees">How to use Proxycurl's third-party Professional Social Network API to pull a list of employees</h2>
<h3 id="step-1-create-a-proxycurl-account">Step 1) Create a Proxycurl account</h3>
<p>The first thing you'll need to do is <a href="https://nubela.co/proxycurl/auth/register?ref=nubela.co">create your Proxycurl account for free here</a>.</p>
<p>Now, in terms of pricing, we use a credit usage system for billing. For example, it costs 3 credits per every employee returned on our Employee Listing Endpoint, without any additional enrichment parameters enabled (<a href="https://nubela.co/proxycurl/pricing?ref=nubela.co">full pricing breakdown is available here</a>).</p>
<p>When you create your account, you'll receive 15 free trial credits with the ability to complete various onboarding tasks for more, and then the ability to further test out our API by topping up as low as $10. It's very cost-effective, even for tight budgets.</p>
<h3 id="step-2-set-up-your-environment">Step 2) Set up your environment</h3>
<p>There are plenty of different ways to pull data from an API. Pick your language of choice, and run with it.</p>
<p>In my case, I'm familiar with Python, so I use Python. If you need a Python IDE, <a href="https://www.jetbrains.com/pycharm/?ref=nubela.co">PyCharm</a> is a good free one.</p>
<p><a href="https://nubela.co/proxycurl/docs?ref=nubela.co#company-api-employee-listing-endpoint">In our documentation</a>, we even provide a Python example. Using that same example we can pull a list of employees incredibly easily.</p>
<h3 id="searching-for-software-developers-at-apple">Searching for software developers at Apple</h3>
<p>Let's say we want to look up "software developer" employees actively working for Apple in the United States.</p>
<p>Here's how we could do that using a bit Python and the Employee Listing Endpoint:</p>
<pre><code class="language-python">import requests

api_key = 'Your_API_Key_Here'
headers = {'Authorization': 'Bearer ' + api_key}
api_endpoint = 'https://nubela.co/proxycurl/api/Professional Social Network/company/employees/'
params = {
    'url': 'https://www.professionalsocialnetwork.com/company/apple/',
    'country': 'us',
    'enrich_profiles': 'enrich',
    'role_search': '(?i)Software Developer',
    'page_size': '10',
    'employment_status': 'current',
}
try:
    response = requests.get(api_endpoint, params=params, headers=headers)
    print("Status Code:", response.status_code)

    print(response.json())

except requests.exceptions.RequestException as e:
    print("Error:", e)
</code></pre>
<h3 id="step-3-retrieve-data-from-our-api">Step 3) Retrieve data from our API</h3>
<p>Click run on the Python script above to query our API and...</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/02/iScreen-Shoter---PyCharm---240124162622.png" class="kg-image" alt="Employee Listing Endpoint result returned via PyCharm" loading="lazy" width="2000" height="1250"><figcaption><span style="white-space: pre-wrap;">Employee Listing Endpoint result returned via PyCharm</span></figcaption></figure><p>Success! You'll see a list of 10 enriched United States Apple employees currently in the "software developer" role returned.</p>
<p>The immediate page will be 10 contacts due to the enrichment (which is our maximum with the enrichment feature enabled), but with pagination you can navigate through all of the available employees that fit that role.</p>
<h3 id="can-i-pull-all-employees-at-a-given-company-with-the-employee-listing-endpoint">Can I pull <em>all</em> employees at a given company with the Employee Listing Endpoint?</h3>
<p>Yes, the only parameter that's required with this API endpoint is <code>'url': 'https://www.professionalsocialnetwork.com/company/apple/'</code> (specifying the company), so if you remove the rest, as shown at the very beginning of this article, you'll get the full list of employees in entirety.</p>
<h2 id="other-possibilities-with-proxycurl">Other possibilities with Proxycurl</h2>
<h3 id="pull-all-jobs-posted-by-a-given-company">Pull all jobs posted by a given company</h3>
<p>Being able to search all employees at a given company is nice, but what about being able to pull current job listings for a given company?</p>
<p>We can help out with that too, with our <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#jobs-api-job-search-endpoint">Job Search Endpoint</a>.</p>
<p>Using some simple Python, we could pull all Professional Social Network jobs currently posted by Microsoft with the following code:</p>
<pre><code class="language-python">import requests

api_key = 'Your_API_Key_Here'
headers = {'Authorization': 'Bearer ' + api_key}
api_endpoint = 'https://nubela.co/proxycurl/api/v2/Professional Social Network/company/job'
params = {
    'search_id': '1035',
}
try:
    response = requests.get(api_endpoint, params=params, headers=headers)
    print("Status Code:", response.status_code)

    print(response.json())

except requests.exceptions.RequestException as e:
    print("Error:", e)
</code></pre>
<p>Which would then return a result similar to this, listing all jobs:</p>
<pre><code class="language-json">Response Content: {"job": [{"company": "Microsoft", "company_url": "https://www.professionalsocialnetwork.com/company/microsoft", "job_title": "Software Engineer I", "job_url": "https://www.professionalsocialnetwork.com/jobs/view/software-engineer-i-at-microsoft-3765124541", "list_date": "2024-01-10", "location": "Bengaluru, Karnataka, India"}, {"company": "Microsoft", "company_url": "https://www.professionalsocialnetwork.com/company/microsoft", "job_title": "Data Analyst", "job_url": "https://www.professionalsocialnetwork.com/jobs/view/data-analyst-at-microsoft-3751276114", "list_date": "2024-01-10", "location": "Hyderabad, Telangana, India"}, {"company": "Microsoft", "company_url": "https://www.professionalsocialnetwork.com/company/microsoft", "job_title": "Software Engineer \u2013 Web", "job_url": "https://www.professionalsocialnetwork.com/jobs/view/software-engineer-%E2%80%93-web-at-microsoft-3770150941", "list_date": "2024-01-14", "location": "Hyderabad, Telangana, India"}, {"company": "Microsoft", "company_url": "https://www.professionalsocialnetwork.com/company/microsoft", "job_title": "Applied Sciences IC2", "job_url": "https://www.professionalsocialnetwork.com/jobs/view/applied-sciences-ic2-at-microsoft-3794668824", "list_date": "2024-01-05", "location": "Bengaluru, Karnataka, India"}, {"company": "Microsoft", "company_url": "https://www.professionalsocialnetwork.com/company/microsoft", "job_title": "Administrative Assistant (contract)", "job_url": "https://www.professionalsocialnetwork.com/jobs/view/administrative-assistant-contract-at-microsoft-3805494445", "list_date": "2024-01-15", "location": "Redmond, WA"}, {"company": "Microsoft", "company_url": "https://www.professionalsocialnetwork.com/company/microsoft", "job_title": "Communications Manager", "job_url": "https://www.professionalsocialnetwork.com/jobs/view/communications-manager-at-microsoft-3782203074", "list_date": "2024-01-05", "location": "Gurgaon, Haryana, India"}, {"company": "Microsoft", "company_url": "https://www.professionalsocialnetwork.com/company/microsoft", "job_title": "Administrative Assistant (contract)", "job_url": "https://www.professionalsocialnetwork.com/jobs/view/administrative-assistant-contract-at-microsoft-3802685788", "list_date": "2024-01-10", "location": "Redmond, WA"}, {"company": "Microsoft", "company_url": "https://www.professionalsocialnetwork.com/company/microsoft", "job_title": "Researcher", "job_url": "https://www.professionalsocialnetwork.com/jobs/view/researcher-at-microsoft-3799970948", "list_date": "2024-01-11", "location": "Bengaluru, Karnataka, India"}, {"company": "Microsoft", "company_url": "https://www.professionalsocialnetwork.com/company/microsoft", "job_title": "Researcher", "job_url": "https://www.professionalsocialnetwork.com/jobs/view/researcher-at-microsoft-3799973649", "list_date": "2024-01-11", "location": "Bengaluru, Karnataka, India"}
</code></pre>
<p>Going on, and on, listing all jobs posted unless otherwise filtered with parameters.</p>
<p>We also have a few additional relevant endpoints that could help you out here, such as:</p>
<ul>
<li><a href="https://nubela.co/proxycurl/docs?ref=nubela.co#jobs-api-jobs-listing-count-endpoint">Job Listing Count Endpoint</a>, which counts the number of jobs posted by a company on Professional Social Network</li>
<li><a href="https://nubela.co/proxycurl/docs?ref=nubela.co#jobs-api-job-profile-endpoint">Job Profile Endpoint</a>, which returns a structured result of a job listing</li>
<li><a href="https://nubela.co/proxycurl/docs?ref=nubela.co#company-api-employee-count-endpoint">Employee Count Endpoint</a>, which counts the number of employees at a given company</li>
</ul>
<h2 id="cons-of-third-party-professional-social-network-apis">Cons of third-party Professional Social Network APIs</h2>
<h3 id="youll-only-get-public-data">You'll only get public data</h3>
<p>Many people wonder is "[scraping Professional Social Network legal?](<a href="https://nubela.co/blog/is-Professional">https://nubela.co/blog/is-Professional</a> Social Network-scraping-legal/)" and the short answer is yes, but we have to respect individuals' privacy settings.</p>
<p>This means we won't have quite as much data available as Professional Social Network itself, as we only work with [publicly available data](<a href="https://nubela.co/blog/what-is-the-difference-between-Professional">https://nubela.co/blog/what-is-the-difference-between-Professional</a> Social Network-public-profiles-vs-Professional Social Network-private-profiles-with-python-code-samples/), but we come close (hundreds of millions of profiles).</p>
<h3 id="concerns-about-reliability">Concerns about reliability</h3>
<p>You might be concerned about relying on a business or product that relies on another business or product. The main concept after all of a third-party API is scraping data from another source.</p>
<p>What if a new update on said data source wipes out the ability to supply new data overnight?</p>
<p>While I can't speak on every API out there that relies on scraping their data from another source, I can speak on our API-- we've invested significantly in our infrastructure to make sure we're set for years to come. There are zero concerns about reliability when it comes to pulling Professional Social Network data from our API for years to come.</p>
<h2 id="pros-of-third-party-professional-social-network-apis">Pros of third-party Professional Social Network APIs</h2>
<h3 id="way-more-possibilities">Way more possibilities</h3>
<p>Professional Social Network limits you a lot more than a third-party Professional Social Network API would. Our goal is to create new solutions for you that should be possible, but aren't.</p>
<p>We offer unique endpoints that allow you to pull all kinds of data that otherwise wouldn't be available officially.</p>
<h3 id="flawless-integration-into-your-systems">Flawless integration into your systems</h3>
<p>Between all of our different API endpoints, we definitely have what you need in terms of Professional Social Network data, and we've given you the perfect way to build that data into your systems. We love software engineers.</p>
<p>In comparison to a platform that intentionally makes it difficult to extract data from it; we welcome it, and we love to see all of the interesting projects that are built using the B2B data we provide as a foundation.</p>
<h2 id="not-bad-huh">Not bad, huh?</h2>
<p>You now have practically all of the employee data you could ever possibly need, and you can integrate it according to your needs.</p>
<p>If you haven't already, <a href="https://nubela.co/proxycurl/auth/register?ref=nubela.co">you can click here to create your account today and receive 15 free credits to try out a few basic actions and get a feel for our API</a>.</p>
<p>Thanks for reading! Here's to fewer limitations and more data!</p>
<p><strong>P.S.</strong> Have any questions? Don't hesitate to reach out to us at "<a href="mailto:hello@nubela.co">hello@nubela.co</a>" for help.</p>
<p><strong>P.P.S.</strong> I'm figuring you're probably pretty technically inclined if you're searching for anything related to an API, but we also have an alternative convenient Google Sheets extension named <a href="https://sapiengraph.com/?ref=nubela.co">Sapiengraph</a> that'll allow you to conveniently pull the exact same employee quality data into a Google Sheet. <a href="https://sapiengraph.com/?ref=nubela.co">You might give it a try</a>.</p>
 ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ Need more credits? We&#x27;ve got you covered, simply tweet. ]]></title>
        <description><![CDATA[ We have been listening to your feedback and compliments, and we heard how much you&#39;ve been loving Proxycurl.


Thus the launch of our &quot;Tweet for credits&quot; initiative that serves to reward customers like yourself!


What is it about?


Simply tweet (or post in the terms of ]]></description>
        <link>https://nubela.co/blog/proxycurl-tweet-for-credits/</link>
        <guid isPermaLink="false">65a63823e44b0e0001f4d04c</guid>
        <category><![CDATA[ faq ]]></category>
        <dc:creator><![CDATA[ Joseph Lim | Head of Marketing ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2023/03/Screenshot-2023-03-13-at-5.30.12-PM-min.png"/>
        <pubDate>Wed, 17 Jan 2024 09:56:06 +0800</pubDate>
        <media:content url="" medium="image"/>
        <content:encoded><![CDATA[ <p>We have been listening to your feedback and compliments, and we heard how much you've been loving Proxycurl.</p>
<p>Thus the launch of our <em>"Tweet for credits"</em> initiative that serves to reward customers like yourself!</p>
<p><em><strong>What is it about?</strong></em></p>
<p>Simply tweet <em>(or post in the terms of x.com)</em> and you'll get rewarded with credits for more Proxycurl goodness.</p>
<p><em><strong>How?</strong></em></p>
<p>Go to your <a href="https://nubela.co/proxycurl/dashboard/billing/buy-credits?ref=nubela.co">Proxycurl dashboard</a>:</p>
<ol>
<li>Click <code>Buy credits</code></li>
<li>Go to <code>Pay-as-you-go</code> section (or <code>Ala-carte</code> for customers with existing subscriptions)</li>
<li>Click <code>Tweet and get free credits</code></li>
</ol>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/01/SCR-20240112-onec.png" class="kg-image" alt="Tweet and get free Proxycurl credits" loading="lazy" width="2544" height="1292"><figcaption><span style="white-space: pre-wrap;">Check it out in your Proxycurl dashboard</span></figcaption></figure><p>And, you'll see this:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/01/SCR-20240112-omab.png" class="kg-image" alt="Mechanics for Proxycurl tweet for credits" loading="lazy" width="2570" height="1498"><figcaption><span style="white-space: pre-wrap;">Try it now!</span></figcaption></figure><p>Let us know what you think?</p>
<p>If this feature proves to be popular, we'll enhance it to reward credits at a higher volume/frequency.</p>
<p>Tweet away!</p>
<p>P.S. If you want even more credits at better rates, <a href="https://nubela.co/blog/announcement-new-annual-plans-and-pricing-updates-2024/">we announced our brand new Annual Plans</a> that unlock all Enterprise-grade features for you. Check it out.</p>
 ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ Comparing the 18 Best Professional Social Network Automation Tools (2025 Update) ]]></title>
        <description><![CDATA[ Professional Social Network can be a great resource for any business, but it’s even better with automation. Discover the top 18 Professional Social Network Automation tools in 2025 ]]></description>
        <link>https://nubela.co/blog/best-linkedin-automation-tools/</link>
        <guid isPermaLink="false">6595d52be44b0e0001f4cabd</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Colton Randolph | Technical Writer ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2023/08/cr.jpg"/>
        <pubDate>Tue, 16 Jan 2024 10:52:59 +0800</pubDate>
        <media:content url="" medium="image"/>
        <content:encoded><![CDATA[ <p>Going into 2025, Professional Social Network remains an [indispensable resource for many businesses](<a href="https://nubela.co/blog/all-50-types-of-Professional">https://nubela.co/blog/all-50-types-of-Professional</a> Social Network-data-you-can-get-youll-be-surpised/), particularly in the B2B sector.</p>
<p>Professional Social Network automation tools, allow you to skip the manual process and save time. The only concern really is the off chance of getting banned from the platform (depending on the tool used).</p>
<p>That said, there are many types of Professional Social Network automation tools and they all work differently, accomplish different tasks, and appeal to different people and companies.</p>
<p>It can be a bit confusing trying to find the right Professional Social Network automation tool for you. That is where I come in.</p>
<p>In today’s article, I’ll review and compare the <strong>18 best Professional Social Network automation tools for 2025</strong>, so you can choose the ideal option based on your needs.</p>
<table>
<thead>
<tr>
<th>Professional Social Network automation tool</th>
<th>Overall rating (/5)</th>
<th>Pricing</th>
<th>Ease of use</th>
<th>Developer friendliness</th>
<th>Stability</th>
</tr>
</thead>
<tbody>
<tr>
<td>[Proxycurl](<a href="https://nubela.co/blog/best-Professional">https://nubela.co/blog/best-Professional</a> Social Network-automation-tools/#1-proxycurl)</td>
<td>★★★★½ (4.5/5)</td>
<td>★★★★</td>
<td>★★★</td>
<td>★★★★★</td>
<td>★★★★★</td>
</tr>
<tr>
<td>[PhantomBuster](<a href="https://nubela.co/blog/best-Professional">https://nubela.co/blog/best-Professional</a> Social Network-automation-tools/#2-phantombuster)</td>
<td>★★★½ (3.5/5)</td>
<td>★★★</td>
<td>★★★★★</td>
<td>★★</td>
<td>★★★</td>
</tr>
<tr>
<td>[Professional Social Network Scraper](<a href="https://nubela.co/blog/best-Professional">https://nubela.co/blog/best-Professional</a> Social Network-automation-tools/#3-Professional Social Network-scraper)</td>
<td>★★★★ (4/5)</td>
<td>★★★★★</td>
<td>★★</td>
<td>★★★★★</td>
<td>★★★★</td>
</tr>
<tr>
<td>[Meet Alfred](<a href="https://nubela.co/blog/best-Professional">https://nubela.co/blog/best-Professional</a> Social Network-automation-tools/#4-meet-alfred)</td>
<td>★★★★ (4/5)</td>
<td>★★★★</td>
<td>★★★★</td>
<td>★★★</td>
<td>★★★★</td>
</tr>
<tr>
<td>[Linked Helper](<a href="https://nubela.co/blog/best-Professional">https://nubela.co/blog/best-Professional</a> Social Network-automation-tools/#5-linked-helper)</td>
<td>★★★ (3/5)</td>
<td>★★★★</td>
<td>★★★</td>
<td>★★</td>
<td>★★★</td>
</tr>
<tr>
<td>[Lusha](<a href="https://nubela.co/blog/best-Professional">https://nubela.co/blog/best-Professional</a> Social Network-automation-tools/#6-lusha)</td>
<td>★★★½ (3.5/5)</td>
<td>★★★</td>
<td>★★★★</td>
<td>★★★</td>
<td>★★★★</td>
</tr>
<tr>
<td>[Waalaxy](<a href="https://nubela.co/blog/best-Professional">https://nubela.co/blog/best-Professional</a> Social Network-automation-tools/#7-waalaxy)</td>
<td>★★★★ (4/5)</td>
<td>★★★★</td>
<td>★★★★</td>
<td>★★</td>
<td>★★★★</td>
</tr>
<tr>
<td>[Dux-Soup](<a href="https://nubela.co/blog/best-Professional">https://nubela.co/blog/best-Professional</a> Social Network-automation-tools/#8-dux-soup)</td>
<td>★★★½ (3.5/5)</td>
<td>★★★★</td>
<td>★★★★</td>
<td>★★</td>
<td>★★★</td>
</tr>
<tr>
<td>[Octopus CRM](<a href="https://nubela.co/blog/best-Professional">https://nubela.co/blog/best-Professional</a> Social Network-automation-tools/#9-octopus-crm)</td>
<td>★★★★ (4/5)</td>
<td>★★★★</td>
<td>★★★★</td>
<td>★★★</td>
<td>★★★★</td>
</tr>
<tr>
<td>[LinkedFusion](<a href="https://nubela.co/blog/best-Professional">https://nubela.co/blog/best-Professional</a> Social Network-automation-tools/#10-linkedfusion)</td>
<td>★★★ (3/5)</td>
<td>★★★</td>
<td>★★★</td>
<td>★★★</td>
<td>★★★</td>
</tr>
<tr>
<td>[Salesflow](<a href="https://nubela.co/blog/best-Professional">https://nubela.co/blog/best-Professional</a> Social Network-automation-tools/#11-salesflow)</td>
<td>★★★★ (4/5)</td>
<td>★★★</td>
<td>★★★★</td>
<td>★★★★</td>
<td>★★★★</td>
</tr>
<tr>
<td>[Evaboot](<a href="https://nubela.co/blog/best-Professional">https://nubela.co/blog/best-Professional</a> Social Network-automation-tools/#12-evaboot)</td>
<td>★★★★ (4/5)</td>
<td>★★★★★</td>
<td>★★★★</td>
<td>★★</td>
<td>★★★★</td>
</tr>
<tr>
<td>[LiProspect](<a href="https://nubela.co/blog/best-Professional">https://nubela.co/blog/best-Professional</a> Social Network-automation-tools/#13-liprospect)</td>
<td>★★★½ (3.5/5)</td>
<td>★★★★</td>
<td>★★★★</td>
<td>★★</td>
<td>★★★</td>
</tr>
<tr>
<td>[LinkedCamp](<a href="https://nubela.co/blog/best-Professional">https://nubela.co/blog/best-Professional</a> Social Network-automation-tools/#14-linkedcamp)</td>
<td>★★★★ (4/5)</td>
<td>★★★★</td>
<td>★★★★</td>
<td>★★</td>
<td>★★★★</td>
</tr>
<tr>
<td>[Professional Social Network API](<a href="https://nubela.co/blog/best-Professional">https://nubela.co/blog/best-Professional</a> Social Network-automation-tools/#15-Professional Social Network-api-unofficial)</td>
<td>★★★★ (4/5)</td>
<td>★★★★★</td>
<td>★★</td>
<td>★★★★★</td>
<td>★★★★</td>
</tr>
<tr>
<td>[Dripify](<a href="https://nubela.co/blog/best-Professional">https://nubela.co/blog/best-Professional</a> Social Network-automation-tools/#16-dripify)</td>
<td>★★★★ (4/5)</td>
<td>★★★★</td>
<td>★★★★</td>
<td>★★★</td>
<td>★★★★</td>
</tr>
<tr>
<td>[UpLead](<a href="https://nubela.co/blog/best-Professional">https://nubela.co/blog/best-Professional</a> Social Network-automation-tools/#17-uplead)</td>
<td>★★★★ (4/5)</td>
<td>★★★</td>
<td>★★★★</td>
<td>★★★★</td>
<td>★★★★</td>
</tr>
<tr>
<td>[Zopto](<a href="https://nubela.co/blog/best-Professional">https://nubela.co/blog/best-Professional</a> Social Network-automation-tools/#18-zopto)</td>
<td>★★★½ (3.5/5)</td>
<td>★★★</td>
<td>★★★★</td>
<td>★★★</td>
<td>★★★</td>
</tr>
</tbody>
</table>
<p>But first, let me explain a bit more about Professional Social Network automation tools:</p>
<h2 id="the-different-types-of-professional-social-network-automation-actions">The different types of Professional Social Network automation actions</h2>
<h3 id="push-automation">Push automation</h3>
<p>These are actions taken directly on Professional Social Network’s platform.</p>
<p>Imagine you're using a tool that helps you interact with Professional Social Network as if you were doing it yourself, but more efficiently and automatically. This includes activities like posting updates, sending messages, or issuing connection requests.</p>
<p>The key aspect of push automation tools is that they “push” content or interactions out from your account. General Professional Social Network automation tools tend to fall more under the push category.</p>
<p>However, it's important to note that since these actions are tied directly to your personal or business Professional Social Network account, there's a risk of account suspension if used excessively or inappropriately.</p>
<h3 id="pull-automation">Pull automation</h3>
<p>On the other side, we have pull automation tools, which are more about data extraction.</p>
<p>Instead of pushing content out, pull automation tools ”'pull” information in from [Professional Social Network’s vast database](<a href="https://nubela.co/blog/linkdb-an-exhaustive-dataset-of-Professional">https://nubela.co/blog/linkdb-an-exhaustive-dataset-of-Professional</a> Social Network-members-and-companies/).</p>
<p>This could mean gathering data for market research, lead generation, or analyzing trends within your industry.</p>
<p>The advantage here is the ability to leverage Professional Social Network's rich B2B data for various business purposes.</p>
<p>(<strong>Note</strong>: If you haven’t already seen our [Definitive Guide to Professional Social Network Automation, you should give it a read here](<a href="https://nubela.co/blog/guide-to-Professional">https://nubela.co/blog/guide-to-Professional</a> Social Network-automation/) to learn more about the two different types of automation actions mentioned above, and their respective business applications.)</p>
<h2 id="the-different-things-you-can-automate-on-professional-social-network">The different things you can automate on Professional Social Network</h2>
<p>Every single Professional Social Network automation tool is going to be either push or pull type, but you can also combine push and pull. And between these two different types of automation actions, there’s a lot you can do with Professional Social Network…</p>
<p>For starters, here are a few key things you can automate:</p>
<ul>
<li>Sending Professional Social Network connection requests</li>
<li>Sending Professional Social Network messages</li>
<li>Posting on Professional Social Network</li>
<li>Responding to comments and messages on Professional Social Network</li>
<li><a href="https://nubela.co/proxycurl/people-api?ref=nubela.co">Extracting data from Professional Social Network</a> (name, email, what they do, who they work for, etc.)</li>
<li>Probably whatever else you’re interested in automating</li>
</ul>
<p>For the most part, you can automate practically every action involved with Professional Social Network. You just need to find the right automation tool for your desired tasks.</p>
<p>Okay, now that we’ve covered the basics, let’s define the criteria for determining how to pick the right Professional Social Network automation tool for you.</p>
<h2 id="how-to-choose-the-right-professional-social-network-automation-tool">How to choose the right Professional Social Network automation tool</h2>
<p>It’s safe to say picking the perfect Professional Social Network automation tool can feel like finding a needle in a haystack.</p>
<p>My plan is to make that process simpler for you.</p>
<p>First, you need to define what you’re actually looking for.</p>
<p>Here's a bit more on how to make that choice:</p>
<h3 id="your-objectives">Your objectives</h3>
<p>This is where you start. Ask yourself, <em>“What am I trying to achieve on Professional Social Network?”</em></p>
<p>If you're gunning for more leads, look for a tool with strong lead-generation features.</p>
<p>If it's about spreading the word with killer content, find something that excels in <a href="https://nubela.co/blog/how-salesforge-integrates-rich-prospecting-data-with-chatgpt-to-automatically-personalize-emails/">content marketing automation</a>.</p>
<p>Or maybe you're looking to grow your network? Then a tool that simplifies and amplifies your networking efforts is your go-to.</p>
<p>Match the tool to your goals to ensure it's doing the heavy lifting where you need it most.</p>
<h3 id="budget">Budget</h3>
<p>Let's talk money. While some free tools offer a taste of automation, their limitations can quickly hinder your progress and become a waste of time.</p>
<p>After you move on from the free options? It's tempting to go for the cheapest option but remember, you often get what you pay for.</p>
<p>That said, the most expensive tool isn't always the best either. Weigh the features each tool offers against its price.</p>
<p>If a tool is a bit pricier but pays for itself and more, who cares?</p>
<h3 id="ease-of-use">Ease of use</h3>
<p>While some individuals and/or businesses might require more sophisticated Professional Social Network automation tools like an <a href="https://nubela.co/proxycurl/?ref=nubela.co">API</a> <em>(ELI5: like a fast food menu for data)</em> for deeper integration and customization, others may benefit from simpler, more user-friendly tools, like a <a href="https://sapiengraph.com/?ref=nubela.co">Google Chrome extension</a>.</p>
<p>Whether you need a more advanced and technical Professional Social Network automation tool or a more straightforward solution, we'll guide you to the right choice.</p>
<p>It's also essential to select tools that provide robust support resources like documentation, informative guides (like this one!), and responsive customer support.</p>
<p>This ensures that, regardless of the complexity of the tool, your team has the necessary resources for a smooth onboarding process and continued learning.</p>
<h3 id="integration-capabilities">Integration capabilities</h3>
<p>This is crucial. Your Professional Social Network automation tool should play nice with the other tools in your toolkit.</p>
<p>Can it <a href="https://nubela.co/blog/crm-data-enrichment-the-easiest-way-to-increase-your-sales-conversion-rates/">integrate seamlessly with your CRM</a> or other marketing platforms? This integration streamlines your workflow, making data management and strategy implementation a breeze.</p>
<h3 id="get-this-mix-right-and-you%E2%80%99ve-got-a-powerful-ally">Get this mix right, and you’ve got a powerful ally</h3>
<p>Choosing the right Professional Social Network automation tool is all about balancing your goals, budget, technical experience, and integration needs.</p>
<p>Okay, now that we’ve established the basics as well as the basis for finding the right Professional Social Network automation tool for you, let’s start the comparison:</p>
<h2 id="the-top-18-professional-social-network-automation-tools">The top 18 Professional Social Network automation tools</h2>
<h2 id="1-proxycurl">1. Proxycurl</h2>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/01/image19.jpg" class="kg-image" alt="Proxycurl's homepage" loading="lazy" width="1907" height="964"><figcaption><span style="white-space: pre-wrap;">Proxycurl's homepage</span></figcaption></figure><p>In the nature of transparency, you’re on Proxycurl’s blog right now. But I’m going to be as neutral and fair as possible here.</p>
<p>While we do work great for many businesses, anywhere from VCs to startups and thousands of other different types of B2B use cases… we admit, we aren’t the right fit for everyone.</p>
<p>Our primary Professional Social Network automation tool is going to be our API. You can use it to automate the process of extracting vast amounts of B2B data from Professional Social Network. Then you can use that data for different purposes.</p>
<p>Proxycurl isn’t just a “Professional Social Network scraper,” though. Our API is derived from [publicly scraped data](<a href="https://nubela.co/blog/what-is-the-difference-between-Professional">https://nubela.co/blog/what-is-the-difference-between-Professional</a> Social Network-public-profiles-vs-Professional Social Network-private-profiles-with-python-code-samples/) available on Professional Social Network and then enriched with third-party sources. So it uses more than just Professional Social Network for its data (which is part of our secret sauce and what makes us stand out).</p>
<p>Our API is also designed to be scalable and fit into your systems and workflows. A traditional Professional Social Network scraper that’s based in a Google Chrome browser isn’t particularly scalable.</p>
<p>For one, Proxycurl doesn’t require you to provide your own Professional Social Network accounts. We scrape all the data for you. Whereas a Google Chrome extension would obviously require you to provide your own accounts, proxies, etc. There are a lot more headaches involved in comparison.</p>
<p>You can incorporate Proxycurl into just about any workflow, and you won’t have to worry about anything. It just works and pulls enriched B2B data into your applications, for whatever you need it for.</p>
<p>That said, <a href="https://nubela.co/proxycurl/docs?ref=nubela.co">Proxycurl has many different API endpoints</a> that all do different things.</p>
<p>Let me show you an example of extracting data from Professional Social Network using two of the most commonly used Proxycurl endpoints:</p>
<h3 id="extracting-professional-social-network-data-with-proxycurl">Extracting Professional Social Network data with Proxycurl</h3>
<p>The main endpoint you’ll use to extract data from a Professional Social Network profile is going to be our <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#people-api">Person Profile Endpoint</a>.</p>
<p>Using some simple Python (or your language of choice), you could extract data from any Professional Social Network profile you’d like.</p>
<p>The following Python script pulls all the information it can find by using nothing but a Professional Social Network profile URL:</p>
<pre><code class="language-python">
import requests

api_key = 'Your_API_Key_Here'

headers = {'Authorization': 'Bearer ' + api_key}

api_endpoint = 'https://nubela.co/proxycurl/api/v2/Professional Social Network'

params = {

    'Professional Social Network_profile_url': 'https://www.professionalsocialnetwork.com/in/colton-randolph',

    'extra': 'include',

    'github_profile_id': 'include',

    'facebook_profile_id': 'include',

    'twitter_profile_id': 'include',

    'personal_contact_number': 'include',

    'personal_email': 'include',

    'inferred_salary': 'include',

    'skills': 'include',

    'use_cache': 'if-recent',

    'fallback_to_cache': 'on-error',

}

# Making the GET request

response = requests.get(api_endpoint, params=params, headers=headers)

# Printing the status code and response content

print(f"Status Code: {response.status_code}")

print("Response Content:")

print(response.json)  

</code></pre>
<p>Pretty easy, and the best part is it’s incredibly convenient. You just need a basic level of technical knowledge and be able to copy and paste a Python script. <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#company-api-company-profile-endpoint">You can also do this for Professional Social Network companies as well</a>.</p>
<p>Now let me show you another option:</p>
<h3 id="instantly-tap-into-a-huge-professional-social-network-data-set-zero-scraping-required">Instantly tap into a huge Professional Social Network data set (zero scraping required)</h3>
<p>The second option is if you’re not actively pulling specific prospects, profile by profile, and enriching them, you can search through our massive Professional Social Network dataset (we call it <a href="https://nubela.co/proxycurl/linkdb?ref=nubela.co">LinkDB</a>) via our <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#search-api-person-search-endpoint">Person Search Endpoint</a>.</p>
<p>While we do sell our [entire Professional Social Network dataset via LinkDB](<a href="https://nubela.co/blog/linkdb-an-exhaustive-dataset-of-Professional">https://nubela.co/blog/linkdb-an-exhaustive-dataset-of-Professional</a> Social Network-members-and-companies/), our Person Search Endpoint is powered by that same data set. It includes hundreds of publicly scraped profiles on people and companies.</p>
<p>It provides probably the most convenient way to access Professional Social Network’s data without having to do any scraping at all. This time you don’t even need Professional Social Network profile URLs either. You can search with specifying parameters that would identify your ideal prospect.</p>
<p>Let’s say you’re looking to reach out to software developers. The following Python would search our entire database for “software developers”:</p>
<pre><code class="language-python">
import json, requests

headers = {'Authorization': 'Bearer ' + 'Your_API_Key_Here'}

api_endpoint = 'https://nubela.co/proxycurl/api/search/person/'

params = {

    'country': 'US',

    'enrich_profiles': 'enrich',

    'page_size': '10',

    'past_role_title':'(?i)software developer',

}

response = requests.get(api_endpoint, params=params, headers=headers)

result = response.json()

print(json.dumps(result, indent=2))

</code></pre>
<p>Then if you want to narrow this down further, there are additional parameters you can use, for example, adding the following:</p>
<pre><code class="language-python">
'past_company_Professional Social Network_profile_url': 'https://www.professionalsocialnetwork.com/company/stripe',

</code></pre>
<p>Would then search for software developers working at Stripe.</p>
<p>There are dozens of other different ways you could customize your search, just <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#search-api-person-search-endpoint">view all of the search parameters on our documentation here</a>. You can also <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#search-api-company-search-endpoint">search for companies</a> as well.</p>
<p>Either way, between our respective endpoints, you have several convenient options to have tons of B2B data at your fingertips.</p>
<p>If you're interested in giving Proxycurl a try, you can <a href="https://nubela.co/proxycurl/auth/register?ref=nubela.co">click here to create your account for free</a>.</p>
<h3 id="who-proxycurl-is-for">Who Proxycurl is for</h3>
<p>Proxycurl is best for businesses needing extensive B2B data extraction from Professional Social Network, suitable for VCs, startups, and other various B2B use cases (specifically marketing and sales).</p>
<p>Proxycurl is ideal for developers or people with some technical backgrounds that value stability and scalabity. It can be built into any application or workflow.</p>
<h3 id="proxycurl-pricing">Proxycurl pricing</h3>
<p>We use a credit-based system to charge for API actions.</p>
<p>You can <a href="https://nubela.co/proxycurl/pricing?ref=nubela.co">learn more about our pricing here</a>, but <a href="https://nubela.co/proxycurl/auth/register?ref=nubela.co">you will receive 15 free credits upon signing up</a> so that you can demo the product with no risk.</p>
<h3 id="proxycurl-ratings">Proxycurl ratings</h3>
<p>Pricing: ★★★★☆ (4/5)<br>
Ease of use: ★★★☆☆ (3/5)<br>
Developer friendliness: ★★★★★ (5/5)<br>
Stability: ★★★★★ (5/5)<br>
Overall: ★★★★½ (4.5/5)</p>
<h1 id=""></h1>
<h2 id="2-phantombuster">2. PhantomBuster</h2>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/01/image6.jpg" class="kg-image" alt="PhantomBuster's homepage" loading="lazy" width="1904" height="968"><figcaption><span style="white-space: pre-wrap;">PhantomBuster's homepage</span></figcaption></figure><p>No coding skills? No problem!</p>
<p>PhantomBuster bridges the gap with its user-friendly interface and powerful automation features like the Professional Social Network Network Booster and Profile Scraper.</p>
<p>It primarily relies on a browser extension to automate actions, but once you install the browser it’s pretty easy to select a variety of different automation actions, like scraping a profile, and so on.</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/01/image14.jpg" class="kg-image" alt="PhantomBuster's Professional Social Network automation possibilities" loading="lazy" width="1894" height="961"><figcaption><span style="white-space: pre-wrap;">PhantomBuster's Professional Social Network automation possibilities</span></figcaption></figure><p>Generally speaking the biggest limitation of PhantomBuster is the same limitation of about any browser extension. They’re convenient and easy to get the hang of, but they’re also not scalable at all.</p>
<p>At the end of the day, automation is against Professional Social Network’s rules, so when you’re using a browser extension you’ll always be using your own accounts.  You can automate intelligently and get by for a while, but it’s always a risk.</p>
<p>And if you’re extracting data at scale from Professional Social Network you will get your accounts limited and/or banned. It’s a fact.</p>
<p>That’s just something you’ll have to deal with, with browser extensions. PhantomBuster included.</p>
<p>But it’s certainly a valuable Professional Social Network automation tool, nonetheless.</p>
<h3 id="who-phantombuster-is-for">Who PhantomBuster is for</h3>
<p>Ideal for users who prefer a user-friendly interface without requiring coding skills. It offers various automation features, including the Professional Social Network Network Booster and Profile Scraper, and is more suitable for individual users or small teams.</p>
<h3 id="phantombuster-pricing">PhantomBuster pricing</h3>
<p>PhantomBuster starts at $69 per month and that includes the possibility of running 5 Phantoms (different automation actions) concurrently. That also limits you to 20 hours per month of automation execution time.</p>
<p>You can increase those numbers by upgrading to the next package at $159 per month and you’ll receive 80 hours of execution time and 15 Phantoms respectively.</p>
<p>The next package more than triples those amounts and will run you $439 per month.</p>
<h3 id="phantombuster-ratings">PhantomBuster ratings</h3>
<p>Pricing: ★★★☆☆ (3/5)<br>
Ease of use: ★★★★★ (5/5)<br>
Developer friendliness: ★★☆☆☆ (2/5)<br>
Stability: ★★★☆☆ (3/5)<br>
Overall: ★★★½☆ (3.5/5)</p>
<h2 id="3-professional-social-network-scraper">3.  Professional Social Network Scraper</h2>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/01/image8.jpg" class="kg-image" alt="Professional Social Network Scraper's GitHub repository" loading="lazy" width="1850" height="961"><figcaption><span style="white-space: pre-wrap;">Professional Social Network Scraper's GitHub repository</span></figcaption></figure><p>Professional Social Network Scraper is a free and open-source Python library that allows you to scrape both people and company profiles.</p>
<p>It isn’t very sexy, or user-friendly (you need to be heavily technically inclined to be able to use it), but it can certainly help out for Professional Social Network data extraction.</p>
<h3 id="who-professional-social-network-scraper-is-for">Who Professional Social Network Scraper is for</h3>
<p>Professional Social Network Scraper is best for technically inclined users who need a basic, no-frills data extraction tool.</p>
<h3 id="professional-social-network-scraper-pricing">Professional Social Network Scraper pricing</h3>
<p>Thanks to the open-source community, this project can be tested and used by anyone for free.</p>
<h3 id="professional-social-network-scraper-ratings">Professional Social Network Scraper ratings</h3>
<p>Pricing: ★★★★★ (5/5)<br>
Ease of use: ★★☆☆☆ (2/5)<br>
Developer friendliness: ★★★★★ (5/5)<br>
Stability: ★★★★☆ (4/5)<br>
Overall: ★★★★☆ (4/5)</p>
<h2 id="4-meet-alfred">4.  Meet Alfred</h2>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/01/image9.jpg" class="kg-image" alt="Meet Alred's homepage" loading="lazy" width="1882" height="957"><figcaption><span style="white-space: pre-wrap;">Meet Alred's homepage</span></figcaption></figure><p>Meet Alfred takes outreach to the next level.</p>
<p>It definitely leans on the data extraction, lead generation, CRM &amp; and outreach side of things. But it does indeed have other basic Professional Social Network automation features like post-scheduling.</p>
<p>If you’re looking to extract data and immediately put it into outreach sequences, it’s definitely a good Professional Social Network automation tool to give a try:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/01/image13.jpg" class="kg-image" alt="Meet Alfred's Professional Social Network automation possibilities" loading="lazy" width="1910" height="917"><figcaption><span style="white-space: pre-wrap;">Meet Alfred's Professional Social Network automation possibilities</span></figcaption></figure><h3 id="who-meet-alfred-is-for">Who Meet Alfred is for</h3>
<p>Geared towards users focusing on data extraction, lead generation, CRM, and outreach. Suitable for users who want to combine data extraction with immediate outreach sequences.</p>
<h3 id="meet-alfred-pricing">Meet Alfred pricing</h3>
<p>Meet Alfred starts at $59 per month for 3 active campaigns and does not include some of its automation capabilities. You can upgrade to unlimited campaigns and all automation features for $89 per month. After that, enterprise plans are available starting at $345 per month and it includes 5 users.</p>
<h3 id="meet-alfred-ratings">Meet Alfred ratings</h3>
<p>Pricing: ★★★★☆ (4/5)<br>
Ease of use: ★★★★☆ (4/5)<br>
Developer friendliness: ★★★☆☆ (3/5)<br>
Stability: ★★★★☆ (4/5)<br>
Overall: ★★★★☆ (4/5)</p>
<h2 id="5-linked-helper">5.  Linked Helper</h2>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/01/image15.jpg" class="kg-image" alt="Professional Social Network Helper's homepage" loading="lazy" width="1999" height="1150"><figcaption><span style="white-space: pre-wrap;">Professional Social Network Helper's homepage</span></figcaption></figure><p>Linked Helper simplifies essential tasks like sending connection requests, following up with leads, and replying to messages.</p>
<p>It only works via a desktop application:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/01/image21.jpg" class="kg-image" alt="Professional Social Network Helper's user interface" loading="lazy" width="1999" height="1010"><figcaption><span style="white-space: pre-wrap;">Professional Social Network Helper's user interface</span></figcaption></figure><p>Of course, you’ll need to provide your own computing power, proxies, and accounts, but it provides a pretty simple, no-frills, way to automate most of the actions you would need on Professional Social Network (data scraping, outreach campaigns, a basic CRM).</p>
<h3 id="who-professional-social-network-helper-is-for">Who Professional Social Network Helper is for</h3>
<p>Professional Social Network Helper simplifies tasks like sending connection requests and managing leads. It operates via a desktop application and is suitable for users needing basic Professional Social Network automation without sophisticated features.</p>
<h3 id="professional-social-network-helper-pricing">Professional Social Network Helper pricing</h3>
<p>Professional Social Network Helper starts with a free trial, after that, you’re looking at either $15 per month or $45 per month respectively. The difference is the first plan is relatively limited and doesn’t include all of the lead generation features of the more expensive plan.</p>
<h3 id="professional-social-network-helper-ratings">Professional Social Network Helper ratings</h3>
<p>Pricing: ★★★★☆ (4/5)<br>
Ease of use: ★★★☆☆ (3/5)<br>
Developer friendliness: ★★☆☆☆ (2/5)<br>
Stability: ★★★☆☆ (3/5)<br>
Overall: ★★★☆☆ (3/5)</p>
<h2 id="6-lusha">6.  Lusha</h2>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/01/image24-1.jpg" class="kg-image" alt="Lusha's homepage" loading="lazy" width="1894" height="963"><figcaption><span style="white-space: pre-wrap;">Lusha's homepage</span></figcaption></figure><p>Lusha is primarily a data provider with enrichment possibilities. Their most recent offerings are introducing some new outreach automation possibilities as well.</p><p>While they don't go out there and blatantly say it, their dataset certainly consists of primarily Professional Social Network data. </p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/01/iScreen-Shoter---Google-Chrome---240104172924.png" class="kg-image" alt="Lusha's user interface" loading="lazy" width="1918" height="967"><figcaption><span style="white-space: pre-wrap;">Lusha's user interface</span></figcaption></figure><h3 id="who-lusha-is-for">Who Lusha is for</h3>
<p>Lusha is primarily a data provider with enrichment capabilities, recently introducing outreach automation features. It's best for users who need a mix of data extraction and outreach automation.</p>
<h3 id="lusha-pricing">Lusha pricing</h3>
<p>Lusha offers a very limited freemium plan, and then after that uses a credit based system. Their cheapest plan starts at $39 per month.</p>
<h3 id="lusha-ratings">Lusha ratings</h3>
<p>Pricing: ★★★☆☆ (3/5)<br>
Ease of use: ★★★★☆ (4/5)<br>
Developer friendliness: ★★★☆☆ (3/5)<br>
Stability: ★★★★☆ (4/5)<br>
Overall: ★★★½☆ (3.5/5)</p>
<h2 id="7-waalaxy">7. Waalaxy</h2>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/01/image3.jpg" class="kg-image" alt="Waalaxy's homepage" loading="lazy" width="1898" height="963"><figcaption><span style="white-space: pre-wrap;">Waalaxy's homepage</span></figcaption></figure><p>Waalaxy is a Google Chrome extension that focuses more on data extraction than anything but also has some additional messaging features available.</p>
<p>It’s just a very simple Google Chrome extension that exports some data points from Professional Social Network, there isn’t much to say about it. It works well.</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/01/image5.png" class="kg-image" alt="Waalaxy's Google Chrome extension on Professional Social Network" loading="lazy" width="1920" height="955"><figcaption><span style="white-space: pre-wrap;">Waalaxy's Google Chrome extension on Professional Social Network</span></figcaption></figure><h3 id="who-waalaxy-is-for">Who Waalaxy is for</h3>
<p>Waalaxy is a Google Chrome extension focusing on data extraction. It’s simple and effective for users needing basic <a href="https://www.surfe.com/sales-navigator-list-export/?ref=nubela.co">data export from Professional Social Network</a>.</p>
<h3 id="waalaxy-pricing">Waalaxy pricing</h3>
<p>Waalaxy has a limited freemium version. After that, you’re looking at €112 per month and €160 per month respectively. The main difference between the tiers is the amount of invitations you can automate, and the amount of emails you can look up with Professional Social Network profile URLs.</p>
<h3 id="waalaxy-ratings">Waalaxy ratings</h3>
<p>Pricing: ★★★★☆ (4/5)<br>
Ease of use: ★★★★☆ (4/5)<br>
Developer friendliness: ★★☆☆☆ (2/5)<br>
Stability: ★★★★☆ (4/5)<br>
Overall: ★★★★☆ (4/5)</p>
<h2 id="8-dux-soup">8. Dux-Soup</h2><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/01/image2.jpg" class="kg-image" alt="Dux-Soup's homepage" loading="lazy" width="1900" height="912"><figcaption><span style="white-space: pre-wrap;">Dux-Soup's homepage</span></figcaption></figure><p>Dux-Soup is a Google Chrome extension that automates profile views, lead generation, follow-up sequences, and more.</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/01/image16.jpg" class="kg-image" alt="Dux-Soup's user interface" loading="lazy" width="800" height="500"><figcaption><span style="white-space: pre-wrap;">Dux-Soup's user interface</span></figcaption></figure><p>It even allows you to make outreach funnels. It works pretty well for outreach, but it carries the same limitations as all other Google Chrome based Professional Social Network automation tools.</p>
<h3 id="who-dux-soup-is-for">Who Dux-Soup is for</h3>
<p>Dux-Soup offers automation for things like profile views, lead generation, and follow-up sequences via a Chrome extension. It's suitable for users wanting to make outreach funnels and basic Professional Social Network automations.</p>
<h3 id="dux-soup-pricing">Dux-Soup pricing</h3>
<p>Dux-Soup starts at $14.99 per month for a basic Professional Social Network automation barebones version. The next plan will run you $55 per month and includes more integration and outreach options. The largest plan will run you $99 per month and gives you everything as well as “cloud” outreach campaigns, running on their servers, rather than in your browser. But the Google Chrome extension would still be partially required outside of the outreach campaigns.</p>
<h3 id="dux-soup-ratings">Dux-Soup ratings</h3>
<p>Pricing: ★★★★☆ (4/5)<br>
Ease of use: ★★★★☆ (4/5)<br>
Developer friendliness: ★★☆☆☆ (2/5)<br>
Stability: ★★★☆☆ (3/5)<br>
Overall: ★★★½☆ (3.5/5)</p>
<h2 id="9-octopus-crm">9. Octopus CRM</h2>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/01/image11.jpg" class="kg-image" alt="Octopus CRM's homepage" loading="lazy" width="1909" height="867"><figcaption><span style="white-space: pre-wrap;">Octopus CRM's homepage</span></figcaption></figure><p>Octopus CRM is a B2B lead generation powerhouse, offering automated messaging campaigns, detailed analytics, and powerful data enrichment features. It too functions through a Google Chrome extension:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/01/image7.png" class="kg-image" alt="Octopus CRM's Google Chrome extension" loading="lazy" width="1024" height="547"><figcaption><span style="white-space: pre-wrap;">Octopus CRM's Google Chrome extension</span></figcaption></figure><p>Octopus CRM specifically caters to marketing and sales teams looking to streamline their lead-generation and conversion process.</p>
<p>It works pretty well for what it’s designed for and does include the normal standard Professional Social Network automation features all of these other tools offer. It would be nice if it was cloud-based and operated more like a traditional CRM, though.</p>
<h3 id="who-octopus-crm-is-for">Who Octopus CRM is for</h3>
<p>Octopus CRM is a B2B lead generation tool offering automated messaging campaigns and analytics. A general CRM of sorts. Ideal for marketing and sales teams focusing on lead-generation and outreach.</p>
<h3 id="octopus-crm-pricing">Octopus CRM pricing</h3>
<p>Octopus CRM starts at $9.99 per month with pretty limited features and works its way up to $39.99 per month for unlimited everything. It’s pretty affordable.</p>
<h3 id="octopus-crm-ratings">Octopus CRM ratings</h3>
<p>Pricing: ★★★★☆ (4/5)<br>
Ease of use: ★★★★☆ (4/5)<br>
Developer friendliness: ★★★☆☆ (3/5)<br>
Stability: ★★★★☆ (4/5)<br>
Overall: ★★★★☆ (4/5)</p>
<h2 id="10-linkedfusion">10. LinkedFusion</h2>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/01/image20.jpg" class="kg-image" alt="LinkedFusion's homepage" loading="lazy" width="1885" height="954"><figcaption><span style="white-space: pre-wrap;">LinkedFusion's homepage</span></figcaption></figure><p>LinkedFusion is a desktop-based Professional Social Network automation tool that offers several general Professional Social Network automation possibilities. </p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/01/image12.jpg" class="kg-image" alt="LinkedFusion's user interface" loading="lazy" width="1024" height="684"><figcaption><span style="white-space: pre-wrap;">LinkedFusion's user interface</span></figcaption></figure><p>Things like scheduling posts, prospecting, exporting data, outreach automation, and beyond. A pretty good swiss army knife for any one focused on Professional Social Network (specifically sales or marketing).</p>
<p>Though, you will run the risk of getting banned considering you'll be using your own account and will need to consider things like proxies, having a computer running constantly, etc.</p>
<p>It does have quite a bit of integration possibilities, specifically with CRMs.</p>
<h3 id="who-linkedfusion-is-for">Who LinkedFusion is for</h3>
<p>LinkedFusion is Aa desktop-based tool offering a range of Professional Social Network automation features. It's suitable for users focusing on scheduling posts, prospecting, exporting data, and outreach automation.</p>
<h3 id="linkedfusion-pricing">LinkedFusion pricing</h3>
<p>Professional Social NetworkFusion starts at $69.95 per month and works its way up from there as you gain features.</p>
<h3 id="linkedfusion-ratings">LinkedFusion ratings</h3>
<p>Pricing: ★★★☆☆ (3/5)<br>
Ease of use: ★★★☆☆ (3/5)<br>
Developer friendliness: ★★★☆☆ (3/5)<br>
Stability: ★★★☆☆ (3/5)<br>
Overall: ★★★☆☆ (3/5)</p>
<h2 id="11-salesflow">11. Salesflow</h2>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/01/image22.jpg" class="kg-image" alt="Salesflow's homepage" loading="lazy" width="1900" height="962"><figcaption><span style="white-space: pre-wrap;">Salesflow's homepage</span></figcaption></figure><p>Salesflow is a Professional Social Network Sales Navigator based outreach tool. You can use it without Professional Social Network Sales Navigator, but it won’t be nearly as effective.</p>
<p>Its features, like automated email warm-ups, personalized outreach sequences, and deal tracking, make it ideal for sales teams looking to close more deals on Professional Social Network. It’ll flawlessly integrate with your CRM.</p>
<p>Though, I’ll admit, my experience with it was a bit clunky. When I signed up my Professional Social Network account integration wasn’t working. The platform wouldn’t allow me to remove or change it, and kept redirecting me to sign up for a trial:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/01/image10.jpg" class="kg-image" alt="Salesflow's user interface" loading="lazy" width="1919" height="966"><figcaption><span style="white-space: pre-wrap;">Salesflow's user interface</span></figcaption></figure><p>Maybe you’ll have a smoother experience?</p>
<h3 id="who-salesflow-is-for">Who Salesflow is for</h3>
<p>Based on Professional Social Network Sales Navigator, it’s ideal for sales teams focusing on personalized outreach sequences, outreach, and closing outbound deals.</p>
<h3 id="salesflow-pricing">Salesflow pricing</h3>
<p>You can start off with a 7-day free trial, and then after that, you’ll start at $99/mo per user (and upwards from there, depending on the quantity of outreach you want to do).</p>
<h3 id="salesflow-ratings">Salesflow ratings</h3>
<p>Pricing: ★★★☆☆ (3/5)<br>
Ease of use: ★★★★☆ (4/5)<br>
Developer friendliness: ★★★★☆ (4/5)<br>
Stability: ★★★★☆ (4/5)<br>
Overall: ★★★★☆ (4/5)</p>
<h2 id="12-evaboot">12. Evaboot</h2>
<p>Evaboot takes your existing Professional Social Network Sales Navigator subscription to the next level by automating the lead exportation and enrichment process.</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/01/image25.jpg" class="kg-image" alt="Evaboot's homepage" loading="lazy" width="1897" height="965"><figcaption><span style="white-space: pre-wrap;">Evaboot's homepage</span></figcaption></figure><p>You’ll need both a Professional Social Network Sales Navigator subscription and to download a Google Chrome extension, but from that point forward, it’s incredibly simple to export Professional Social Network leads with Evaboot:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/01/image1.jpg" class="kg-image" alt="Evaboot's user interface" loading="lazy" width="1919" height="968"><figcaption><span style="white-space: pre-wrap;">Evaboot's user interface</span></figcaption></figure><h3 id="who-evaboot-is-for">Who Evaboot is for</h3>
<p>Evaboot enhances Professional Social Network Sales Navigator by automating lead exportation and enrichment. It's mainly for sales and marketing teams interested in lead generation.</p>
<h3 id="evaboot-pricing">Evaboot pricing</h3>
<p>Evaboot starts at $19 for 1,000 export credits, which does not include emails. For 1,000 export credits that also include emails, you’re looking at $39. It goes up from there, but subscriptions do include discounts as well as bulk purchases.</p>
<h3 id="evaboot-ratings">Evaboot ratings</h3>
<p>Pricing: ★★★★★ (5/5)<br>
Ease of use: ★★★★☆ (4/5)<br>
Developer friendliness: ★★☆☆☆ (2/5)<br>
Stability: ★★★★☆ (4/5)<br>
Overall: ★★★★☆ (4/5)</p>
<h2 id="13-liprospect">13. LiProspect</h2>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/01/image27.jpg" class="kg-image" alt="LiProspect's homepage" loading="lazy" width="1897" height="966"><figcaption><span style="white-space: pre-wrap;">LiProspect's homepage</span></figcaption></figure><p>LiProspect is a cloud based Professional Social Network prospecting tool.</p>
<p>It entirely centers around outreach, and doesn't have anything like scheduling automation or export possibilities.</p>
<p>While it does outreach well, it's pretty limited on everything else. Not a good general tool.</p>
<p>You also do run the risk of getting banned as you'll have to link your account for the outreach.</p>
<h3 id="who-liprospect-is-for">Who LiProspect is for</h3>
<p>LiProspect is a cloud-based prospecting tool centered around outreach. It's suitable for users needing a specialized tool for Professional Social Network outreach.</p>
<h3 id="liprospect-pricing">LiProspect pricing</h3>
<p>LiProspect has one plan for $44.95 per month.</p>
<h3 id="liprospect-ratings">LiProspect ratings</h3>
<p>Pricing: ★★★★☆ (4/5)<br>
Ease of use: ★★★★☆ (4/5)<br>
Developer friendliness: ★★☆☆☆ (2/5)<br>
Stability: ★★★☆☆ (3/5)<br>
Overall: ★★★½☆ (3.5/5)</p>
<h2 id="14-linkedcamp">14. LinkedCamp</h2>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/01/image26.jpg" class="kg-image" alt="LinkedCamp's homepage" loading="lazy" width="1898" height="964"><figcaption><span style="white-space: pre-wrap;">LinkedCamp's homepage</span></figcaption></figure><p>LinkedCamp is a cloud-based tool that offers a comprehensive suite of automation features for lead generation, prospecting, and engagement.</p>
<p>It leans heavily on its outreach automation possibilities:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/01/iScreen-Shoter---Google-Chrome---240105171406.png" class="kg-image" alt="LinkedCamps outreach automation" loading="lazy" width="726" height="565"><figcaption><span style="white-space: pre-wrap;">LinkedCamp's outreach automation</span></figcaption></figure><h3 id="who-linkedcamp-is-for">Who LinkedCamp is for</h3>
<p>LinkedCamp offer a comprehensive suite of automation features for lead generation and engagement. It's ideal for users needing cloud-based Professional Social Network outreach automation.</p>
<h3 id="linkedcamp-pricing">LinkedCamp pricing</h3>
<p>LinkedCamp starts at $69 per month and works its way up from there.</p>
<h3 id="linkedcamp-ratings">LinkedCamp ratings</h3>
<p>Pricing: ★★★★☆ (4/5)<br>
Ease of use: ★★★★☆ (4/5)<br>
Developer friendliness: ★★☆☆☆ (2/5)<br>
Stability: ★★★★☆ (4/5)<br>
Overall: ★★★★☆ (4/5)</p>
<h2 id="15-professional-social-network-api-unofficial">15. Professional Social Network API (unofficial)</h2>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/01/image23.jpg" class="kg-image" alt="Professional Social Network API's GitHub repository" loading="lazy" width="1857" height="965"><figcaption><span style="white-space: pre-wrap;">Professional Social Network API's GitHub repository</span></figcaption></figure><p>Professional Social Network API is a third-party and free, open-source Python API available on GitHub. It allows you to programmatically send messages, get jobs, and search profiles Professional Social Network profiles.</p>
<p>While Professional Social Network API offers a powerful means to interact with Professional Social Network data, it is essential to note that it requires technical expertise to implement effectively. It's more suited towards developers.</p>
<p>Be willing to debug a little bit and figure things out.</p>
<h3 id="who-professional-social-network-api-is-for">Who Professional Social Network API is for</h3>
<p>Professional Social Network API is a free and open-source Python API for interacting with Professional Social Network data. It's best suited for developers.</p>
<h3 id="professional-social-network-api-unofficial-pricing">Professional Social Network API (unofficial) pricing</h3>
<p>Entirely free.</p>
<h3 id="professional-social-network-api-unofficial-ratings">Professional Social Network API (unofficial) ratings</h3>
<p>Pricing: ★★★★★ (5/5)<br>
Ease of use: ★★☆☆☆ (2/5)<br>
Developer friendliness: ★★★★★ (5/5)<br>
Stability: ★★★★☆ (4/5)<br>
Overall: ★★★★☆ (4/5)</p>
<h2 id="16-dripify">16.  Dripify</h2>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/01/image17.jpg" class="kg-image" alt="Dripify's homepage" loading="lazy" width="1903" height="966"><figcaption><span style="white-space: pre-wrap;">Dripify's homepage</span></figcaption></figure><p>Dripify is a comprehensive Professional Social Network automation platform designed to simplify and enhance marketing efforts on Professional Social Network.</p>
<p>It offers a range of features, including automated messaging, lead generation, and campaign management.</p>
<p>It provides tools for creating and executing automated Professional Social Network outreach campaigns, making it easier for businesses to engage with prospects and nurture leads.</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/01/iScreen-Shoter---Google-Chrome---240105172559.png" class="kg-image" alt="Dripify automations" loading="lazy" width="755" height="525"><figcaption><span style="white-space: pre-wrap;">Dripify automations</span></figcaption></figure><h3 id="who-dripify-is-for">Who Dripify is for</h3>
<p>Dripify is a comprehensive platform designed for marketing on Professional Social Network, offering automated messaging and campaign management. It's suitable for businesses focusing on automated Professional Social Network outreach campaigns.</p>
<h3 id="dripify-pricing">Dripify pricing</h3>
<p>Dripify starts at $39 per month for a limited plan and works its way up from there.</p>
<h3 id="dripify-ratings">Dripify ratings</h3>
<p>Pricing: ★★★★☆ (4/5)<br>
Ease of use: ★★★★☆ (4/5)<br>
Developer friendliness: ★★★☆☆ (3/5)<br>
Stability: ★★★★☆ (4/5)<br>
Overall: ★★★★☆ (4/5)</p>
<h2 id="17-uplead">17. UpLead</h2><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/01/image4.jpg" class="kg-image" alt="UpLead's homepage" loading="lazy" width="1901" height="967"><figcaption><span style="white-space: pre-wrap;">UpLead's homepage</span></figcaption></figure><p>UpLead is a B2B lead extraction platform that helps businesses find and connect with potential customers. It offers a database of verified B2B contacts and companies, enabling users to build targeted prospect lists.</p>
<p>While they don't really explicitly say it, it definitely does come from scraping Professional Social Network. It works well for lead generation and enrichment, but there aren't much automation possibilities.</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/01/iScreen-Shoter---Google-Chrome---240105174332.png" class="kg-image" alt="UpLead user interface" loading="lazy" width="1919" height="966"><figcaption><span style="white-space: pre-wrap;">UpLead user interface</span></figcaption></figure><h3 id="who-uplead-is-for">Who UpLead is for</h3>
<p>UpLead is a B2B lead extraction platform, ideal for building targeted prospect lists. It's for businesses focusing on lead generation and enrichment.</p>
<h3 id="uplead-pricing">UpLead pricing</h3>
<p>UpLead starts with a free trial and a few trial credits, but after that the first plan will run you $99 per month, and works its way up from there using a credit based system.</p>
<h3 id="uplead-ratings">UpLead ratings</h3>
<p>Pricing: ★★★☆☆ (3/5)<br>
Ease of use: ★★★★☆ (4/5)<br>
Developer friendliness: ★★★★☆ (4/5)<br>
Stability: ★★★★☆ (4/5)<br>
Overall: ★★★★☆ (4/5)</p>
<h2 id="18-zopto">18. Zopto</h2>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/01/iScreen-Shoter---Google-Chrome---240103171117.png" class="kg-image" alt="Zopto's homepage" loading="lazy" width="1810" height="1122"><figcaption><span style="white-space: pre-wrap;">Zopto's homepage</span></figcaption></figure><p>Zopto focuses on sales outreach specifically, and adds in Professional Social Network as another channel (Professional Social Network messages and posts).</p>
<p>Relatively similar to Dripify and LinkedCamp, but all have their own slight differences.</p>
<p>Outside of sales outreach, it's cloud-based and adds in a hint of AI like just about every tool out there nowadays.</p>
<p>If you're looking for crossplatform sales outreach, it's not a bad tool to give a try.</p>
<figure class="kg-card kg-image-card"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/01/zopto-1024x576.png" class="kg-image" alt="" loading="lazy" width="1024" height="576"></figure><h3 id="who-zopto-is-for">Who Zopto is for</h3>
<p>Zopto focuses on sales outreach, adding Professional Social Network as an outreach channel. It's suitable for users seeking cross-platform sales outreach and those needing Professional Social Network cloud-based solutions with a hint of AI.</p>
<h3 id="zopto-pricing">Zopto pricing</h3>
<p>Zopto starts at $195 per month and works its way up from there, eventually landing at $780 per month for an agency license.</p>
<h3 id="zopto-ratings">Zopto ratings</h3>
<p>Pricing: ★★★☆☆ (3/5)<br>
Ease of use: ★★★★☆ (4/5)<br>
Developer friendliness: ★★★☆☆ (3/5)<br>
Stability: ★★★☆☆ (3/5)<br>
Overall: ★★★½☆ (3.5/5)</p>
<h1 id="the-ratings-of-all-18-professional-social-network-automation-tools">The ratings of all 18 Professional Social Network automation tools</h1>
<table>
<thead>
<tr>
<th>Professional Social Network automation tool</th>
<th>Overall rating (/5)</th>
<th>Pricing</th>
<th>Ease of use</th>
<th>Developer friendliness</th>
<th>Stability</th>
</tr>
</thead>
<tbody>
<tr>
<td>[Proxycurl](<a href="https://nubela.co/blog/best-Professional">https://nubela.co/blog/best-Professional</a> Social Network-automation-tools/#1-proxycurl)</td>
<td>★★★★½ (4.5/5)</td>
<td>★★★★</td>
<td>★★★</td>
<td>★★★★★</td>
<td>★★★★★</td>
</tr>
<tr>
<td>[PhantomBuster](<a href="https://nubela.co/blog/best-Professional">https://nubela.co/blog/best-Professional</a> Social Network-automation-tools/#2-phantombuster)</td>
<td>★★★½ (3.5/5)</td>
<td>★★★</td>
<td>★★★★★</td>
<td>★★</td>
<td>★★★</td>
</tr>
<tr>
<td>[Professional Social Network Scraper](<a href="https://nubela.co/blog/best-Professional">https://nubela.co/blog/best-Professional</a> Social Network-automation-tools/#3-Professional Social Network-scraper)</td>
<td>★★★★ (4/5)</td>
<td>★★★★★</td>
<td>★★</td>
<td>★★★★★</td>
<td>★★★★</td>
</tr>
<tr>
<td>[Meet Alfred](<a href="https://nubela.co/blog/best-Professional">https://nubela.co/blog/best-Professional</a> Social Network-automation-tools/#4-meet-alfred)</td>
<td>★★★★ (4/5)</td>
<td>★★★★</td>
<td>★★★★</td>
<td>★★★</td>
<td>★★★★</td>
</tr>
<tr>
<td>[Linked Helper](<a href="https://nubela.co/blog/best-Professional">https://nubela.co/blog/best-Professional</a> Social Network-automation-tools/#5-linked-helper)</td>
<td>★★★ (3/5)</td>
<td>★★★★</td>
<td>★★★</td>
<td>★★</td>
<td>★★★</td>
</tr>
<tr>
<td>[Lusha](<a href="https://nubela.co/blog/best-Professional">https://nubela.co/blog/best-Professional</a> Social Network-automation-tools/#6-lusha)</td>
<td>★★★½ (3.5/5)</td>
<td>★★★</td>
<td>★★★★</td>
<td>★★★</td>
<td>★★★★</td>
</tr>
<tr>
<td>[Waalaxy](<a href="https://nubela.co/blog/best-Professional">https://nubela.co/blog/best-Professional</a> Social Network-automation-tools/#7-waalaxy)</td>
<td>★★★★ (4/5)</td>
<td>★★★★</td>
<td>★★★★</td>
<td>★★</td>
<td>★★★★</td>
</tr>
<tr>
<td>[Dux-Soup](<a href="https://nubela.co/blog/best-Professional">https://nubela.co/blog/best-Professional</a> Social Network-automation-tools/#8-dux-soup)</td>
<td>★★★½ (3.5/5)</td>
<td>★★★★</td>
<td>★★★★</td>
<td>★★</td>
<td>★★★</td>
</tr>
<tr>
<td>[Octopus CRM](<a href="https://nubela.co/blog/best-Professional">https://nubela.co/blog/best-Professional</a> Social Network-automation-tools/#9-octopus-crm)</td>
<td>★★★★ (4/5)</td>
<td>★★★★</td>
<td>★★★★</td>
<td>★★★</td>
<td>★★★★</td>
</tr>
<tr>
<td>[LinkedFusion](<a href="https://nubela.co/blog/best-Professional">https://nubela.co/blog/best-Professional</a> Social Network-automation-tools/#10-linkedfusion)</td>
<td>★★★ (3/5)</td>
<td>★★★</td>
<td>★★★</td>
<td>★★★</td>
<td>★★★</td>
</tr>
<tr>
<td>[Salesflow](<a href="https://nubela.co/blog/best-Professional">https://nubela.co/blog/best-Professional</a> Social Network-automation-tools/#11-salesflow)</td>
<td>★★★★ (4/5)</td>
<td>★★★</td>
<td>★★★★</td>
<td>★★★★</td>
<td>★★★★</td>
</tr>
<tr>
<td>[Evaboot](<a href="https://nubela.co/blog/best-Professional">https://nubela.co/blog/best-Professional</a> Social Network-automation-tools/#12-evaboot)</td>
<td>★★★★ (4/5)</td>
<td>★★★★★</td>
<td>★★★★</td>
<td>★★</td>
<td>★★★★</td>
</tr>
<tr>
<td>[LiProspect](<a href="https://nubela.co/blog/best-Professional">https://nubela.co/blog/best-Professional</a> Social Network-automation-tools/#13-liprospect)</td>
<td>★★★½ (3.5/5)</td>
<td>★★★★</td>
<td>★★★★</td>
<td>★★</td>
<td>★★★</td>
</tr>
<tr>
<td>[LinkedCamp](<a href="https://nubela.co/blog/best-Professional">https://nubela.co/blog/best-Professional</a> Social Network-automation-tools/#14-linkedcamp)</td>
<td>★★★★ (4/5)</td>
<td>★★★★</td>
<td>★★★★</td>
<td>★★</td>
<td>★★★★</td>
</tr>
<tr>
<td>[Professional Social Network API](<a href="https://nubela.co/blog/best-Professional">https://nubela.co/blog/best-Professional</a> Social Network-automation-tools/#15-Professional Social Network-api-unofficial)</td>
<td>★★★★ (4/5)</td>
<td>★★★★★</td>
<td>★★</td>
<td>★★★★★</td>
<td>★★★★</td>
</tr>
<tr>
<td>[Dripify](<a href="https://nubela.co/blog/best-Professional">https://nubela.co/blog/best-Professional</a> Social Network-automation-tools/#16-dripify)</td>
<td>★★★★ (4/5)</td>
<td>★★★★</td>
<td>★★★★</td>
<td>★★★</td>
<td>★★★★</td>
</tr>
<tr>
<td>[UpLead](<a href="https://nubela.co/blog/best-Professional">https://nubela.co/blog/best-Professional</a> Social Network-automation-tools/#17-uplead)</td>
<td>★★★★ (4/5)</td>
<td>★★★</td>
<td>★★★★</td>
<td>★★★★</td>
<td>★★★★</td>
</tr>
<tr>
<td>[Zopto](<a href="https://nubela.co/blog/best-Professional">https://nubela.co/blog/best-Professional</a> Social Network-automation-tools/#18-zopto)</td>
<td>★★★½ (3.5/5)</td>
<td>★★★</td>
<td>★★★★</td>
<td>★★★</td>
<td>★★★</td>
</tr>
</tbody>
</table>
<h2 id="all-18-professional-social-network-automation-tools-features-comparison">All 18 Professional Social Network automation tools; Features Comparison</h2>
<table>
<thead>
<tr>
<th>Tool name</th>
<th>Data extraction</th>
<th>General Professional Social Network automation</th>
<th>Outreach automation</th>
<th>Who it's for</th>
<th>How it works</th>
<th>What it does</th>
</tr>
</thead>
<tbody>
<tr>
<td>Proxycurl</td>
<td>Excellent, enriches data</td>
<td>Focused on profile scraping</td>
<td>None</td>
<td>Marketing and sales teams, VCs, startups, variousB2B cases</td>
<td>API &amp; entire dataset</td>
<td>Enriches and scrapes Professional Social Network profiles</td>
</tr>
<tr>
<td>PhantomBuster</td>
<td>Good for small-scale</td>
<td>Basic automations</td>
<td>Some</td>
<td>Individual users, small teams</td>
<td>Cloud-based/Browser extension</td>
<td>Automates various Professional Social Network tasks</td>
</tr>
<tr>
<td>Meet Alfred</td>
<td>Not much</td>
<td>Automated outreach</td>
<td>Excellent</td>
<td>Small marketing and sales teams</td>
<td>Desktop</td>
<td>Automates Professional Social Network outreach</td>
</tr>
<tr>
<td>Waalaxy</td>
<td>Yes, some</td>
<td>Data extraction and outreach related automations</td>
<td>Solid for outreach</td>
<td>Marketing and sales teams</td>
<td>Browser extension</td>
<td>Simplifies Professional Social Network outreach</td>
</tr>
<tr>
<td>Professional Social Network Scraper</td>
<td>Yes, for techical users</td>
<td>Scraping focused</td>
<td>No</td>
<td>Developers</td>
<td>Desktop/Script</td>
<td>Scrapes Professional Social Network data</td>
</tr>
<tr>
<td>Octopus CRM</td>
<td>Some</td>
<td>Data extraction / CRM related automations</td>
<td>Yes</td>
<td>Marketing and sales teams</td>
<td>Browser extension</td>
<td>Manages Professional Social Network outreach and sales pipelines</td>
</tr>
<tr>
<td>Linked Helper</td>
<td>Basic</td>
<td>Basic automation</td>
<td>Basic</td>
<td>Developers</td>
<td>Desktop</td>
<td>Provides basic Professional Social Network automation</td>
</tr>
<tr>
<td>Lusha</td>
<td>Yes, and enrichment</td>
<td>Data-focused</td>
<td>Outreach possible</td>
<td>Marketing and sales teams</td>
<td>API, web app</td>
<td>Exports and enriches Professional Social Network data</td>
</tr>
<tr>
<td>Dux-Soup</td>
<td>Some</td>
<td>Yes, basic automation</td>
<td>Yes</td>
<td>Sales and marketing teams, small scale</td>
<td>Browser extension</td>
<td>Outreach automation, general automations</td>
</tr>
<tr>
<td>LinkedFusion</td>
<td>Some</td>
<td>Yes, general automations</td>
<td>Yes, outreach focused</td>
<td>Sales and marketing teams</td>
<td>Desktop</td>
<td>Automates various Professional Social Network tasks</td>
</tr>
<tr>
<td>Salesflow</td>
<td>Yes, for Sales Navigator</td>
<td>Outreach focused</td>
<td>Yes</td>
<td>Sales teams, Professional Social Network Sales Navigator users</td>
<td>Cloud-based</td>
<td>Manages sales outreach on Professional Social Network</td>
</tr>
<tr>
<td>Evaboot</td>
<td>Yes, for Sales Navigator</td>
<td>Scraping and outreach focused</td>
<td>Some</td>
<td>Sales teams, Professional Social Network Sales Navigator users</td>
<td>Browser extension</td>
<td>Exports and enriches leads</td>
</tr>
<tr>
<td>LiProspect</td>
<td>Some</td>
<td>Outreach focused</td>
<td>Yes</td>
<td>Sales and marketing teams</td>
<td>Cloud-based</td>
<td>Focuses on Professional Social Network outreach</td>
</tr>
<tr>
<td>LinkedCamp</td>
<td>Some</td>
<td>Outreach focused</td>
<td>Yes</td>
<td>Sales and marketing teams</td>
<td>Cloud-based</td>
<td>Automates outreach on Professional Social Network</td>
</tr>
<tr>
<td>Professional Social Network API</td>
<td>Yes</td>
<td>Some actions</td>
<td>Yes</td>
<td>Developers, technical use cases</td>
<td>API</td>
<td>Enables some programmable Professional Social Network actions</td>
</tr>
<tr>
<td>Dripify</td>
<td>Some</td>
<td>Automated outreach</td>
<td>Yes</td>
<td>Sales and marketing teams</td>
<td>Cloud-based</td>
<td>Automates marketing on Professional Social Network</td>
</tr>
<tr>
<td>UpLead</td>
<td>Yes</td>
<td>No Professional Social Network automation</td>
<td>Lead generation only</td>
<td>Sales and marketing teams</td>
<td>Cloud-based/API</td>
<td>Extracts and enriches B2B leads</td>
</tr>
<tr>
<td>Zopto</td>
<td>Some</td>
<td>Outreach related automations</td>
<td>Yes</td>
<td>Sales and marketing teams</td>
<td>Cloud-based</td>
<td>Manages sales outreach</td>
</tr>
</tbody>
</table>
<h2 id="best-professional-social-network-automation-tool-for-data-extraction">Best Professional Social Network automation tool for data extraction</h2>
<p><a href="https://proxycurl.com/?ref=nubela.co">Proxycurl</a> is going to win here.</p>
<p>It's not only effective in scraping Professional Social Network profiles but also enriches the data, making it ideal for marketing and sales teams, VCs, and various other B2B cases. Anytime you need rich B2B data.</p>
<p>Plus, it works via an API so you have zero risk of getting your own Professional Social Network accounts banned, and it's infinitely scalable with zero headaches. You'll be able to flawlessly integrate it with your existing application, systems, or workflow.</p>
<h2 id="best-general-professional-social-network-automation-tool">Best general Professional Social Network automation tool</h2>
<p>PhantomBuster, while the master of none, offers a surprising amount of Professional Social Network automation possibilities.</p>
<p>It has a bit of everything across the board, and everything works pretty well, so if we're going to say the best general Professional Social Network automation tool, I'll have to give it to PhantomBuster.</p>
<h2 id="best-budget-automation-tool">Best budget automation tool</h2>
<p>Professional Social Network Scraper and Professional Social Network API are both entirely free, so if you're technical or patient, those are worth a try.</p>
<p>Outside of that, both Linked Helper and Dux-Soup are good mentions for basic Professional Social Network automation needs on a budget.</p>
<h2 id="best-professional-social-network-automation-tool-for-outreach">Best Professional Social Network automation tool for outreach</h2>
<p>I like both Meet Alfred and Salesflow for outreach. Both are strong contenders.</p>
<p>Octopus CRM is an honorable mention here, too.</p>
<h2 id="conclusion">Conclusion</h2>
<p>The best Professional Social Network automation tool depends largely on the specific needs and objectives of the user. While one person might want to extract leads from Professional Social Network, the next might want to automate Professional Social Network messaging.</p>
<p>Each Professional Social Network automation tool has its unique strengths and is tailored to cater to different segments of users, from developers to marketing and sales professionals, and beyond.</p>
<p>That said, if you're looking to extract a lot of B2B data (specifically, a lot of Professional Social Network B2B data) and implement it into your business, workflow, or application at scale, we would love to help you out here at Proxycurl.</p>
<p><a href="https://nubela.co/proxycurl/auth/register?ref=nubela.co">You can create your account for free here</a> (10 free credits are available on account creation to test a few things out with our API).</p>
<p>Thanks for reading, and hopefully this article helped make the decision on finding the right Professional Social Network automation tool for you easier!</p>
<p><strong>P.S.</strong> Did you know we also sell our entire Professional Social Network dataset full of millions and millions of profiles on people and companies? It's called <a href="https://nubela.co/proxycurl/auth/register?ref=nubela.co">LinkDB</a>.</p>
<p>Oh, and if you have any questions about Professional Social Network data extraction, or B2B data in general, don't hesitate to reach out to us at "<a href="mailto:hello@nubela.co">hello@nubela.co</a>" -- we'll be glad to help!</p>
 ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ How To Delete My Proxycurl Account? ]]></title>
        <description><![CDATA[ You have the option to delete your Proxycurl account at any time within your Proxycurl dashboard.


After successfully deleting your account, here&#39;s what to expect:


 * Loss of access to all your Proxycurl credits.
 * No more access to your old Proxycurl account.
 * Permanent removal of your account and personal ]]></description>
        <link>https://nubela.co/blog/delete-proxycurl-account/</link>
        <guid isPermaLink="false">65a0a874e44b0e0001f4cf58</guid>
        <category><![CDATA[ faq ]]></category>
        <dc:creator><![CDATA[ Joseph Lim | Head of Marketing ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2023/03/Screenshot-2023-03-13-at-5.30.12-PM-min.png"/>
        <pubDate>Fri, 12 Jan 2024 13:25:33 +0800</pubDate>
        <media:content url="" medium="image"/>
        <content:encoded><![CDATA[ <p>You have the option to delete your Proxycurl account at any time within your Proxycurl dashboard.</p>
<p>After successfully deleting your account, here's what to expect:</p>
<ul>
<li>Loss of access to all your Proxycurl credits.</li>
<li>No more access to your old Proxycurl account.</li>
<li>Permanent removal of your account and personal data from our systems.<br>
If you still wish to proceed with deleting your Proxycurl account, please follow the steps below:</li>
</ul>
<h3 id="1-log-in-to-your-proxycurl-dashboard">1. Log in to your Proxycurl dashboard</h3>
<p>Click on the <em>Log in</em> button on the upper right corner.</p>
<p><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/01/1.png" alt="1.png" loading="lazy"></p>
<h3 id="2-click-on-change-email">2. Click on Change Email</h3>
<p>On the left hand side, you will see a sidebar menu. From the sidebar menu, under the Account category, click on <em>Change email</em>.</p>
<p><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/01/2.png" alt="2.png" loading="lazy"></p>
<h3 id="3-click-on-delete-account">3. Click on Delete Account</h3>
<p>From your Proxycurl dashboard, click on the <em>Delete</em> account button.<br>
<img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/01/3.png" alt="3.png" loading="lazy"></p>
<h3 id="4-select-a-reason">4. Select a Reason</h3>
<p>Select a reason among the choices on what made you decide to delete your Proxycurl account.<br>
<img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/01/4.png" alt="4.png" loading="lazy"></p>
<h3 id="5-confirm-deletion">5. Confirm Deletion</h3>
<p>Confirm that you would like to proceed on deleting your Proxycurl account. Click on <em>Yes, delete account</em>.<br>
<img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/01/5.png" alt="5.png" loading="lazy"></p>
<h3 id="6-deletion-completed">6. Deletion Completed</h3>
<p>You are done! Your Proxycurl account has been deleted.<br>
<img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/01/6.png" alt="6.png" loading="lazy"></p>
<h3 id="we-hope-youll-reconsider-proxycurl">We hope you'll reconsider Proxycurl</h3>
<p>We get it – you wanted to delete your Proxycurl account. If you change your mind, we're here – just <a href="https://nubela.co/proxycurl/auth/register?ref=nubela.co">register for a new account</a>.</p>
<p>If you ever find yourself in need of reliable and efficient data provider services again, please reconsider Proxycurl. Our team is here to support and assist you whenever you may require our services.</p>
 ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ Changelog: You can now limit your monthly auto top-ups ]]></title>
        <description><![CDATA[ Following the previous update on the new smaller auto top-up amounts, we&#39;ve now added the ability to limit your monthly auto top-up amount.


Specifically, you can choose between one of these four limits:


 * $1,000
 * $2,000
 * $5,000
 * $10,000


For those of you who run Proxycurl ]]></description>
        <link>https://nubela.co/blog/changelog-new-monthly-auto-top-ups-limit/</link>
        <guid isPermaLink="false">659b79e1e44b0e0001f4cce3</guid>
        <category><![CDATA[ changelog ]]></category>
        <dc:creator><![CDATA[ Joseph Lim | Head of Marketing ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2023/03/Screenshot-2023-03-13-at-5.30.12-PM-min.png"/>
        <pubDate>Mon, 08 Jan 2024 12:33:35 +0800</pubDate>
        <media:content url="" medium="image"/>
        <content:encoded><![CDATA[ <p>Following the previous update on the <a href="https://nubela.co/blog/changelog-auto-top-up-in-smaller-amounts/">new smaller auto top-up amounts</a>, we've now added the ability to limit your monthly auto top-up amount.</p>
<p>Specifically, you can choose between one of these four limits:</p>
<ul>
<li><code>$1,000</code></li>
<li><code>$2,000</code></li>
<li><code>$5,000</code></li>
<li><code>$10,000</code></li>
</ul>
<p>For those of you who run Proxycurl to power your applications and workflows on a larger scale, the No Limit option is available too.</p>
<p>You can see it in <a href="nubela.co/proxycurl/dashboard/billing/buy-credits">your dashboard on the “Buy credits” page</a>:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/01/buy-credits-page.png" class="kg-image" alt="Proxycurl dashboard buy credits page" loading="lazy" width="2394" height="1124"><figcaption><span style="white-space: pre-wrap;">Choose the limit that you want </span></figcaption></figure><p>Check it out now!</p>
 ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ We&#x27;re Introducing New Annual Plans With Additional Discounts and Other Pricing Updates ]]></title>
        <description><![CDATA[ In this new year, we&#39;re fully committing to our long-term customers with the introduction of a new subscription plans. These changes reflect our growth as a company and our commitment to investing resources in serving our customers over the long term. Throughout 2023, we&#39;ve significantly invested ]]></description>
        <link>https://nubela.co/blog/announcement-new-annual-plans-and-pricing-updates-2024/</link>
        <guid isPermaLink="false">6596243ae44b0e0001f4cbab</guid>
        <category><![CDATA[ faq ]]></category>
        <dc:creator><![CDATA[ Steven Goh | CEO ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2019/05/square.jpg"/>
        <pubDate>Thu, 04 Jan 2024 11:26:17 +0800</pubDate>
        <media:content url="" medium="image"/>
        <content:encoded><![CDATA[ <p>In this new year, we're fully committing to our long-term customers with the introduction of a new subscription plans. These changes reflect our growth as a company and our commitment to investing resources in serving our customers over the long term. Throughout 2023, we've significantly invested in service stability and longevity.</p>
<p>These enhancements include the addition of professional personnel dedicated to serving your needs, featuring dedicated account representatives and customer support teams—extending beyond my personal email replies. Our devoted site reliability team works tirelessly to ensure that your applications powered by Proxycurl continue to function flawlessly.</p>
<p>Stability also means investing in data acquisition. I assure you, we are not a one-trick pony; we have substantially diversified and strengthened our data acquisition infrastructure, ensuring that our service remains operational, regardless of changes in third-party platforms.</p>
<p>Beyond technical improvements, we continue to invest in legal compliance and privacy. This commitment has earned us the trust and reliance of various Fortune 500 companies, including Google, Amazon, and Deloitte, who use our service in a legally compliant manner.</p>
<p>Proxycurl remained consistently online throughout 2023 with minimal service disruptions. Our goal is to maintain this standard. To continue being the most stable and accessible platform for retrieving valuable and fresh B2B data, we are revising our pricing plans to focus more on our long-term customers.</p>
<p>Here are the details:</p>
<h2 id="proxycurls-annual-subscription-plan">Proxycurl's Annual Subscription Plan</h2>
<h3 id="unlock-all-enterprise-grade-proxycurl-features">Unlock All Enterprise-Grade Proxycurl Features</h3>
<p>Our new annual subscription plan will <strong>unlock every Proxycurl feature</strong> for you, regardless of your plan size. Gone are the days of plan-based feature differentiation; as a long-term Proxycurl customer, you will enjoy:</p>
<ul>
<li>Access to 200,000 rows of API logs</li>
<li>Access to teams <em>(coming soon)</em></li>
<li>The ability to generate additional API keys</li>
<li>Get the whole-year credits (or all 12+2 bonus credits) upfront, immediately</li>
</ul>
<p>These features will be unlocked for users on a annual subscription plan over the next few weeks.</p>
<h3 id="annual-plans-credits-are-167-cheaper">Annual Plans Credits are 16.7% Cheaper</h3>
<p>When you sign up for an Annual Plan, you'll receive two additional months' worth of credits. <strong>Essentially, when you pay upfront for the whole 12 months, you get the entire 14 months-worth of credits upfront.</strong></p>
<p>In the table below, you can compare the equivalent amount of credits per month and the cost per credit between an Annual Plan and a Monthly Plan.</p>
<table>
<thead>
<tr>
<th></th>
<th>Starter</th>
<th>Growth</th>
<th>Pro</th>
<th>Ultra</th>
</tr>
</thead>
<tbody>
<tr>
<td>Credits <br> <em>(annual plan)</em></td>
<td>2,917 <br> /mo equiv.</td>
<td>29,167 <br> /mo  equiv.</td>
<td>103,833 <br> /mo equiv.</td>
<td>246,167 <br> /mo equiv.</td>
</tr>
<tr>
<td>Cost / Credit<br>   <em>(annual plan)</em></td>
<td><strong>$0.0167</strong></td>
<td><strong>$0.0103</strong></td>
<td><strong>$0.0086</strong></td>
<td><strong>$0.00771</strong></td>
</tr>
<tr>
<td>Credits<br>   <em>(monthly plan)</em></td>
<td>2,500 <br> /mo</td>
<td>25,000 <br> /mo</td>
<td>89,000 <br> /mo</td>
<td>211,000 <br> /mo</td>
</tr>
<tr>
<td>Cost / Credit<br>   <em>(monthly plan)</em></td>
<td>$0.0196</td>
<td>$0.01196</td>
<td>$0.01</td>
<td>$0.009</td>
</tr>
</tbody>
</table>
<h3 id="differences-annual-plans-vs-monthly-plans">Differences: Annual Plans vs Monthly Plans</h3>
<p>The two main differences between our Annual and Monthly Plans are the payment frequency and the amount of credits you get. The table below outlines the differences:</p>
<table>
<thead>
<tr>
<th></th>
<th>Annual Plan</th>
<th>Monthly Plan</th>
</tr>
</thead>
<tbody>
<tr>
<td>Payment Frequency</td>
<td>Paid annually</td>
<td>Paid monthly</td>
</tr>
<tr>
<td>Credits Awarded</td>
<td>Full 12+2 months credits awarded upfront</td>
<td>Monthly credits awarded monthly</td>
</tr>
<tr>
<td>Credit Expiry</td>
<td>One year</td>
<td>Every month</td>
</tr>
</tbody>
</table>
<p>Expanding from the table, using the <strong>Starter plan</strong> as example: if you subscribe to an <strong>Annual Plan</strong>,</p>
<ul>
<li>you need to pay $588 <em>($49/mo x 12 months)</em> for the year,</li>
<li>and you'll get 35,000 credits <em>(2,500 credits x 14 months)</em> straight away. These credits will expire in one year.</li>
</ul>
<p>In contrast, if you subscribe to a <strong>Monthly Plan</strong>,</p>
<ul>
<li>you continue to pay $49 every month,</li>
<li>and you get the 2,500 credits that expire each month.</li>
</ul>
<p>Finally, Proxycurl's Annual Plans are now live! Check them out in <a href="https://nubela.co/proxycurl/dashboard/billing/buy-credits?ref=nubela.co">your dashboard</a>.</p>
<h3 id="similarity-both-annual-and-monthly-plans-now-has-a-12-month-contract">Similarity: both Annual and Monthly Plans now has a 12-month contract</h3>
<p>Subscription to Monthly Plans will now require an annual contract, meaning a 12-month commitment with monthly payments.</p>
<p>If you're currently subscribed to a monthly plan, we will grandfather your plan, meaning you will not be automatically enrolled into an annual contract, and it requires explicit opt-in from you.</p>
<p>Subsequently, plan upgrades are possible, but downgrades are considered breaking the contract.</p>
<h2 id="other-changes-to-our-pay-as-you-go-pricing-plans">Other Changes to Our Pay-As-You-Go Pricing Plans</h2>
<p>In the coming weeks, we will implement these additional changes to the PAYG pricing plans:</p>
<ul>
<li>Our PAYG plan will remain commitment-free.</li>
<li>Credits under PAYG plans will expire after 18 months of payment inactivity.</li>
<li>The $10 option under the PAYG plan will be a one-time use only, intended for service validation.</li>
<li>And lastly, PAYG prices will be increased by 20%.</li>
</ul>
<p>We do not have a specific ETA for these changes, and these changes will be deployed once ready, without further notification. Please consider these changes when making your purchase decisions.</p>
<hr>
<p>For any questions, please feel free to email us at <a href="mailto:hello@nubela.co">hello@nubela.co</a>!</p>
 ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ The Definitive Guide to Professional Social Network Automation ]]></title>
        <description><![CDATA[ Learn the two different types of Professional Social Network automation actions, and how you can use them for your benefit. ]]></description>
        <link>https://nubela.co/blog/guide-to-linkedin-automation/</link>
        <guid isPermaLink="false">6573aec2e44b0e0001f4c81b</guid>
        <category><![CDATA[ proxycurl ]]></category>
        <dc:creator><![CDATA[ Colton Randolph | Technical Writer ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2023/08/cr.jpg"/>
        <pubDate>Wed, 20 Dec 2023 10:19:34 +0800</pubDate>
        <media:content url="" medium="image"/>
        <content:encoded><![CDATA[ <p>Professional Social Network automation can be categorized into two distinct approaches: push and pull actions.</p>
<p>Push-type automations focus on streamlining individual user activities within Professional Social Network, like posting content, messaging, and making connection requests.</p>
<p>On the other hand, pull-type automations are designed to extract substantial amounts of Professional Social Network profile data (both companies and people).</p>
<p>These two Professional Social Network automation approaches can be used to accomplish several  tasks for you with little to no human effort.</p>
<p>I plan to explain more about that later, but first, let me ask you a question:</p>
<h2 id="could-you-benefit-from-any-of-the-following-professional-social-network-automations">Could you benefit from any of the following Professional Social Network automations?</h2>
<p>This isn't an exhaustive list, but I'm willing to bet at least one of the following benefits of Professional Social Network automations might catch your eye...</p>
<h3 id="1-get-rid-of-general-repetitive-tasks">1. Get rid of general repetitive tasks</h3>
<p>This one is kind of a given, but it needs to be said: You can automate most Professional Social Network tasks that you're doing right now.</p>
<p>All the boring ones, like scheduling posts, sending connection requests, sending messages, and beyond.</p>
<p>That saves you lots of time that can be invested in other, more profitable tasks.</p>
<h3 id="2-generate-lots-of-high-quality-leads">2. Generate lots of high quality leads</h3>
<p>By using Professional Social Network data extraction tools like <a href="https://proxycurl.com/?ref=nubela.co">Proxycurl</a>, you can tap into a practically endless amount of high-quality prospects that you have an impressive level of insight on.</p>
<p>Also, Professional Social Network data extraction automations can be integrated into your sales/marketing processes and sales funnel, allowing for a more streamlined process from lead generation to conversion.</p>
<h3 id="3-streamline-your-recruitment">3. Streamline your recruitment</h3>
<p>For businesses looking to hire, Professional Social Network automation can streamline the recruitment process.</p>
<p>From <a href="https://nubela.co/blog/the-definitive-guide-to-executive-searches-automatically-find-qualified-candidates/">automatically finding candidates who match specific criteria</a> to initiating first-level interactions, Professional Social Network automation tools can save significant time and effort.</p>
<h3 id="4-increase-your-online-presence-and-brand-awareness">4. Increase your online presence and brand awareness</h3>
<p>Professional Social Network automation tools help maintain a consistent online presence, keeping your brand visible and your audience engaged.</p>
<p>Professional Social Network profiles can be a great source of high quality traffic.</p>
<h3 id="5-monitor-competitors">5. Monitor competitors</h3>
<p>Professional Social Network automation can be used to monitor competitors' activities, such as their posting frequency, funding, growth rates, engagement rates, and [content strategy](<a href="https://www.veed.io/learn/Professional?ref=nubela.co">https://www.veed.io/learn/Professional</a> Social Network-stories).</p>
<p>This information is invaluable for benchmarking your own performance and staying ahead in the market.</p>
<h3 id="6-improve-your-advertisingsales-personalization-automatically">6. Improve your advertising/sales personalization, automatically</h3>
<p>Professional Social Network automation can help in personalizing the experience for your connections and outreach messages.</p>
<p>By being able to access enriched data on just about any B2B prospect, you can <a href="https://nubela.co/blog/how-salesforge-integrates-rich-prospecting-data-with-chatgpt-to-automatically-personalize-emails/">tailor your content, messages, and outreach strategies</a> to meet the specific preferences and interests of your prospect, leading to more meaningful engagements, and ultimately higher response and conversion rates.</p>
<h3 id="7-help-secure-both-funding-and-investment-opportunities">7. Help secure both funding and investment opportunities</h3>
<p>Professional Social Network contains tons of data on both VC firms, angel investors, and beyond. On the flip side, it also contains tons of data for startups (employee count, current funding data, employee growth rate, revenue growth).</p>
<p>This means you can scrape this data and use it to both secure funding for your new startup, or if you’re looking for your next unicorn, you can use it to <a href="https://nubela.co/blog/the-vc-playbook-proven-methods-for-identifying-and-securing-promising-startups-first/">find prime investment opportunities before anyone else</a>.</p>
<h2 id="unfortunately-professional-social-network-doesnt-provide-official-automation-means">Unfortunately, Professional Social Network doesn't provide official automation means</h2>
<p>The reason Professional Social Network is worth automating in the first place is the fact that it’s the [single largest business-related social media platform](<a href="https://nubela.co/blog/all-50-types-of-Professional">https://nubela.co/blog/all-50-types-of-Professional</a> Social Network-data-you-can-get-youll-be-surpised/). It contains vast amounts of B2B data. There is simply no other larger B2B database than Professional Social Network.</p>
<p>Unfortunately for us, Microsoft fully understands the value of the B2B data it has with Professional Social Network and charges a pretty penny for it, in many cases hardly providing access at all.</p>
<p>When it comes to trying to buy data from Professional Social Network officially, their API (application programming interface, the ELI5 definition is essentially like a fast food menu for data) is super limited, and for all intensive purposes probably off-limits for the use case you want it for.</p>
<p>They generally only allow very boring use cases and there’s been a history of harmless third-party applications and Professional Social Network integrations that have had their entire business shutdown overnight by relying on Professional Social Network’s official API.</p>
<p>Outside of that, they do provide tools like [Premium and Recruiter](<a href="https://nubela.co/blog/Professional">https://nubela.co/blog/Professional</a> Social Network-recruiter-pricing-and-tier-comparison/), but they're pretty limited in what they'll let you automate and extract for the most part.</p>
<p>Thus, the need for third-party Professional Social Network automation solutions.</p>
<h2 id="what-kind-of-risks-are-associated-with-professional-social-network-automation">What kind of risks are associated with Professional Social Network automation?</h2>
<p>Technically, any kind of automation is more or less off-limits for Professional Social Network.</p>
<p>Professional Social Network especially doesn’t want you to be extracting any kind of data from their platform at scale because then they can’t sell you the data (though they can’t really prevent the extraction of the publicly available data, they must display a certain amount of information publicly if they want to be able to index on Google, which they do).</p>
<p>So, while the enforcement of “no Professional Social Network automation” varies, you should assume any Professional Social Network automation activity can get your account banned.</p>
<p>Only use automation tools on Professional Social Network accounts you don’t care about.</p>
<p>But to be specific, here is Professional Social Network’s full [official terms on Professional Social Network automation](<a href="https://www.professionalsocialnetwork.com/help/Professional?ref=nubela.co">https://www.professionalsocialnetwork.com/help/Professional</a> Social Network/answer/a1340567):</p>
<p>"Professional Social Network is committed to keeping its members' data safe and its website free from fraud and abuse. In order to protect our members' data and our website, we don't permit the use of any third party software, including "crawlers", bots, browser plug-ins, or browser extensions that scrape, modify the appearance of, or automate activity on Professional Social Network's website. We also don’t permit the use of fake accounts or fake engagement on Professional Social Network’s website, including any tools or services that try to manipulate Professional Social Network’s content algorithms. All of these tools violate the User Agreement, including, but not limited to, the following prohibitions listed in Section 8.2:</p>
<ul>
<li>Develop, support or use software, devices, scripts, robots, or any other means or processes (including crawlers, browser plugins and add-ons, or any other technology) to scrape the Services or otherwise copy profiles and other data from the Services;</li>
<li>Use bots or other automated methods to access the Services, add or download contacts, send or redirect messages;</li>
<li>Overlay or otherwise modify the Services or their appearance (such as by inserting elements into the Services or removing, covering, or obscuring an advertisement included on the Services);</li>
<li>Copy, use, disclose or distribute any information obtained from the Services, whether directly or through third parties (such as search engines), without the consent of Professional Social Network;</li>
<li>Override any security feature or bypass or circumvent any access controls or use limits of the Service (such as caps on keyword searches or profile views);</li>
<li>Deep-link to our Services for any purpose other than to promote your profile or a Group on our Services, without Professional Social Network’s consent.</li>
<li>Interfere with the operation of, or place an unreasonable load on, the Services (e.g., spam, denial of service attack, viruses, gaming algorithms).</li>
</ul>
<p>Any member who uses tools for such purposes is in violation of the User Agreement. This means that they risk having their accounts restricted or shut down. They also risk the possibility that any prohibited tools they’re using may become non-operational without notice. In order to maintain Professional Social Network as a safe and trusted platform to facilitate authentic interactions between professionals and to keep our members' data safe, we're constantly working to improve our technical measures and defenses against the operation of scraping, automation, and other tools that abuse Professional Social Network's platform."</p>
<h2 id="is-it-legal-to-scrape-data-from-professional-social-network">Is it legal to scrape data from Professional Social Network?</h2>
<p>Providing that you respect the individual privacy settings of any given user on Professional Social Network, you should be okay.</p>
<p>Past US cases have cemented the legality of scraping public data from Professional Social Network. [You can learn more about that here](<a href="https://nubela.co/blog/is-Professional">https://nubela.co/blog/is-Professional</a> Social Network-scraping-legal/).</p>
<p>Now that we've covered the basics, let's explain the difference between push vs. pull Professional Social Network automations and how they work.</p>
<h2 id="push-vs-pull-professional-social-network-automations">Push vs. pull Professional Social Network automations</h2>
<h3 id="push-professional-social-network-automations">Push Professional Social Network automations</h3>
<p>As I mentioned earlier, push automations accomplish things like posting on Professional Social Network, sending messages, sending connection requests, etc.</p>
<p>Tools like [PhantomBuster](<a href="https://nubela.co/blog/proxycurl-api-vs-phantombusters-Professional">https://nubela.co/blog/proxycurl-api-vs-phantombusters-Professional</a> Social Network-profile-scraper/), and LinkedHelper help with this:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2023/12/ziIrd7qKPF-1.png" class="kg-image" alt="Professional Social Network automation with PhantomBuster" loading="lazy" width="869" height="912"><figcaption><span style="white-space: pre-wrap;">Professional Social Network automation with PhantomBuster</span></figcaption></figure><p>They allow you to automate the process of pushing information. Some are cloud-based solutions, but some are also desktop or browser-based solutions.</p><p>Push automations will always require that you provide your own Professional Social Network account, because you'd obviously be specifically automating actions on that said account. </p><p>When using push automations, there is always a chance you can get said account banned.</p><h3 id="pull-professional-social-network-automations">Pull Professional Social Network automations</h3>
<p>This all focuses on the action of pulling data from [Professional Social Network’s vast B2B database](<a href="https://nubela.co/blog/linkdb-an-exhaustive-dataset-of-Professional">https://nubela.co/blog/linkdb-an-exhaustive-dataset-of-Professional</a> Social Network-members-and-companies/).</p>
<p>The primary benefit is that you can use the massive amounts of B2B data in the various use cases mentioned above.</p>
<p>Practically every sales or advertising initiative could be improved with the kind of B2B data you can extract from Professional Social Network.</p>
<p>However, like push automations, pull automations tend to work differently depending on the product.</p>
<p>There are a few different options, namely APIs, like Proxycurl, but there are also desktop applications and browser extensions as well.</p>
<p>There are even some free and open-source scripts like the pretty well known [Professional Social Network Scraper project on GitHub](<a href="https://github.com/joeyism/Professional?ref=nubela.co">https://github.com/joeyism/Professional</a> Social Network_scraper), which we sponsor, that could assist with this.</p>
<h2 id="why-self-hosting-professional-social-network-pull-automations-can-be-a-pain">Why self-hosting Professional Social Network pull automations can be a pain</h2>
<p>The biggest con about using any self-hosted, desktop, or browser-based Professional Social Network scraper or alternative pull based Professional Social Network automation is that you'll constantly be rotating accounts.</p>
<p>You will get limited, and your accounts will hit authwalls. Eventually IPs can get blocked entirely.</p>
<p>It's complex to automate pulling data from Professional Social Network (particularly at scale), because quite frankly Microsoft engineers are very smart. It takes a combination of several different things like proxies, changing browser fingerprints, CAPTCHA solving, rotating accounts and so on.</p>
<p>That's why many opt for a service like an API, because you can just pull Professional Social Network data without any of the headaches required. All of the data is already scraped.</p>
<p>You can easily integrate a third-party Professional Social Network API into your workflow, and flawlessly access data pulled from Professional Social Network.</p>
<p>Let me explain how:</p>
<h2 id="pulling-professional-social-network-data-by-profile-with-proxycurl">Pulling Professional Social Network data by profile with Proxycurl</h2>
<p>Our API offers <a href="https://nubela.co/proxycurl/docs?ref=nubela.co">several endpoints</a>, but the main endpoint you’ll use to pull data from Professional Social Network is our <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#people-api">Person Profile Endpoint</a>.</p>
<p>Using some simple Python (or your language of choice), you could extract data from any Professional Social Network profile you’d like.</p>
<p>Here’s an example:</p>
<pre><code class="language-python">
import requests

api_key = 'Your_API_Key_Here'

headers = {'Authorization': 'Bearer ' + api_key}

api_endpoint = 'https://nubela.co/proxycurl/api/v2/Professional Social Network'

params = {

    'Professional Social Network_profile_url': 'https://www.professionalsocialnetwork.com/in/colton-randolph',

    'extra': 'include',

    'github_profile_id': 'include',

    'facebook_profile_id': 'include',

    'twitter_profile_id': 'include',

    'personal_contact_number': 'include',

    'personal_email': 'include',

    'inferred_salary': 'include',

    'skills': 'include',

    'use_cache': 'if-recent',

    'fallback_to_cache': 'on-error',

}

# Making the GET request

response = requests.get(api_endpoint, params=params, headers=headers)

# Printing the status code and response content

print(f"Status Code: {response.status_code}")

print("Response Content:")

print(response.json)  

</code></pre>
<p>Using the Professional Social Network profile URL, that would then return an enriched contact (me, in this case) with several data points, including email and phone number (if it was available). <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#company-api-company-profile-endpoint">You can also do this for Professional Social Network companies as well</a>.</p>
<p>Now let me show you another option for pulling data:</p>
<h2 id="pulling-professional-social-network-data-by-searching-with-proxycurl">Pulling Professional Social Network data by searching with Proxycurl</h2>
<p>The second option is if you’re not actively pulling specific prospects, profile by profile, and enriching them, you can search through our massive Professional Social Network dataset (we call it <a href="https://nubela.co/proxycurl/linkdb?ref=nubela.co">LinkDB</a>) via our <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#search-api-person-search-endpoint">Person Search Endpoint</a>.</p>
<p>While we do sell our entire Professional Social Network dataset via LinkDB, our Person Search Endpoint is powered by that same data set. It includes hundreds of publicly scraped profiles on people and companies.</p>
<p>It provides probably the most convenient way to access Professional Social Network’s data without having to do any scraping at all. This time you don’t even need Professional Social Network profile URLs either. You can search with specifying parameters that would identify your ideal prospect.</p>
<p>Let’s say you’re looking to reach out to software developers. The following Python would search our entire database for “software developers”:</p>
<pre><code class="language-python">
import json, requests

headers = {'Authorization': 'Bearer ' + 'Your_API_Key_Here'}

api_endpoint = 'https://nubela.co/proxycurl/api/search/person/'

params = {

    'country': 'US',

    'enrich_profiles': 'enrich',

    'page_size': '10',

    'past_role_title':'(?i)software developer',

}

response = requests.get(api_endpoint, params=params, headers=headers)

result = response.json()

print(json.dumps(result, indent=2))

</code></pre>
<p>If you wanted to narrow this down further, there are additional parameters you can use, for example, adding the following:</p>
<pre><code class="language-python">
'past_company_Professional Social Network_profile_url': 'https://www.professionalsocialnetwork.com/company/stripe',

</code></pre>
<p>Would then search for software developers working at Stripe.</p>
<p>There are dozens of other different ways you could customize your search, just <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#search-api-person-search-endpoint">view all the search parameters on our documentation here</a>. You can also <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#search-api-company-search-endpoint">search for companies</a> as well.</p>
<p>Either way, between our respective endpoints, you have several ways to pull Professional Social Network data into your workflow and systems.</p>
<h2 id="combining-pull-and-push-actions">Combining pull and push actions</h2>
<p>By combining pull and push Professional Social Network automations, you can come full circle and automate very valuable and time intensive tasks. An example of combining pull and push automations is something like an AI-powered outreach tool, because you're pulling data from Professional Social Network, and you're also pushing new data at the same time. Both actions are integrated.</p>
<p>Something like Professional Social Network Recruiter and Premium could potentially be considered for this (Recruiter more so than Premium), but if you intend to do off platform outreach like via email or phone, you’ll have to use a third-party tool.</p>
<p>Other third-party tools like <a href="https://reply.io/?ref=nubela.co">Reply.io</a> would then replace the built in Professional Social Network marketing tools (which is actually <a href="https://nubela.co/blog/the-blueprint-to-building-a-successful-sales-prospecting-application/">one of our customers</a>, by the way).</p>
<p>Reply.io, for instance, puts more of an emphasis on allowing you to set up automated marketing/sales campaigns:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2023/12/tnWgoFPx8B.png" class="kg-image" alt="Outreach on Reply.io" loading="lazy" width="1910" height="897"><figcaption><span style="white-space: pre-wrap;">Outreach on Reply.io</span></figcaption></figure><p>There are a few other variations similar to Reply.io, many of them incorporating LLMs like ChatGPT in some fashion nowadays in an attempt to further automate the outreach process.</p>
<p>(Note: <a href="https://nubela.co/blog/how-salesforge-integrates-rich-prospecting-data-with-chatgpt-to-automatically-personalize-emails/">We actually interviewed one of these outreach AI tools that uses us here</a>, the tool is called <a href="https://www.salesforge.ai/?ref=nubela.co">Salesforge.ai</a> – you might find value out of it.)</p>
<p>Of course Reach.ai doesn’t provide automated on Professional Social Network outreach like the official Professional Social Network tools do, but it’s still powered by Professional Social Network data and using that data you can create outreach campaigns to their email, etc.</p>
<p>Some tools like PhantomBuster, mentioned above, allow you to do a combination of on Professional Social Network and off Professional Social Network outreach automations.</p>
<h2 id="are-you-starting-to-get-the-value-of-professional-social-network-automation-yet">Are you starting to get the value of Professional Social Network automation yet?</h2>
<p>I think you are. After all, you made it to the end of the article, so you’re clearly one of the smart ones.</p>
<p>Push and pull Professional Social Network automations are incredibly valuable in their own right, but they're even more so valuable when you combine the two actions.</p>
<p>At that point, you're automating a large portion of your required work in many use cases.</p>
<p>While Proxycurl can't do things like sending messages, emails, etc. we will gladly work in the background as a way to flawlessly pull Professional Social Network data into your workflow or application, and then the world is yours at that point to do whatever you'd like with the rich B2B data on people and companies.</p>
<h2 id="how-we-can-help">How we can help</h2>
<p>If you’re looking for a lot of Professional Social Network data immediately, <a href="https://nubela.co/proxycurl/linkdb?ref=nubela.co">LinkDB</a> is probably the right choice for you. It consists of over 494,520,624 <em>(and counting)</em> publicly scraped Professional Social Network profiles.</p>
<p>However, as mentioned above, we also provide access to LinkDB via <a href="https://nubela.co/proxycurl/docs?ref=nubela.co">our different API endpoints</a>.</p>
<p>Namely, some commonly used ones are:</p>
<ul>
<li><a href="https://nubela.co/proxycurl/docs?ref=nubela.co#search-api-person-search-endpoint">Person Search Endpoint</a></li>
<li><a href="https://nubela.co/proxycurl/docs?ref=nubela.co#people-api-person-profile-endpoint">Person Profile Endpoint</a></li>
<li><a href="https://nubela.co/proxycurl/docs?ref=nubela.co#search-api-company-search-endpoint">Company Search Endpoint</a></li>
<li><a href="https://nubela.co/proxycurl/docs?ref=nubela.co#company-api-company-profile-endpoint">Company Profile Endpoint</a></li>
</ul>
<p>By utilizing our different API endpoints, you can integrate a lot of B2B data into your workflow seamlessly. No scraping headaches required, like proxies or a rotating list of Professional Social Network accounts. None of that.</p>
<p>Does that sound good to you? If so:</p>
<h2 id="create-your-proxycurl-account-for-free-today">Create your Proxycurl account for free today</h2>
<p><a href="https://nubela.co/proxycurl/auth/register?ref=nubela.co">Click here to sign up for Proxycurl for free. </a></p>
<p>You’ll start with 15 free credits, which are enough to test out a few simple queries with our API and get a feel for it.</p>
<p>After that, we use a fair credit-based usage system, so you can pay-as-you-go for access to our API. You can also save a bit by signing up for a monthly subscription, too.</p>
<p><a href="https://nubela.co/proxycurl/linkdb/pricing?ref=nubela.co">You can view our API pricing here</a>.</p>
<p><strong>P.S.</strong> Thanks for reading! Hopefully, you’re walking away with a better idea of how Professional Social Network automation works and how it can benefit you.</p>
<p>If you have any questions about anything in the article, or you have any questions about Proxycurl, don’t hesitate to reach out to us at “<a href="mailto:hello@nubela.co">hello@nubela.co</a>”.</p>
 ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ How to Build a Job Board with Our Professional Social Network Job Scraping API ]]></title>
        <description><![CDATA[ Interested in creating your own job board? Here’s the easiest way to get your job board created – all without requiring doing any scraping of your own, or requiring submissions from companies. ]]></description>
        <link>https://nubela.co/blog/how-to-build-a-job-board-with-this-new-linkedin-job-scraping-api/</link>
        <guid isPermaLink="false">6564f933d6eb9000013bfa37</guid>
        <category><![CDATA[ proxycurl ]]></category>
        <dc:creator><![CDATA[ Colton Randolph | Technical Writer ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2023/08/cr.jpg"/>
        <pubDate>Tue, 05 Dec 2023 11:56:25 +0800</pubDate>
        <media:content url="" medium="image"/>
        <content:encoded><![CDATA[ <p>Building a niche-related job board like remote jobs, software development jobs, etc. has been all the rage recently.</p>
<p>Nowadays you can hardly Google for jobs without being redirected to a job board first.</p>
<p>At first glance, it may seem incredibly complicated to create one, too. After all, you would need to either receive or find all of these jobs to then post on your job board.</p>
<p>But what if I told you that many of these job boards outside of the likes of Indeed and other top job boards are primarily just scraping Professional Social Network jobs and then displaying the results and monetizing them in the process?</p>
<figure class="kg-card kg-embed-card"><iframe width="200" height="113" src="https://www.youtube.com/embed/VoiPEXlX3sk?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen="" title="How to scrape Professional Social Network jobs programatically with Python"></iframe></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2023/11/chrome_WjMRzLRd2n.png" class="kg-image" alt="Remote oriented job board" loading="lazy" width="719" height="863"><figcaption><span style="white-space: pre-wrap;">Remote oriented job board</span></figcaption></figure><p>Plus, you too could create your very own job board for your desired niche much easier than you think, which means:</p>
<ul>
<li>No scraping of your own required</li>
<li>No finding job posts manually</li>
<li>No having to sift through job post submissions</li>
</ul>
<p>We can actually <strong>automate nearly the entire process of running a job board</strong>. In this blog post, I’ll show you how. Let’s dive in.</p>
<p>First things first:</p>
<h1 id="why-scrape-professional-social-network">Why scrape Professional Social Network?</h1>
<p>Professional Social Network is the single largest B2B platform in the world. There’s no other platform that contains [as much B2B data as Professional Social Network](<a href="https://nubela.co/blog/all-50-types-of-Professional">https://nubela.co/blog/all-50-types-of-Professional</a> Social Network-data-you-can-get-youll-be-surpised/).</p>
<p>Many people recognize this fact. But they also recognize it’s pretty complex and is a game of cat and mouse.</p>
<p>Professional Social Network doesn’t want you to scrape their website. They also don’t even really allow you to pay for it. Their API is extremely limited, and they limit access to it to any company that competes in any relatively adjacent industry (which a job board would definitely fall under).</p>
<p>This means two things:</p>
<ol>
<li>While the B2B data on Professional Social Network is incredibly valuable, many opt to skip scraping it because it’s a headache to scrape. Which is fair.</li>
<li>To obtain the data on Professional Social Network, it’s generally best to obtain it through a third-party API that does not limit you, rather than Professional Social Network’s API.</li>
</ol>
<p>That said: that’s what <a href="https://proxycurl.com/?ref=nubela.co">Proxycurl </a>is – a third-party API primarily powered by Professional Social Network’s data and enhanced through other sources.</p>
<p>We deal with all of the headaches involved with scraping Professional Social Network – like proxies, CAPTCHA solving, and so on – and deliver the B2B data in a convenient and easy to use format (an API).</p>
<p>By the way, if you’re wondering if this is legal, we only work with publicly available data. [US law and past court cases have cemented the legality of publicly scraping Professional Social Network](<a href="https://nubela.co/blog/is-Professional">https://nubela.co/blog/is-Professional</a> Social Network-scraping-legal/).</p>
<h1 id="why-create-yet-another-job-board">Why create yet another job board?</h1>
<p>If you’re curious why everyone’s been creating a job board recently, like the answer to the reason why most businesses are created: it’s profitability.</p>
<p>Staffing/recruiting is a profitable business. Most businesses are constantly recruiting new talent. Especially unique individualized talent that’s not easy to find.</p>
<p>That said, the monetization strategy for job boards tends to vary.</p>
<p>Some of these sites operate a pay to post strategy for example, but for the most part the main monetization strategy of these job boards is simply data harvesting.</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2023/11/W3uXqCR24S.png" class="kg-image" alt="We Work Remotely's homepage" loading="lazy" width="1885" height="929"><figcaption><span style="white-space: pre-wrap;">We Work Remotely's monetization strategy ($299 job posts)</span></figcaption></figure><p>You’ll find they often have you essentially fill out an application on the job board website, and then redirect you to the actual job. Or at least collect some basic information and your email address.</p>
<p>This is because they can then go and sell your unique relevant information to applicable companies to recruit you, or proceed to follow up and try to gain a recruitment commission.</p>
<p>Alrighty, now that we’ve covered the basics, let’s dive into actually building a job board:</p>
<h1 id="who-is-your-job-board-targeting">Who is your job board targeting?</h1>
<p>The first step to building a job board is picking out a specific niche.</p>
<p>I recommend something more specific than just “remote jobs” for instance – and also just “software development” job boards do seem a bit saturated now.</p>
<p>How can you further differentiate your job board from your competitors and make it a job board that’s genuinely valuable and helpful for a specific target audience?</p>
<p>Rather than just being a “software development” job board, take it down another level. So for example: you could be a Python only data analytics job board. Obviously this is just an example, but you get the point. Pick a job board that’s unique from the broad job boards already existing.</p>
<p>This carries two major benefits:</p>
<ol>
<li>By specifying your job board, you stand out and it’s easier to attract talent rather than trying to compete with broad and established job boards</li>
<li>If you make your job board known as a source of individualized talent, you can make strong relationships with relative companies that need the kind of talent coming to your job board.</li>
</ol>
<p>Companies will line up to give you tons of money if you can <a href="https://nubela.co/blog/the-definitive-guide-to-executive-searches-automatically-find-qualified-candidates/">find talented staff</a> that know what they're doing and have the skills to actually move the needle.</p>
<p>So before proceeding with this article, take a second to think: What’s a unique angle that isn’t overly saturated and is in demand by businesses <em>with money</em>?</p>
<p>The “with money” part is often why “software development” is such a frequently targeted job board audience. SaaS companies and the type of companies that need these skilled employees are often lined with more cash than someone like an eCommerce business looking for a customer support representative, for example.</p>
<h1 id="building-a-job-board-with-proxycurl">Building a job board with Proxycurl</h1>
<p>Since this method skips actually scraping the <a href="https://nubela.co/proxycurl/jobs-api?ref=nubela.co">job posting data</a>, this is probably easier than you think.</p>
<p>The top-down overview of building a job board is very simple:</p>
<ol>
<li>Have a [Professional Social Network job scraper](<a href="https://nubela.co/blog/the-ultimate-guide-to-proxycurls-Professional">https://nubela.co/blog/the-ultimate-guide-to-proxycurls-Professional</a> Social Network-jobs-api-with-sample-code/) pulling data from Professional Social Network (in this tutorial we will use Proxycurl)</li>
<li>Display the data pulled from Professional Social Network on your job board</li>
<li>Have a monetization strategy in place (again, this usually revolves around working with relative companies to gain recruitment commissions, etc.)</li>
</ol>
<p>The primary API endpoint that’s going to be the most relevant here is our <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#jobs-api-job-search-endpoint">Job Search Endpoint </a>– this will allow you to specify identifying job characteristics and then get the Professional Social Network job posting results returned back to you.</p>
<p>We’ll also be using Python to assist us with this, but you can use any programming language of your choice.</p>
<p>Let's dive in:</p>
<h2 id="step-1-setting-up-your-development-environment">Step 1) Setting up your development environment</h2>
<p>The first thing you’ll need is Python installed on your machine (I use <a href="https://www.jetbrains.com/pycharm/?ref=nubela.co">PyCharm</a> as my IDE). Then you’ll also need a web framework for Python.</p>
<p>In this case, we’ll use Flask which you can install with the following pip command:</p>
<pre><code class="language-python">pip install flask
</code></pre>
<h2 id="step-2-create-a-basic-flask-application">Step 2) Create a basic Flask application</h2>
<p>Next you’ll create a new Python file for your Flask app, for example <code>app.py</code> and setup a basic Flask application:</p>
<pre><code class="language-python">
from flask import Flask, render_template

app = Flask(__name__)

@app.route('/')

def index():

    return render_template('index.html')

if __name__ == '__main__':

    app.run(debug=True)

</code></pre>
<h2 id="step-3-create-the-main-page-to-your-job-board">Step 3) Create the main page to your job board</h2>
<p>Create a folder named <code>templates</code> in the same directory as <code>app.py</code>. Inside that folder, create an HTML file named <code>index.html</code> – this will serve as the main page of your job board.</p>
<p>A simple <code>index.html</code> could look like this:</p>
<pre><code class="language-html">&lt;!DOCTYPE html&gt;
&lt;html&gt;
&lt;head&gt;
    &lt;title&gt;Data Analyst Job Board&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
    &lt;h1&gt;Data Analyst Job Listings&lt;/h1&gt;
    &lt;div id="jobs"&gt;
        &lt;!-- Job listings will go here --&gt;
    &lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;
</code></pre>
<h2 id="step-4-integrating-proxycurl%E2%80%99s-api">Step 4) Integrating Proxycurl’s API</h2>
<p>Now let’s integrate Proxycurl’s API with our Flask application. Keep in mind you’ll need to replace <code>Your_API_Key</code> with your actual Proxycurl API key. Again, we are indeed using the <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#jobs-api-job-search-endpoint">Job Search Endpoint</a> here.</p>
<p>That said, let’s say we wanted to create a job board specifically for “data analysts” – by modifying <code>app.py</code>, we could accomplish this:</p>
<pre><code class="language-python">
import requests

from flask import Flask, render_template, jsonify

app = Flask(__name__)

@app.route('/')

def index():

    return render_template('index.html')

@app.route('/api/jobs')

def get_jobs():

    api_key = `Your_API_Key`

    headers = {'Authorization': 'Bearer ' + api_key}

    api_endpoint = 'https://nubela.co/proxycurl/api/v2/Professional Social Network/company/job'

    params = {

        'keyword': 'data analyst',

    }

    response = requests.get(api_endpoint, params=params, headers=headers)

    print("API Response:", response.json())  # This line prints the API response

    if response.status_code == 200:

        return jsonify(response.json())

    else:

        return jsonify({'error': 'Failed to fetch jobs'})

if __name__ == '__main__':

    app.run(debug=True)

</code></pre>
<p>The key part of this script that's specifying the type of job's it's searching for is this part right here:</p>
<pre><code class="language-python">        'keyword': 'data analyst',
</code></pre>
<p>There are all different ways of customizing this script, but the first thing you're going to want to modify is that part right there.</p>
<p><a href="https://nubela.co/proxycurl/docs?ref=nubela.co#search-api-job-search-endpoint">You can learn more about targeting with our Job Search Endpoint here</a>.</p>
<h2 id="step-5-fetch-and-display-jobs-in-the-frontend">Step 5) Fetch and display jobs in the frontend</h2>
<p>We need to use some JavaScript to fetch the job data data from the Job Search Endpoint and display it on the page. This can be done using AJAX.</p>
<p>Go ahead and add the following script to <code>index.html</code> like so:</p>
<pre><code class="language-html">&lt;!DOCTYPE html&gt;
&lt;html&gt;
&lt;head&gt;
    &lt;title&gt;Data Analyst Job Board&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
    &lt;h1&gt;Data Analyst Job Listings&lt;/h1&gt;
    &lt;div id="jobs"&gt;
              &lt;!-- Job listings will be added here --&gt;
    &lt;/div&gt;
 &lt;script&gt;
    document.addEventListener('DOMContentLoaded', function() {
        fetch('/api/jobs')
            .then(response =&gt; response.json())
            .then(data =&gt; {
                const jobsContainer = document.getElementById('jobs');
                data.job.forEach(job =&gt; {  // Adjusted to match the API response structure
                    const jobElement = document.createElement('div');
                    jobElement.innerHTML = `
                        &lt;h2&gt;${job.job_title}&lt;/h2&gt;
                        &lt;p&gt;Company: ${job.company}&lt;/p&gt;
                        &lt;p&gt;Location: ${job.location}&lt;/p&gt;
                        &lt;p&gt;Listed on: ${job.list_date}&lt;/p&gt;
                        &lt;a href="${job.job_url}" target="_blank"&gt;View Job&lt;/a&gt;
                    `;
                    jobsContainer.appendChild(jobElement);
                });
            })
            .catch(error =&gt; console.error('Error:', error));
    });
&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;

</code></pre>
<h2 id="step-6-start-your-job-board">Step 6) Start your job board</h2>
<p>Now we can go ahead and run our Flask application. You can click run if your using PyCharm, or execute the following command:</p>
<pre><code class="language-python">python app.py
</code></pre>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2023/11/pycharm64_DqYUFuYYhd.png" class="kg-image" alt="Starting Flask in PyCharm" loading="lazy" width="1796" height="303"><figcaption><span style="white-space: pre-wrap;">Starting Flask in PyCharm</span></figcaption></figure><p>Your job board is now live! Go ahead and visit <code>http://localhost:5000</code> in your browser to see your job board:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2023/11/chrome_zB1fssgrzB.png" class="kg-image" alt="What our (ugly) job board looks like" loading="lazy" width="1458" height="972"><figcaption><span style="white-space: pre-wrap;">What our (ugly) job board looks like</span></figcaption></figure><p>Definitely ugly, but you can edit the index according to your liking. The important part is that all of the functionality you need to create a job board is there.</p>
<p>By the way, if you go to <code>http://localhost:5000/api/jobs</code> you can see the raw API response:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2023/11/LzPJ5Ah7r5.png" class="kg-image" alt="API response seen from our job board" loading="lazy" width="884" height="983"><figcaption><span style="white-space: pre-wrap;">API response seen from our job board</span></figcaption></figure><h2 id="step-7-customize-to-your-liking">Step 7) Customize to your liking</h2>
<p>You now have a way to <a href="https://nubela.co/proxycurl/jobs-api?ref=nubela.co">pull recent job postings at scale</a>. You simply need to further edit the above script to your liking, and work on bringing your job board to life (as well as adding a monetization strategy, but that usually comes later on).</p>
<p>There are many different options for hosting your Python website, but one of the easiest and most frequently used ones would be <a href="https://dashboard.heroku.com/?ref=nubela.co">Heroku</a>.</p>
<p>All you need to do is put your code within a GitHub repository, sync it, and specify that the code inside is in fact Python:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2023/11/chrome_B5zW3mUelI.png" class="kg-image" alt="Running Python on a Heroku application" loading="lazy" width="1612" height="306"><figcaption><span style="white-space: pre-wrap;">Running Python on a Heroku application</span></figcaption></figure><p>Then you’re good to go and can deploy your GitHub code onto a live Heroku Python application:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2023/11/chrome_MMFm9VH6Ld.png" class="kg-image" alt="Deploying Python code live on Heroku" loading="lazy" width="1630" height="373"><figcaption><span style="white-space: pre-wrap;">Deploying Python code live on Heroku</span></figcaption></figure><h1 id="how-much-does-it-cost-to-create-a-job-board-with-proxycurl">How much does it cost to create a job board with Proxycurl?</h1>
<p>The actual hosting of your application is one thing, but in terms of our end, the <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#search-api-job-search-endpoint">Job Search Endpoint</a>, it costs 2 credits per successful job post returned.</p>
<p>You see: <a href="https://nubela.co/proxycurl/pricing?ref=nubela.co">our API costs credits</a>. Every endpoint will have its own respective credit usage cost.</p>
<p>We also have both pay-as-you-go plans which will allow you to buy 100 credits for $10 for instance, or subscription plans that will allow you to get substantially more credits for the same price.</p>
<p>So that means with the pay-as-you-go-plans (the most expensive), every job post you’ll pull will cost you $0.20 cents. Not bad.</p>
<p>Definitely leaves enough meat on the bone for you to be able to make some more on top.</p>
<h1 id="create-your-proxycurl-account">Create your Proxycurl account</h1>
<p>You've now seen the simplicity and power of building a specialized job board with Proxycurl.</p>
<p>With the basics in place and your unique niche identified, you're well on your way to creating a platform that connects talented professionals with the right opportunities.</p>
<p>That means the next step is to create your Proxycurl account, grab your API key, and get your job board started today!</p>
<p><a href="https://nubela.co/proxycurl/auth/register?ref=nubela.co">Click here to create your Proxycurl account now for free</a>.</p>
<p><strong>P.S.</strong> Have any questions? No problem, we have answers. Just reach out to us at "<a href="mailto:hello@nubela.co">hello@nubela.co</a>" and we'll get you taken care of ASAP!</p>
 ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ Changelog: You can now auto top-up in smaller amounts ]]></title>
        <description><![CDATA[ We have good news for you!


We&#39;ve added two smaller denominations of auto top-ups:


 * $10
 * $50


Some of you are working hard to scale up your businesses and applications, while thoroughly enjoying using our products doing so.


These two new options could help you manage the costs better ]]></description>
        <link>https://nubela.co/blog/changelog-auto-top-up-in-smaller-amounts/</link>
        <guid isPermaLink="false">6566a6d8d6eb9000013bfadc</guid>
        <category><![CDATA[ changelog ]]></category>
        <dc:creator><![CDATA[ Joseph Lim | Head of Marketing ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2023/03/Screenshot-2023-03-13-at-5.30.12-PM-min.png"/>
        <pubDate>Wed, 29 Nov 2023 10:52:44 +0800</pubDate>
        <media:content url="" medium="image"/>
        <content:encoded><![CDATA[ <p>We have good news for you!</p>
<p>We've added <strong>two smaller denominations</strong> of auto top-ups:</p>
<ul>
<li>$10</li>
<li>$50</li>
</ul>
<p>Some of you are working hard to scale up your businesses and applications, while thoroughly enjoying using our products doing so.</p>
<p>These two new options could help you manage the costs better vs the previous minimum of $100 – especially in the early stages of building.</p>
<p>We also heard some of your concerns about the $100 auto top-up occurring just before a new plan cycle, thus potentially wasting the $100.</p>
<p>We hope this update helps find the right middle-ground auto top-up for you!</p>
<p>You can see this change right now in your dashboard.</p>
 ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ How To Build Custom Audience For Facebook Ads From Scratch Programmatically (Meta Update 2025) ]]></title>
        <description><![CDATA[ Don&#39;t rely on Meta to make your ads work. Let us show you how you can guarantee your ads success.  Start by opening your Ads Manager in your Meta Account. ]]></description>
        <link>https://nubela.co/blog/build-facebook-ads-custom-audience-programatically/</link>
        <guid isPermaLink="false">65567a7aeb400500015ac6ca</guid>
        <category><![CDATA[ proxycurl ]]></category>
        <dc:creator><![CDATA[ Colton Randolph | Technical Writer ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2023/08/cr.jpg"/>
        <pubDate>Thu, 23 Nov 2023 18:00:48 +0800</pubDate>
        <media:content url="" medium="image"/>
        <content:encoded><![CDATA[ <p>Imagine spending thousands of dollas on Facebook/Meta Ads and hoping it works. Even if you manage to create a winning Facebook ad, it's usually a result from months of testing and sending Meta more data to improve your ad targeting.</p>
<p>Your success on ads hinges on targeting the right audience.</p>
<p>Let me show you how you can programmatically create a Meta custom audience from scratch, so you don't end up wasting your time and money. A solution for businesses, especially in the B2B sector, to precisely target ideal customer profile (ICP) immediately on Meta ads (regardless of industry), rather than spending weeks or even months optimizing your ads just to barely break even.</p>
<p>It doesn't matter the level of sophistication your target audience is in. Chances are they probably have a Facebook, Instagram or WhatsApp.</p>
<p>You just need to find them.</p>
<h2 id="the-problem-with-generic-meta-ads-targeting">The problem with generic Meta ads targeting</h2>
<p>The immediate challenge is Meta's broad targeting mechanisms, which may not be able to find your target audience (at a cost that makes sense, anyway).</p>
<p>After all, Meta makes more money when you spend more on advertising. They don't exactly have an incentive to give you the best performance at the lowest cost.</p>
<p>Generally, the most effective ads rely on conversion events. These ads require lots of data over a long period-of-time to truly optimize themselves.</p>
<p>These ads all revolve around using a "pixel" which sends Meta more data about what type of people are responding to your ad.</p>
<p>You can't exactly skip Meta's process of optimizing your ads delivery over time, but there is a bit of a shortcut for fixing Meta's original "lack of data problem" that leads to often originally unsatisfactory <a href="https://www.creatopy.com/create/facebook-ads/?ref=nubela.co">Facebook ads</a> performance.</p>
<h2 id="the-shortcut-to-better-meta-ad-performance">The shortcut to better Meta ad performance?</h2>
<p>You take control by <a href="https://nubela.co/proxycurl/solutions/accelerate-growth?ref=nubela.co">generating and importing your own custom audience</a> into Meta ads.</p>
<p>This approach puts you in the driver's seat, ensuring your audience is precisely who you want them to be.</p>
<p>And the best part is you don't even need an existing customer audience. We can programmatically generate it with specific identifying characteristics create an enriched list of prospects that exactly fit your ICP (ideal customer profile).</p>
<p>I will show you how. But before we dive into the “how,” let's establish a clear understanding of what custom audiences really are.</p>
<h2 id="what-is-a-custom-audience">What is a custom audience?</h2>
<p>A custom audience is one of two different things:</p>
<ol>
<li>
<p>Your customer database, such as website traffic, email list, or beyond</p>
</li>
<li>
<p>A detailed prospecting list generated from a B2B data provider or enrichment tool (<a href="https://proxycurl.com/?ref=nubela.co">like Proxycurl</a>)</p>
</li>
</ol>
<p>Meta allows you to import these lists, and then you can either advertise directly to the list of prospects contained on the list, or you can use it as a seed to generate wider audiences on Meta very similar to the list of prospects you imported.</p>
<p>So it helps out in terms of putting your ad in front of people most likely to actually buy what you're selling. A big advantage.</p>
<h2 id="the-data-driven-approach">The data-driven approach</h2>
<p>Before you can create a custom audience, you need data. This is where a tool like <a href="https://proxycurl.com/?ref=nubela.co">Proxycurl API </a>comes into play.</p>
<p>You can use <a href="https://proxycurl.com/?ref=nubela.co">Proxycurl</a> to programmatically generate you a custom audience that perfectly fits your ICP.</p>
<p>So rather than trusting a platform whose sole purpose is to increase your ad spend to generate a converting audience for you, you can guarantee that the seed of your custom audience fits your ICP.</p>
<p>Your ads will be placed in front of relevant people that actually want and need your product. No guessing by Meta required.</p>
<h2 id="is-it-really-worth-building-your-own-custom-audiences">Is it really worth building your own custom audiences?</h2>
<p>Admittedly, it takes a little more effort doing it this way. But it’s not really difficult.</p>
<p>You’ll need to have a bit of technical prowess, but you'll give yourself a massive advantage with a little bit more work.</p>
<p>That said, Proxycurl API provides you several endpoints to be able to pull different data points/profiles in different ways. Meaning there are a few different ways to go about this.</p>
<p>The two main endpoints you would use for the purpose of building a Facebook/Meta custom audience, though, are likely going to be the <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#search-api-person-search-endpoint">Person Search Endpoint</a> and the<a href="https://nubela.co/proxycurl/docs?ref=nubela.co#people-api-person-profile-endpoint"> People Profile Endpoint</a>.</p>
<h2 id="programmatically-building-your-meta-custom-audience">Programmatically building your Meta custom audience</h2>
<p>First things first, Meta allows you to use the following identifiers to build a custom audience:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2023/11/chrome_JRoiInA8bX.png" class="kg-image" alt="Prospect identifiers that Meta supports" loading="lazy" width="1596" height="940"><figcaption><span style="white-space: pre-wrap;">Prospect identifiers that Meta supports</span></figcaption></figure><p>So, you could import a <code>.CSV</code> that looks like this for example:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2023/11/EXCEL_I26cbmRvJF.png" class="kg-image" alt="Demo .CSV of what we can import into Meta" loading="lazy" width="1339" height="259"><figcaption><span style="white-space: pre-wrap;">Demo </span><code spellcheck="false" style="white-space: pre-wrap;"><span>.CSV</span></code><span style="white-space: pre-wrap;"> of what we can import into Meta</span></figcaption></figure><p>The more information you give Meta, the more likely they can accurately match the prospects contained in your Facebook custom audience <code>.CSV</code>.</p>
<p>With Proxycurl, we can search for prospects that fit within a given ICP and then extract the following identifiers:</p>
<ul>
<li>Email</li>
<li>First name</li>
<li>Last name</li>
<li>Phone number</li>
<li>City, state, country</li>
</ul>
<h2 id="three-different-things-to-generate-your-custom-audience">Three different things to generate your custom audience</h2>
<ol>
<li>Python (though, you can obviously use any programming language of your choice)</li>
<li><a href="https://nubela.co/proxycurl/docs?ref=nubela.co#search-api-person-search-endpoint">The Person Search Endpoint</a> (to find prospects that fit within your ICP)</li>
<li><a href="https://nubela.co/proxycurl/docs?ref=nubela.co#people-api">The Person Profile Endpoint</a> (to enrich said prospects)</li>
</ol>
<p>Let’s say we’re a software company that provides some kind of product/service to financial service-based companies.</p>
<p>The following Python script automates the entire process of using the Proxycurl API to search for and enrich prospects that fit within the “financial services” based ICP:</p>
<pre><code class="language-python">
import requests

import json

# Function to search for Professional Social Network profiles

def search_Professional Social Network_profiles(api_key):

    headers = {'Authorization': 'Bearer ' + api_key}

    api_endpoint = 'https://nubela.co/proxycurl/api/search/person/'

    params = {

        'country': 'US',

        'current_role_title': '(?i)founder',

        'industries': '(?i)financial services',

        'page_size': '100',

    }

    response = requests.get(api_endpoint, params=params, headers=headers)

    if response.status_code == 200:

        profiles_json = response.json()

        Professional Social Network_urls = [profile['Professional Social Network_profile_url'] for profile in profiles_json['results']]

        return Professional Social Network_urls

    else:

        print(f"Failed to fetch Professional Social Network profiles: Status code {response.status_code}")

        return []

# Function to enrich a single Professional Social Network profile

def enrich_profile(api_key, Professional Social Network_url):

    headers = {'Authorization': 'Bearer ' + api_key}

    api_endpoint = 'https://nubela.co/proxycurl/api/v2/Professional Social Network'

    params = {

        'Professional Social Network_profile_url': Professional Social Network_url,

        'extra': 'include',

        # Add other parameters as needed

    }

    response = requests.get(api_endpoint, params=params, headers=headers)

    if response.status_code == 200:

        return response.json()

    else:

        print(f"Failed to enrich profile: Status code {response.status_code}")

        return None

# Main workflow

api_key = ‘Your_API_Key_Here'

Professional Social Network_profiles = search_Professional Social Network_profiles(api_key)

for url in Professional Social Network_profiles:

    enriched_data = enrich_profile(api_key, url)

    if enriched_data:

        print(json.dumps(enriched_data, indent=4))

</code></pre>
<p>This returns us an enriched list of founders of financial services. Something like this:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2023/11/pycharm64_qfdo8MTYNz.png" class="kg-image" alt="Result returned by Proxycurl's API, PyCharm interface" loading="lazy" width="1920" height="1032"><figcaption><span style="white-space: pre-wrap;">Result returned by Proxycurl's API, PyCharm interface</span></figcaption></figure><p>But we can still do better than this.</p>
<p>Let's automate the entire process so that it exports it to a Meta custom audience import ready <code>.CSV</code> by slightly modifying this script.</p>
<p>Here’s what the new script looks like:</p>
<pre><code class="language-python">
import requests

import csv

# Function to search for Professional Social Network profiles

def search_Professional Social Network_profiles(api_key):

    headers = {'Authorization': 'Bearer ' + api_key}

    api_endpoint = 'https://nubela.co/proxycurl/api/search/person/'

    params = {

        'country': 'US',

        'current_role_title': '(?i)founder',

        'industries': '(?i)financial services',

        'page_size': '100',

    }

    response = requests.get(api_endpoint, params=params, headers=headers)

    if response.status_code == 200:

        profiles_json = response.json()

        Professional Social Network_urls = [profile['Professional Social Network_profile_url'] for profile in profiles_json['results']]

        return Professional Social Network_urls

    else:

        print(f"Failed to fetch Professional Social Network profiles: Status code {response.status_code}")

        return []

# Function to enrich a single Professional Social Network profile

def enrich_profile(api_key, Professional Social Network_url):

    headers = {'Authorization': 'Bearer ' + api_key}

    api_endpoint = 'https://nubela.co/proxycurl/api/v2/Professional Social Network'

    params = {

        'Professional Social Network_profile_url': Professional Social Network_url,

    'personal_contact_number': 'include',

    'personal_email': 'include',

    }

    response = requests.get(api_endpoint, params=params, headers=headers)

    if response.status_code == 200:

        return response.json()

    else:

        print(f"Failed to enrich profile: Status code {response.status_code}")

        return None

# Function to write profile data to CSV

def write_profiles_to_csv(profiles, filename='Professional Social Network_profiles.csv'):

    fieldnames = ['emails', 'phones', 'fn', 'ln', 'city', 'st', 'country']

    with open(filename, mode='w', newline='', encoding='utf-8') as file:

        writer = csv.DictWriter(file, fieldnames=fieldnames)

        writer.writeheader()

        for profile in profiles:

            writer.writerow({

                'emails': '; '.join(profile.get('personal_emails', [])),

                'phones': '; '.join(profile.get('personal_numbers', [])),

                'fn': profile.get('first_name', ''),

                'ln': profile.get('last_name', ''),

                'city': profile.get('city', ''),

                'st': profile.get('state', ''),

                'country': profile.get('country', '')

            })

# Main workflow

api_key = 'Your_API_Key_Here'  # Replace with your actual API key

Professional Social Network_urls = search_Professional Social Network_profiles(api_key)

# List to hold all enriched profiles

all_profiles = []

for url in Professional Social Network_urls:

    profile_data = enrich_profile(api_key, url)

    if profile_data:

        structured_profile = {

            'personal_emails': profile_data.get('personal_emails', []),

            'personal_numbers': profile_data.get('personal_numbers', []),

            'first_name': profile_data.get('first_name', ''),

            'last_name': profile_data.get('last_name', ''),

            'city': profile_data.get('city', ''),

            'state': profile_data.get('state', ''),

            'country': profile_data.get('country', '')

        }

        all_profiles.append(structured_profile)

# Write the enriched profile data to a CSV file

write_profiles_to_csv(all_profiles)

</code></pre>
<p>So now when you click run, it does the same thing as before, but it exports it to a <code>.CSV</code> that includes all the information we need to import into Meta ads.</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2023/11/pycharm64_dSClLrj0KB.png" class="kg-image" alt="Exported prospect list into .CSV" loading="lazy" width="1920" height="1032"><figcaption><span style="white-space: pre-wrap;">Exported prospect list into </span><code spellcheck="false" style="white-space: pre-wrap;"><span>.CSV</span></code></figcaption></figure><p>Of course, you can edit this script any way you want, changing the targeted audience, and beyond.</p>
<p>Proxycurl is the best tool to find enriched prospects for any brand, especially B2B brands.</p>
<p>We work with companies in many different verticals, such as:</p>
<ul>
<li><a href="https://nubela.co/proxycurl/solutions/alternative-data-for-investment-firms?ref=nubela.co">VC funds</a></li>
<li><a href="https://nubela.co/proxycurl/solutions/accelerate-growth?ref=nubela.co">Growth stage startups</a></li>
<li>Advertising agencies</li>
<li>SaaS platforms</li>
<li><a href="https://nubela.co/proxycurl/solutions/sales-marketing-automation-api?ref=nubela.co">B2B sales</a></li>
<li>Beyond (you'll be able to tweak our search parameters to find a prospecting list that works for you)</li>
</ul>
<p>In the case of editing the above script, though, you’ll want to change the Person Search Endpoint part (<a href="https://nubela.co/proxycurl/docs?ref=nubela.co#search-api-person-search-endpoint">view search parameters here</a>) as that’s doing the targeting. The Person Profile Endpoint is just providing enrichment.</p>
<p>Now for the fun part.</p>
<h2 id="importing-your-targeted-custom-audience-into-meta-ads">Importing your targeted custom audience into Meta ads</h2>
<p>First, login to your Meta account and head over to the <a href="https://business.facebook.com/?ref=nubela.co">Ads Manager</a>.</p>
<p>Then you’ll need to click the menu icon, and navigate to “Audiences”—next click “create audience”:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2023/11/chrome_EvLtja4I0o.png" class="kg-image" alt="Creating custom audience" loading="lazy" width="347" height="578"><figcaption><span style="white-space: pre-wrap;">Creating custom audience&nbsp;</span></figcaption></figure><p>You’ll see the same page as shown before:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2023/11/chrome_JRoiInA8bX-1.png" class="kg-image" alt="Importing prospects on Meta" loading="lazy" width="1596" height="940"><figcaption><span style="white-space: pre-wrap;">Importing prospects on Meta</span></figcaption></figure><p>Click next, and upload the custom audience <code>.CSV</code> generated from the steps shown earlier:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2023/11/hkNt5dqIsH.png" class="kg-image" alt="Selecting and uploading your generated .CSV" loading="lazy" width="1885" height="950"><figcaption><span style="white-space: pre-wrap;">Selecting and uploading your generated </span><code spellcheck="false" style="white-space: pre-wrap;"><span>.CSV</span></code></figcaption></figure><p>Then you'll be asked to verify if everything is properly mapped. Make sure everything is being imported and no data point gets skipped:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2023/11/HUFNh8WbBH.png" class="kg-image" alt="Matching identifiers" loading="lazy" width="1194" height="908"><figcaption><span style="white-space: pre-wrap;">Matching identifiers</span></figcaption></figure><p>Finally, click “import &amp; create.”</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2023/11/V1Bym3AO7Q.png" class="kg-image" alt="Finalizing importing your new Facebook custom audience" loading="lazy" width="1191" height="911"><figcaption><span style="white-space: pre-wrap;">Finalizing importing your new Facebook custom audience</span></figcaption></figure><p>You’re in business.</p>
<p>The best part has yet to come, though…</p>
<h2 id="creating-lookalike-audiences-with-your-freshly-imported-meta-custom-audience">Creating lookalike audiences with your freshly imported Meta custom audience</h2>
<p>Now that we’ve imported our custom audience, it’s incredibly easy to create a lookalike audience. A lookalike audience allows us to use our ultra targeted custom audience to find other extremely similar people.</p>
<p>It takes away your need to spend months to get your ads in front of the right people.</p>
<p>The new custom audience will serve as an enriched seed, giving you a jumpstart and feeding Meta the data they need to find people that'll convert for your brand.</p>
<p>All you need to do is click “create a lookalike audience” as seen on the last step of the importation process.</p>
<p>You’ll then see the following options:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2023/11/chrome_iW7uzaMtij.png" class="kg-image" alt="Creating a lookalike audience on Meta" loading="lazy" width="672" height="533"><figcaption><span style="white-space: pre-wrap;">Creating a lookalike audience on Meta</span></figcaption></figure><p>Select your recently imported <code>.CSV</code> as the source, and then you can customize to your liking. The smaller the lookalike audience, the more accurate the audience will be.</p>
<p>Generally, what you’ll find is your ads will perform better to smaller lookalike audiences originally, but they’ll burn out relatively quickly too, at least quicker than a larger audience.</p>
<p>I suggest making a couple of different lookalike audiences and testing them with different angles and ads.</p>
<h2 id="using-your-new-meta-audiences">Using your new Meta audiences</h2>
<p>To use your new audiences, go back to your dashboard and click “create campaign”:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2023/11/chrome_HsYhKvyVDz.png" class="kg-image" alt="Creating a new advertising campaign on Meta" loading="lazy" width="1808" height="813"><figcaption><span style="white-space: pre-wrap;">Creating a new advertising campaign on Meta</span></figcaption></figure><p>Proceed to create your ad:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2023/11/8XUQKZGWtS.png" class="kg-image" alt="Continuing the ad creation process" loading="lazy" width="1375" height="954"><figcaption><span style="white-space: pre-wrap;">Continuing the ad creation process</span></figcaption></figure><p>Fill out your desired information and continue (this part isn’t relevant to the custom audience part).</p>
<h2 id="you-have-two-options-here">You have two options here</h2>
<p>Recently, Meta rolled out an “advantage+ audience” feature, which essentially works like a lookalike audience.</p>
<p>You can take the seed of the custom audience we imported here and tell Meta to find other people just like it:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2023/11/t8bDwEX9bd.png" class="kg-image" alt="Using Meta's &quot;Advantage+&quot; feature" loading="lazy" width="1383" height="949"><figcaption><span style="white-space: pre-wrap;">Using Meta's "Advantage+" feature</span></figcaption></figure><p>Or you can also click to switch to “regular audience options,” and select the lookalike audience we made earlier:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2023/11/O0zmuaPxaR.png" class="kg-image" alt="Using Meta's lookalike audience feature" loading="lazy" width="1246" height="953"><figcaption><span style="white-space: pre-wrap;">Using Meta's previous lookalike audience feature</span></figcaption></figure><p>Truthfully, there’s no way to tell you which option will work better. I suggest testing both and looking at the results.</p>
<p>Both routes accomplish the same thing: you’re taking the highly targeted custom audience, and using it as a seed to start your Meta ads off right.</p>
<h2 id="but-wait-there%E2%80%99s-a-third-option-too">But wait, there’s a third option too!</h2>
<p>If you’d like, you could use the same Python script above, adjust it to make more than 100 leads (such as 1,000 or 10,000), and then you could directly use that custom audience to serve ads on Meta ads.</p>
<p>You don’t need to do the lookalike part, it just helps expand the Meta custom audience seed you generate with Proxycurl.</p>
<p>That way, you entirely cut guesswork and the Meta algorithm out of the process of getting placed in front of an audience that you know has a very high chance of converting.</p>
<p>At that point, you’re just advertising to the accounts contained in the <code>.CSV</code> generated.</p>
<p>Here’s an edited script that generates a list of 1,000 prospects, for example:</p>
<pre><code class="language-python">
import requests

import csv

# Function to search for Professional Social Network profiles

def search_Professional Social Network_profiles(api_key):

    headers = {'Authorization': 'Bearer ' + api_key}

    api_endpoint = 'https://nubela.co/proxycurl/api/search/person/'

    params = {

        'country': 'US',

        'current_role_title': '(?i)founder',

        'industries': '(?i)financial services',

        'page_size': '1000',

    }

    response = requests.get(api_endpoint, params=params, headers=headers)

    if response.status_code == 200:

        profiles_json = response.json()

        Professional Social Network_urls = [profile['Professional Social Network_profile_url'] for profile in profiles_json['results']]

        return Professional Social Network_urls

    else:

        print(f"Failed to fetch Professional Social Network profiles: Status code {response.status_code}")

        return []

# Function to enrich a single Professional Social Network profile

def enrich_profile(api_key, Professional Social Network_url):

    headers = {'Authorization': 'Bearer ' + api_key}

    api_endpoint = 'https://nubela.co/proxycurl/api/v2/Professional Social Network'

    params = {

        'Professional Social Network_profile_url': Professional Social Network_url,

    'personal_contact_number': 'include',

    'personal_email': 'include',

    }

    response = requests.get(api_endpoint, params=params, headers=headers)

    if response.status_code == 200:

        return response.json()

    else:

        print(f"Failed to enrich profile: Status code {response.status_code}")

        return None

# Function to write profile data to CSV

def write_profiles_to_csv(profiles, filename='Professional Social Network_profiles.csv'):

    fieldnames = ['emails', 'phones', 'fn', 'ln', 'city', 'st', 'country']

    with open(filename, mode='w', newline='', encoding='utf-8') as file:

        writer = csv.DictWriter(file, fieldnames=fieldnames)

        writer.writeheader()

        for profile in profiles:

            writer.writerow({

                'emails': '; '.join(profile.get('personal_emails', [])),

                'phones': '; '.join(profile.get('personal_numbers', [])),

                'fn': profile.get('first_name', ''),

                'ln': profile.get('last_name', ''),

                'city': profile.get('city', ''),

                'st': profile.get('state', ''),

                'country': profile.get('country', '')

            })

# Main workflow

api_key = 'Your_API_Key_Here'  # Replace with your actual API key

Professional Social Network_urls = search_Professional Social Network_profiles(api_key)

# List to hold all enriched profiles

all_profiles = []

for url in Professional Social Network_urls:

    profile_data = enrich_profile(api_key, url)

    if profile_data:

        structured_profile = {

            'personal_emails': profile_data.get('personal_emails', []),

            'personal_numbers': profile_data.get('personal_numbers', []),

            'first_name': profile_data.get('first_name', ''),

            'last_name': profile_data.get('last_name', ''),

            'city': profile_data.get('city', ''),

            'state': profile_data.get('state', ''),

            'country': profile_data.get('country', '')

        }

        all_profiles.append(structured_profile)

# Write the enriched profile data to a CSV file

write_profiles_to_csv(all_profiles)

</code></pre>
<p>There are quite a few options, but regardless of the route you go, you seriously improve your chances of Meta ads showing you to the right people.</p>
<p>Again, you can edit the search parameters above according to your business. <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#search-api-person-search-endpoint">View all of the targeting options available here</a>.</p>
<h2 id="see-that-wasn%E2%80%99t-too-hard-was-it">See, that wasn’t too hard, was it?</h2>
<p>In fact, now you actually have the whole Python script you need to get this job done. You just need to customize it to your liking.</p>
<p>But you will need to create your Proxycurl account first before you do anything else.</p>
<p>That said: <a href="https://nubela.co/proxycurl/auth/register?ref=nubela.co">you can click here to create your Proxycurl account today for free</a>.</p>
<h2 id="how-much-does-proxycurl-cost">How much does Proxycurl cost?</h2>
<p>It's totally free to create a Proxycurl account, however, we use a credit based billing system. When you first sign up, you're issued 20 free credits to test out Proxycurl, with the possibility of getting more for completing certain tasks.</p>
<p>After that, you can either view our <a href="https://nubela.co/proxycurl/pricing?ref=nubela.co">subscriptions here</a> or opt for a pay-as-you-go-plan and just top up credits as needed. In that case, $10 would buy you 100 credits.</p>
<p>The price per endpoint does vary, so it's best to look at our <a href="https://nubela.co/proxycurl/docs?ref=nubela.co">documentation here</a> to get an idea of the cost of credits it'll take (depending on how big of a custom audience you're planning to create, i.e. 100 prospects, or 1,000 prospects, enrichment parameters and so on).</p>
<p>Namely:</p>
<ol>
<li><a href="https://nubela.co/proxycurl/docs?ref=nubela.co#people-api-person-profile-endpoint">Person Profile Endpoint</a> (you can see all base credit costs and additional parameter costs)</li>
<li><a href="https://nubela.co/proxycurl/docs?ref=nubela.co#search-api-person-search-endpoint">Person Search Endpoint</a> (you can see all base credit costs and additional parameter costs)</li>
</ol>
<p>Those are the two endpoints used in the script above and are likely the only two you would need outside of perhaps our relevant company related endpoints, which can also <a href="https://nubela.co/proxycurl/docs?ref=nubela.co">be seen on the documentation here</a>.</p>
<p>The real question that should be asked here is:</p>
<h2 id="how-much-money-would-showing-your-ads-to-the-right-audience-on-meta-ads-bring-in">How much money would showing your ads to the right audience on Meta ads bring in?</h2>
<p>Seriously, ask yourself that.</p>
<p>If instead of wasting thousands of dollars on people who aren't interested in your product/service, you could just get your brand in front of eyeballs that are not only actually qualified and interested, but have money.</p>
<p>How much money would that bring in?</p>
<p>That's the real question I think you should ask yourself.</p>
<p>Chances are, your audience is on Facebook, or Instagram, or the third-party websites that use Meta's advertising platform.</p>
<p>But of course, Meta doesn't really have much incentive to place you in front of them when they make money off of your continued ad spend.</p>
<p>And even on winning ads: typically, the Meta algorithm relies on building data over time as well as conversion events through their pixel. It can take weeks.</p>
<p>This process essentially force feeds Facebook ads (or Meta, whatever you prefer, same thing) accurate data that does in fact fit your ICP. And then, with that seed, Meta can find more ideal fits to put your ad in front of. Instantly giving you edge.</p>
<p>Did I tickle your fancy at all?</p>
<p>If so, now's the time to:</p>
<h2 id="create-your-proxycurl-account">Create your Proxycurl account</h2>
<p>It's at least worth giving Proxycurl a shot; there's minimal risk (pay-as-you-go), and a ton of upside.</p>
<p>Proxycurl will not only allow you to create rich Meta custom audiences that improve the targeting of your Meta ads, and work as a great seed to create an improved lookalike (or advantage+) audience--you can also do a lot more with it, such as:</p>
<ul>
<li>Create prospecting lists in general for cold calling, cold emailing</li>
<li><a href="https://nubela.co/blog/crm-data-enrichment-the-easiest-way-to-increase-your-sales-conversion-rates/">Enrich your CRM with better data</a></li>
<li><a href="https://nubela.co/blog/cold-email-mastery-a-step-by-step-guide-to-automating-prospecting-and-cold-email-outreach-that-works/">Automate your cold emailing</a></li>
<li>Beyond</li>
</ul>
<p>Pretty much any B2B data related needs on people or companies you have, we can handle.</p>
<p>You can't afford to work with out-dated and inaccurate data going into 2025.</p>
<p>It's time to even the playing field and give yourself an advantage:</p>
<p><a href="https://nubela.co/proxycurl/auth/register?ref=nubela.co">Here's your link to create your Proxycurl account today</a>.</p>
<p><strong>P.S.</strong> Have any questions? Don't hesitate to reach out to us at "<a href="mailto:hello@nubela.co">hello@nubela.co</a>".</p>
 ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ Professional Social Network Recruiter Pricing and Tier Comparison (2025) - Lite, Professional, Corporate ]]></title>
        <description><![CDATA[ Understand the functions and pricing of Professional Social Network Recruiter in 2025. ]]></description>
        <link>https://nubela.co/blog/linkedin-recruiter-pricing-and-tier-comparison/</link>
        <guid isPermaLink="false">63a3e1f317365b000157f0af</guid>
        <category><![CDATA[ proxycurl ]]></category>
        <dc:creator><![CDATA[ Colton Randolph | Technical Writer ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2023/08/cr.jpg"/>
        <pubDate>Wed, 15 Nov 2023 11:00:00 +0800</pubDate>
        <media:content url="" medium="image"/>
        <content:encoded><![CDATA[ <p>Professional Social Network Recruiter is a tool used both in-house and externally through staffing/recruiting firms to <a href="https://nubela.co/blog/the-definitive-guide-to-executive-searches-automatically-find-qualified-candidates/">find and source qualified candidates</a>.</p>
<p>It’s safe to say it tends to work fairly well. Professional Social Network is the single largest professional social networking site after all, so there’s an extremely large number of candidates to work with.</p>
<p>The only problem is there’s a lot of mystery surrounding a lot of Professional Social Network’s offerings, and Professional Social Network Recruiter is no different.</p>
<p>They don’t explain the features and benefits very well, nor do they break down the tiers or the according pricing very well.</p>
<p>People are generally left in the dark and confused about Professional Social Network Recruiter.</p>
<p>The goal of this article is to change that. Let’s start with the basics.</p>
<h2 id="what-does-professional-social-network-recruiter-do">What does Professional Social Network Recruiter do?</h2>
<p>Three main things:</p>
<h3 id="1-searches-for-candidates">1. Searches for candidates</h3>
<p>With Professional Social Network Recruiter, you have access to Professional Social Network's database of over 740 million plus profiles, which includes professionals from a wide range of industries and locations.</p>
<p>That said, not only can Professional Social Network Recruiter help candidates find you, it also allows you to <a href="https://nubela.co/blog/the-proxycurl-success-story-hiring-a-marketing-manager-through-automated-recruitment-and-executive-search/">search for candidates using a variety of criteria</a>, including job title, location, industry, and skills.</p>
<p>You can use advanced filters to narrow your search from 740 million plus and find the most qualified candidates.</p>
<h3 id="2-screens-candidates">2. Screens candidates</h3>
<p>Professional Social Network Recruiter allows you to track the progress of candidates through the recruitment process, including scheduling interviews and making notes about their qualifications and fit for the role.</p>
<p>Professional Social Network Recruiter also includes tools that allow you to collaborate with team members and share candidates, notes, and other recruitment-related information.</p>
<h3 id="3-provides-the-ability-to-reach-out-to-candidates">3. Provides the ability to reach out to candidates</h3>
<p>With Professional Social Network Recruiter, you can send direct messages called InMails to candidates through the platform. These messages allow you to connect with potential candidates and start conversations about job opportunities.</p>
<h2 id="how-does-professional-social-network-recruiter-work">How does Professional Social Network Recruiter work?</h2>
<p>Once you’ve obtained a Professional Social Network Recruiter subscription, you’ll see a new icon appear in your Professional Social Network navigation bar:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2023/11/image-6.png" class="kg-image" alt="Where to go to access Professional Social Network Recruiter" loading="lazy" width="456" height="61"><figcaption><span style="white-space: pre-wrap;">Where to go to access Professional Social Network Recruiter</span></figcaption></figure><p>Click on it, and then you’ll have to create a new job:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2023/11/image-7.png" class="kg-image" alt="Posting a job on Professional Social Network Recruiter" loading="lazy" width="1343" height="774"><figcaption><span style="white-space: pre-wrap;">Posting a job on Professional Social Network Recruiter</span></figcaption></figure><p>Next, fill out your desired job information:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2023/11/image-8.png" class="kg-image" alt="Filling out your job information on Professional Social Network Recruiter" loading="lazy" width="1920" height="955"><figcaption><span style="white-space: pre-wrap;">Filling out your job information on Professional Social Network Recruiter</span></figcaption></figure><p>Then add your desired screening questions:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2023/11/image-9.png" class="kg-image" alt="Adding your desired job screening questions" loading="lazy" width="1920" height="955"><figcaption><span style="white-space: pre-wrap;">Adding your desired job screening questions</span></figcaption></figure><p>Now, at this point, you’ll receive the option to pay additional money to receive better placement.</p>
<p>Obviously, this part is up to you, but you can decline it and accept the free (but still paid) option.</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2023/11/image-10.png" class="kg-image" alt="Posting your job on Professional Social Network Recruiter" loading="lazy" width="1920" height="955"><figcaption><span style="white-space: pre-wrap;">Posting your job on Professional Social Network Recruiter</span></figcaption></figure><p>After that, click post!</p>
<p>You can then begin the process of going through candidates that found you, or actively seeking candidates out, and then reaching out within the Professional Social Network Recruiter platform.</p>
<h2 id="the-tiers-of-professional-social-network-recruiter">The tiers of Professional Social Network Recruiter</h2>
<p><a href="https://business.professionalsocialnetwork.com/talent-solutions/recruiter?ref=nubela.co">Professional Social Network has tailored its Recruiter offerings</a> to cater to a wide range of recruitment needs:</p>
<ul>
<li><strong>Professional Social Network Recruiter Lite</strong>- An entry-level solution.</li>
<li><strong>Professional Social Network Recruiter Professional Services</strong> - Specifically designed for staffing agencies.</li>
<li><strong>Professional Social Network Recruiter Corporate</strong>- A comprehensive tool for established businesses.</li>
</ul>
<p>They have a few key differences:</p>
<h3 id="search-features">Search features</h3>
<table>
<thead>
<tr>
<th>Feature</th>
<th>Recruiter Lite</th>
<th>Recruiter Professional Services</th>
<th>Recruiter Corporate</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Linked network access</strong></td>
<td>Up to your 3rd-degree connections</td>
<td>Up to your 3rd-degree connections, with 30 unlocks per month for out-of-network profiles</td>
<td>Full access to entire network</td>
</tr>
<tr>
<td><strong>Search filters</strong></td>
<td>20+ filters</td>
<td>40+ filters, including advanced filters such as years at current company/position, and spoken languages</td>
<td>40+ filters, including advanced filters</td>
</tr>
<tr>
<td><strong>Open to contract work filter</strong></td>
<td>No</td>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr>
<td><strong>Skill assessments filter</strong></td>
<td>No</td>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr>
<td><strong>Spotlights</strong></td>
<td>No</td>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr>
<td><strong>Candidate &amp; company insights</strong></td>
<td>No</td>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr>
<td><strong>Search insights (for example, company trends by talent pool)</strong></td>
<td>No</td>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr>
<td><strong>Candidate search alerts</strong></td>
<td>Max 10 per seat (daily or weekly)</td>
<td>Max 50 (daily or weekly)</td>
<td>Max 50 (daily or weekly)</td>
</tr>
<tr>
<td><strong>Ability to add tags to candidates for filtering &amp; categorization</strong></td>
<td>No</td>
<td>Yes</td>
<td>Yes</td>
</tr>
</tbody>
</table>
<h3 id="messaging-features">Messaging features</h3>
<table>
<thead>
<tr>
<th>Feature</th>
<th>Recruiter Lite</th>
<th>Recruiter Professional Services</th>
<th>Recruiter Corporate</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>InMail Messages per month</strong></td>
<td>30 per seat</td>
<td>100</td>
<td>150</td>
</tr>
<tr>
<td><strong>InMail pooling across your account</strong></td>
<td>Yes</td>
<td>Yes - InMail allotments are pooled across seats on your account (100-150 x number of seats), allowing active recruiters to utilize more InMail credits as needed.</td>
<td>Yes - Pooled across seats</td>
</tr>
<tr>
<td><strong>Ability to bulk send InMail messages</strong></td>
<td>No</td>
<td>Yes - up to 25 messages at once</td>
<td>Yes - up to 25 messages at once</td>
</tr>
<tr>
<td><strong>Purchase additional InMails</strong></td>
<td>70 per month, per seat. (No more than 120 InMails may be banked per seat per month)</td>
<td>Yes</td>
<td>Yes</td>
</tr>
</tbody>
</table>
<figure class="kg-card kg-image-card"><a href="https://sapiengraph.com/?utm_campaign=own_platforms&utm_source=proxycurl_website&utm_medium=platforms&utm_content=ad_image-li_recruiter_pricing"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/04/SG-Banner-Image-in-Proxycurl-Article--2-.png" class="kg-image" alt="" loading="lazy" width="2048" height="520"></a></figure><h2 id="2025-professional-social-network-recruiter-pricing">2025 Professional Social Network Recruiter pricing</h2>
<p>Professional Social Network doesn’t make its Recruiter pricing easily available. However, recent insights suggest:</p>
<blockquote>
<ul>
<li><strong>Recruiter Lite:</strong> $170 per month per seat</li>
<li><strong>Recruiter Professional Services:</strong> unsure, the pricing isn't available on site and the sales department wouldn't give me a answer, but estimated to start at around $850 per month per seat</li>
<li><strong>Recruiter Corporate:</strong> it’s suspected to be priced at around $1,080 per month per seat</li>
</ul>
</blockquote>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2023/11/image-11.png" class="kg-image" alt="Trying and failing to get a quote from Professional Social Network sales" loading="lazy" width="1665" height="816"><figcaption><span style="white-space: pre-wrap;">Trying and failing to get a quote from Professional Social Network sales</span></figcaption></figure><p>(Still no response days later.)</p>
<p>The important thing to keep in mind here is the numbers above are really only to give you an idea—these prices vary based on region and specific company/sales agreements.</p>
<p>You can sign up for Recruiter Lite yourself right now for $170 per month per seat, the rest go through the Professional Social Network sales department (which is a bit… painful, as seen above).</p>
<h2 id="meet-proxycurl-an-alternative-to-professional-social-network-recruiter">Meet Proxycurl: an alternative to Professional Social Network Recruiter</h2>
<p>While Professional Social Network Recruiter offers a robust set of features, another great competitor for finding and sourcing qualified candidates for your business, or other businesses (if you’re a staffing agency) is <a href="https://proxycurl.com/?ref=nubela.co">Proxycurl</a>.</p>
<p>(Hello! That’s us.)</p>
<p>Proxycurl steps in where Professional Social Network's offerings fall short, particularly in terms of data access and integration capabilities.</p>
<p>Proxycurl is a B2B data provider and enrichment API that’s partially powered by <a href="https://nubela.co/proxycurl/linkdb?ref=nubela.co">472 million publicly scraped Professional Social Network profiles</a> and counting (I say partially because we use more than just Professional Social Network, which is part of our secret sauce).</p>
<p>This means that Proxycurl users can pull comprehensive information about potential candidates, including their current and past job positions, names, companies, work/personal emails, phone number, and more, all without ever needing to actually use Professional Social Network itself.</p>
<p>Let me show you how:</p>
<h2 id="using-proxycurl-to-find-qualified-candidates">Using Proxycurl to find qualified candidates</h2>
<p>There are a couple of different ways to prospect for hires with Proxycurl. The main endpoint will remain the same, though, which will be the <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#search-api-person-search-endpoint">Person Search Endpoint</a>.</p>
<h3 id="finding-candidates-based-on-work-history-for-specific-companies">Finding candidates based on work history for specific companies</h3>
<p>Let’s say we’re looking to hire a software developer that has worked for a large software company already.</p>
<p>Using some simple Python along with our Person Search Endpoint, we could search for a software developer that has previously worked for <a href="https://www.professionalsocialnetwork.com/company/stripe?ref=nubela.co">Stripe</a>:</p>
<pre><code class="language-python">
import json, requests

headers = {'Authorization': 'Bearer ' + 'Your_API_Key_Here'}

api_endpoint = 'https://nubela.co/proxycurl/api/search/person/'

params = {

    'country': 'US',

    'past_company_Professional Social Network_profile_url': 'https://www.professionalsocialnetwork.com/company/stripe',

    'enrich_profiles': 'enrich',

    'page_size': '10',

    'past_role_title':'(?i)software developer',

}

response = requests.get(api_endpoint, params=params, headers=headers)

result = response.json()

print(json.dumps(result, indent=2))

</code></pre>
<p>That will return an enriched list of anyone that has previously officially worked for Stripe per the official Professional Social Network company URL.</p>
<p>To change from previous employees <code>past_role_title</code> to active employees, you would simply change your parameters slightly and switch it to <code>current_role_title</code>.</p>
<p>To adjust the above script to use more than one company, you could simply edit the the Python script above accordingly:</p>
<pre><code class="language-python">
import json, requests

headers = {'Authorization': 'Bearer ' + 'Your_API_Key_Here'}

api_endpoint = 'https://nubela.co/proxycurl/api/search/person/'

params = {

    'country': 'US',

    'enrich_profiles': 'enrich',

    'page_size': '10',

    'past_role_title':'(?i)software engineer',

    'past_company_name':'Stripe|PayPal',

}

response = requests.get(api_endpoint, params=params, headers=headers)

result = response.json()

print(json.dumps(result, indent=2))

</code></pre>
<p>That’s one way. We could also drop the company based filtering.</p>
<h3 id="finding-candidates-based-on-industries-worked-in">Finding candidates based on industries worked in</h3>
<p>Now let’s say we don’t have any specific companies in mind, but we know the relevant industry, and we’re also looking for a specific role as well as a specific academic field of study.</p>
<p>We could use the following Python script to find a qualified candidate:</p>
<pre><code class="language-python">
import json, requests

headers = {'Authorization': 'Bearer ' + 'Your_API_Key_Here'}

api_endpoint = '[https://nubela.co/proxycurl/api/search/person/](https://nubela.co/proxycurl/api/search/person/)'

params = {

 'country': 'US',

 'enrich_profiles': 'enrich',

 'page_size': '10',

 'current_role_title':'(?i)senior marketing manager',

'education_field_of_study':'(?i)computer science'

'industries':'hospital &amp; health care',

}

response = requests.get(api_endpoint, params=params, headers=headers)

result = response.json()

print(json.dumps(result, indent=2))

</code></pre>
<p>Now let’s say you need to hire in a specific city.</p>
<p>No problem, we could change the above script to only search for candidates in the city of Los Angeles for instance. Just use the <code>city</code> parameter.</p>
<p>Here’s another example:</p>
<pre><code class="language-python">
import json, requests

headers = {'Authorization': 'Bearer ' + 'Your_API_Key_Here'}

api_endpoint = '[https://nubela.co/proxycurl/api/search/person/](https://nubela.co/proxycurl/api/search/person/)'

params = {

 'country': 'US',

 'enrich_profiles': 'enrich',

 'page_size': '10',

 'current_role_title':'(?i)senior marketing manager',

'education_field_of_study':'(?i)computer science'

'industries':'hospital &amp; health care',

'city':'los angeles',

}

response = requests.get(api_endpoint, params=params, headers=headers)

result = response.json()

print(json.dumps(result, indent=2))

</code></pre>
<p>Easy.</p>
<p>Now let me show you another way to source talent with a different API endpoint.</p>
<h3 id="the-cheapest-way-to-poach-talent-maybe%E2%80%A6-ever">The cheapest way to poach talent maybe… ever?</h3>
<p>Using the Person Search Endpoint above is one way to do it, but it does cost 38 credits per search for a result (base rate, plus extra for extra parameters, more on that later).</p>
<p>One of the cheapest ways to poach talent at scale is to simply use our <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#company-api-employee-listing-endpoint">Employee Listing Endpoint</a> instead to export an enriched list of talent from an ideal company that your ideal candidate might come from.</p>
<p>Let’s say we’re an email marketing company, and we want to hire someone with technical background in sending marketing emails at scale, namely a software engineer.</p>
<p>Using a bit of Python, we could cheaply export a list of past/current/all employees for a specific company. Here’s how:</p>
<pre><code class="language-python">import requests

import json

api_key = 'Your_API_Key_Here'

headers = {'Authorization': 'Bearer ' + api_key}

api_endpoint = 'https://nubela.co/proxycurl/api/Professional Social Network/company/employees/'

params = {

    'url': 'https://www.professionalsocialnetwork.com/company/convertkit',

    'country': 'us',

    'enrich_profiles': 'skip',

    'role_search': 'software engineer',

    'page_size': '10',

    'employment_status': 'all',

    'sort_by': 'recently-joined',

    'resolve_numeric_id': 'false',

}

# Make the request

response = requests.get(api_endpoint, params=params, headers=headers)

# Pretty print the response

formatted_response = json.dumps(response.json(), indent=4)

print(formatted_response)
</code></pre>
<p>That searches for a list of non-enriched profiles (to save costs) of all (past or present) software engineers for ConvertKit, and then returns you their Professional Social Network profile URL:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2023/11/image-12.png" class="kg-image" alt="Proxycurl API result returned while using PyCharm" loading="lazy" width="1920" height="1032"><figcaption><span style="white-space: pre-wrap;">Proxycurl API result returned while using PyCharm</span></figcaption></figure><p>For example:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2023/11/image-13.png" class="kg-image" alt="Example of Professional Social Network profile returned" loading="lazy" width="1124" height="829"><figcaption><span style="white-space: pre-wrap;">Example of Professional Social Network profile returned</span></figcaption></figure><p>Of course, if you wanted to, you could also enrich this result by enabling enrichment instead of skipping it.</p>
<h2 id="are-you-starting-to-see-the-value-here">Are you starting to see the value here?</h2>
<p>I could keep going (you can search for candidates in more ways than just the ways mentioned above), but I think you get the point here.</p>
<p>With Proxycurl, you can search for and access millions of enriched public profiles to use for your benefit.</p>
<p>Further, you can automate the whole thing and build it into your workflow. It’s all scalable and reliable.</p>
<p>With Professional Social Network Recruiter, none of that is possible.</p>
<p>Now, the main thing I will admit that Professional Social Network Recruiter has us beat on are:</p>
<ol>
<li>A larger dataset. It is their platform, after all.</li>
<li>InMail / on platform promotion for your job posts. Obviously, we can’t do that.</li>
</ol>
<p>But what we can do is find qualified candidates for you and hand them to you in a convenient medium (API), all for an extremely competitive price.</p>
<h2 id="proxycurl-vs-professional-social-network-recruiter-pricing">Proxycurl vs. Professional Social Network Recruiter pricing</h2>
<p>We work on a <a href="https://nubela.co/proxycurl/pricing?ref=nubela.co">credit-based system</a>, so depending on the parameters and enrichment options used, pricing can vary, but once you compare them to Professional Social Network Recruiter’s pricing, it is extremely fair.</p>
<p>Our cheapest subscription starts at only $49 for 2,500--or, our $299 monthly subscription would give you 25,000 credits per month to use.</p>
<p>To give you some reference on what certain actions cost with our API:</p>
<ul>
<li>Our <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#search-api-person-search-endpoint">Person Search Endpoint</a> uses 35 credits base rate plus 3 credits per result returned, with additional credits varying based on parameters used.</li>
<li>Our <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#company-api-employee-listing-endpoint">Employee Listing Endpoint</a> uses 3 credits per employee returned, with additional credits varying based on parameters used.</li>
</ul>
<p>Here's a detailed breakdown:</p>
<table>
<thead>
<tr>
<th>Feature/Aspect</th>
<th>Proxycurl</th>
<th>Professional Social Network Recruiter Lite</th>
<th>Professional Social Network Recruiter Corporate</th>
<th>Professional Social Network Recruiter Professional Services</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Data source</strong></td>
<td>472 million publicly scraped Professional Social Network profiles and others</td>
<td>Professional Social Network’s database of over 740 million profiles</td>
<td>Professional Social Network’s database of over 740 million profiles</td>
<td>Professional Social Network’s database of over 740 million profiles</td>
</tr>
<tr>
<td><strong>Candidate search</strong></td>
<td>Advanced search through API</td>
<td>Access up to 3rd-degree connections; 20+ filters</td>
<td>Full network access; 40+ filters, including advanced options</td>
<td>3rd-degree connections with 30 unlocks/month; 40+ filters</td>
</tr>
<tr>
<td><strong>Candidate screening</strong></td>
<td>Information access; no built-in tools</td>
<td>Basic tracking and collaboration tools</td>
<td>Advanced tracking and collaboration tools</td>
<td>Advanced tracking and collaboration tools</td>
</tr>
<tr>
<td><strong>Outreach to candidates</strong></td>
<td>Provides data for external contact</td>
<td>30 InMail Messages per month; no bulk messaging</td>
<td>150 InMail Messages per month; bulk messaging up to 25 messages</td>
<td>100 InMail Messages per month; bulk messaging up to 25 messages</td>
</tr>
<tr>
<td><strong>Integration &amp; automation</strong></td>
<td>Comprehensive API integration</td>
<td>Limited integration</td>
<td>Limited integration</td>
<td>Limited integration</td>
</tr>
<tr>
<td><strong>Customization in searches</strong></td>
<td>Highly customizable with API parameters</td>
<td>Limited customization</td>
<td>Advanced customization</td>
<td>Advanced customization</td>
</tr>
<tr>
<td><strong>Enriched profiles</strong></td>
<td>Available through API</td>
<td>Provided within platform</td>
<td>Provided within platform</td>
<td>Provided within platform</td>
</tr>
<tr>
<td><strong>Industry-specific searches</strong></td>
<td>Supported through API parameters</td>
<td>Supported through search filters</td>
<td>Supported through search filters</td>
<td>Supported through search filters</td>
</tr>
<tr>
<td><strong>Location-based searches</strong></td>
<td>Supported through API parameters</td>
<td>Supported through search filters</td>
<td>Supported through search filters</td>
<td>Supported through search filters</td>
</tr>
<tr>
<td><strong>Pricing model</strong></td>
<td>Credit-based system</td>
<td>Subscription-based</td>
<td>Subscription-based</td>
<td>Subscription-based</td>
</tr>
<tr>
<td><strong>Cost estimate</strong></td>
<td>$170 for 1,700 credits; $299 for 25,000 credits/month (and beyond)</td>
<td>$170/month</td>
<td>~$1,080/month (estimated)</td>
<td>~$850/month (estimated)</td>
</tr>
<tr>
<td><strong>Messaging features</strong></td>
<td>N/A</td>
<td>30 InMail Messages per month</td>
<td>150 InMail Messages per month</td>
<td>100 InMail Messages per month</td>
</tr>
<tr>
<td><strong>Search features</strong></td>
<td>Customizable through API</td>
<td>Basic filters</td>
<td>Advanced filters, full network access</td>
<td>Advanced filters, out-of-network access</td>
</tr>
<tr>
<td><strong>Additional capabilities</strong></td>
<td>Employee Listing Endpoint for targeted company searches</td>
<td>Basic Professional Social Network insights</td>
<td>Comprehensive insights and search alerts</td>
<td>Comprehensive insights and search alerts</td>
</tr>
<tr>
<td><strong>Main advantages</strong></td>
<td>Flexibility, API integration, cost-effective</td>
<td>Basic Professional Social Network integration</td>
<td>Full Professional Social Network network access, advanced search filters</td>
<td>Tailored for staffing agencies, advanced search filters</td>
</tr>
</tbody>
</table>
<p>For a full breakdown of endpoint pricing, and the amount of credits different endpoints or parameters use, <a href="https://nubela.co/proxycurl/docs?ref=nubela.co">check out our documentation here</a>.</p>
<p>We also provide a pay-as-you-go option--avoiding the requirement of a subscription all together; something Professional Social Network Recruiter doesn't offer.</p>
<figure class="kg-card kg-image-card"><a href="https://sapiengraph.com/?utm_campaign=own_platforms&utm_source=proxycurl_website&utm_medium=platforms&utm_content=ad_image-li_recruiter_pricing"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/04/SG-Banner-Image-in-Proxycurl-Article--2--1.png" class="kg-image" alt="" loading="lazy" width="2048" height="520"></a></figure><h2 id="final-thoughts">Final thoughts</h2>
<p>Professional Social Network Recruiter continues to be a major player in recruitment. But as with all tools, it's crucial to evaluate if it's the right fit for your needs, keeping in mind the features, costs, and potential alternatives like Proxycurl.</p>
<p>For some brands without the technical capabilities of integrating something like an API into their processes, Professional Social Network Recruiter might be the right option for you.</p>
<p>While Proxycurl isn’t complicated, Professional Social Network Recruiter is very simple and works directly with your existing Professional Social Network account in your browser.</p>
<p>For others that value optimal workflows and scalability, Proxycurl might be the right option for you.</p>
<p>Either way, you’ll need to weigh out the individual pros and cons of relying on either option for sourcing candidates.</p>
<p>The good news for you is that both options provide you with a free trial; so you can give both a spin before exchanging over your hard earned dollars.</p>
<p>Now is the time of the article where I ask you to:</p>
<h2 id="create-your-proxycurl-account-today">Create your Proxycurl account today</h2>
<p><a href="https://nubela.co/proxycurl/auth/register?ref=nubela.co">You can click here to create your Proxycurl account for free.</a></p>
<p>You’ll get started with 15 credits which aren’t much, but allow you to perform a couple of actions and get a feel for the API.</p>
<p>After that, you can continue with our pay-as-you-go plans. As low as $10 could buy you 100 credits that will then allow you to perform several actions (or you could opt for a subscription for as low as $49 per month).</p>
<p>From that point forward, the world is your oyster, and you can use our vast dataset to search for qualified candidates.</p>
<p><a href="https://nubela.co/proxycurl/auth/register?ref=nubela.co">Just click here to create your account and get started today.</a></p>
<p>Thanks for reading!</p>
<p><strong>P.S.</strong> If you’re interested, we also sell our entire publicly scraped Professional Social Network dataset. It’s called LinkDB. <a href="https://nubela.co/proxycurl/linkdb?ref=nubela.co">Some more details on that are available here</a>.</p>
<p>Also, if you have any questions don’t hesitate to reach out to us at “<a href="mailto:hello@nubela.co">hello@nubela.co</a>”.</p>
 ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ How To Search on Professional Social Network Without Logging In ]]></title>
        <description><![CDATA[ Want to search profiles on Professional Social Network without logging into your own personal Professional Social Network account? We’ve got you covered. ]]></description>
        <link>https://nubela.co/blog/search-linkedin-without-login-anonymously/</link>
        <guid isPermaLink="false">6541623c49b460000124383a</guid>
        <category><![CDATA[ proxycurl ]]></category>
        <dc:creator><![CDATA[ Colton Randolph | Technical Writer ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2023/08/cr.jpg"/>
        <pubDate>Thu, 09 Nov 2023 13:26:22 +0800</pubDate>
        <media:content url="" medium="image"/>
        <content:encoded><![CDATA[ <div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">💡</div><div class="kg-callout-text"><b><strong style="white-space: pre-wrap;">The team behind Proxycurl is now focused on </strong></b><a href="https://nubela.co/?ref=proxycurl" rel="noopener"><b><strong style="white-space: pre-wrap;">NinjaPear</strong></b></a>, a B2B Competitor Intelligence Data Platform.</div></div><p>Professional Social Network is a powerhouse of B2B data, useful for many purposes, such as...</p>
<ul>
<li>Competitor analysis</li>
<li>Industry research</li>
<li>Job market research</li>
<li>Networking preparation</li>
<li><a href="https://nubela.co/blog/the-vc-playbook-proven-methods-for-identifying-and-securing-promising-startups-first/">Investment research</a></li>
<li><a href="https://nubela.co/blog/how-to-programmatically-generate-leads-and-write-cold-emails/">Sales and marketing prospecting</a></li>
<li>Academic research</li>
</ul>
<p>Shall I keep going? (Kidding, I think you get the point.)</p>
<p>Anyway, when you’re browsing Professional Social Network for said valuable information contained on it, there are many reasons why you might not want to use your own Professional Social Network account.</p>
<p>Best-case scenario, you deal with [annoying rate limits](<a href="https://nubela.co/blog/how-to-bypass-Professional">https://nubela.co/blog/how-to-bypass-Professional</a> Social Network-search-limit-in-2023/) that prevent you from accurately browsing and/or extracting any data from Professional Social Network at scale.</p>
<p>Worst-case scenario, you risk losing your own personal Professional Social Network account.</p>
<p>That said, have no fear...</p>
<p>In this article, I’ll be showing you two different ways to search on Professional Social Network without using your personal account.</p>
<p>But first, if you’re the type that just wants to browse Professional Social Network anonymously without sending notifications that you’ve viewed an individual's profile, let me start from the very basics of accomplishing that. Additionally, consider the expertise of a [professional Professional Social Network profile writer](<a href="https://resumeperk.com/Professional?ref=nubela.co">https://resumeperk.com/Professional</a> Social Network-profile) to enhance your online presence effectively.</p>
<p>Before all that,</p>
<h2 id="start-viewing-professional-social-network-profiles-with-our-demo">Start viewing Professional Social Network profiles with our demo</h2>
<p>To fast track everything, we have already done all the heavy lifting for you. We built a [full demo for the Professional Social Network profile viewer here](<a href="https://nubela.co/proxycurl/demo/Professional?ref=nubela.co">https://nubela.co/proxycurl/demo/Professional</a> Social Network-profile-viewer) where you can input a Professional Social Network profile URL and get parts of the profile information returned.</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><a href="https://nubela.co/proxycurl/demo/Professional%20Social%20Network-profile-viewer?ref=nubela.co"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/10/image.png" class="kg-image" alt="View Bill Gates person profile info using Proxycurl's Professional Social Network Profile Viewer tool" loading="lazy" width="1634" height="884"></a><figcaption><span style="white-space: pre-wrap;">Want to know who this Bill Gates person is? View his profile info using our </span><a href="https://nubela.co/proxycurl/demo/Professional%20Social%20Network-profile-viewer?ref=nubela.co" rel="noreferrer"><span style="white-space: pre-wrap;">Professional Social Network Profile Viewer tool</span></a></figcaption></figure><p>No log in required, view the profile anonymously.</p>
<h2 id="browse-professional-social-network-anonymously-using-your-own-account">Browse Professional Social Network anonymously using your own account</h2>
<p>Some people don’t really care about scale or rate limits, they just care about searching or pulling data from Professional Social Network anonymously a few times.</p>
<p>So, if that’s you, changing your profile settings on Professional Social Network to no longer send said visit notifications is pretty easy.</p>
<p>Here's the lowdown on surfing Professional Social Network incognito:</p>
<ul>
<li>Log into your Professional Social Network Account (if you're not already logged in).</li>
<li>Navigate to the “Me” icon at the top.</li>
</ul>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2023/10/chrome_o4uC5um0Ia.png" class="kg-image" alt="Look for the Professional Social Network navigation bar at the top" loading="lazy" width="430" height="64"><figcaption><span style="white-space: pre-wrap;">Look for the Professional Social Network navigation bar at the top</span></figcaption></figure><ul>
<li>Choose “Settings &amp; Privacy” from the dropdown.</li>
<li>On the left side, select “Visibility.”</li>
</ul>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2023/10/chrome_MMARKlRpah-1.png" class="kg-image" alt="Click visibility" loading="lazy" width="273" height="455"><figcaption><span style="white-space: pre-wrap;">Click "visibility"</span></figcaption></figure><ul>
<li>In the profile &amp; network visibility section, locate “Profile viewing options.”</li>
</ul>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2023/10/chrome_rmRAHXf7Oo.png" class="kg-image" alt="Then click &quot;profile viewing options&quot;" loading="lazy" width="531" height="670"><figcaption><span style="white-space: pre-wrap;">Then click "profile viewing options"</span></figcaption></figure><p>Now, you'll be presented with three choices:</p>
<ul>
<li>Your name and headline</li>
<li>Private profile characteristics (like job title and industry)</li>
<li>Full private mode</li>
</ul>
<p>The last option, full private mode, ensures that you're fully anonymous.</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2023/10/chrome_KK3oyV4pMv.png" class="kg-image" alt="Select private mode" loading="lazy" width="517" height="384"><figcaption><span style="white-space: pre-wrap;">Select "private" mode</span></figcaption></figure><p>While the person whose profile you visited will see that someone viewed their profile, your identity will remain a mystery.</p>
<p>However, remember: if you choose “private profile characteristics,” you're not completely private. Details like your job title or industry might give away clues about your identity, so choose wisely!</p>
<p>Okay, that’s method one.</p>
<p>Going forward, the other two methods that follow in this article have zero requirement for you to login to Professional Social Network, but they do both require public Professional Social Network profiles. Let me explain why.</p>
<h2 id="public-vs-private-professional-social-network-data">Public vs. private Professional Social Network data</h2>
<p>[Professional Social Network is a custodian of both public and private data](<a href="https://nubela.co/blog/what-is-the-difference-between-Professional">https://nubela.co/blog/what-is-the-difference-between-Professional</a> Social Network-public-profiles-vs-Professional Social Network-private-profiles-with-python-code-samples/), governed by individual user settings.</p>
<p>Public data is the information that users willingly showcase on their profiles, accessible to anyone with internet access. This includes names, a summarization or description of themselves, titles, companies, and career history.</p>
<p>Private data, on the other hand, is accessible only to connections or within the Professional Social Network network, encompassing details like personal contact information or specific post interactions.</p>
<p>Extracting public data is generally straightforward and is often [sanctioned through Professional Social Network's terms](<a href="https://nubela.co/blog/is-Professional">https://nubela.co/blog/is-Professional</a> Social Network-scraping-legal/), or achieved via search engines and other B2B data tools like <a href="https://proxycurl.com/?ref=nubela.co">Proxycurl</a> (more on that later).</p>
<p>However, extracting private data treads on murky waters, and is not advised. We only work with public Professional Social Network data, and we suggest you do the same.</p>
<h2 id="search-professional-social-network-without-an-account-by-using-google">Search Professional Social Network without an account by using Google</h2>
<p>If the Professional Social Network profile is a public profile, you should be able to Google it and still see quite a bit of the data available on the profile without logging in.</p>
<p>So, for example, let’s Google myself, “Colton Randolph Professional Social Network” in Incognito mode and logged out and see what comes up:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2023/10/chrome_mNlpPAJnas.png" class="kg-image" alt="Googling my own Professional Social Network" loading="lazy" width="768" height="338"><figcaption><span style="white-space: pre-wrap;">Googling my own Professional Social Network</span></figcaption></figure><p>First result and an excerpt, now let’s click on the profile:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2023/10/p7mdxdHD8O.png" class="kg-image" alt="My public Professional Social Network page" loading="lazy" width="587" height="948"><figcaption><span style="white-space: pre-wrap;">My public Professional Social Network page</span></figcaption></figure><p>Not bad.</p>
<p>A pretty significant amount of information is available, but again, this is only if the Professional Social Network profile in context has public appearance settings.</p>
<p>Another con of this method is the fact you'll have to deal with a lot of annoying CAPTCHAs and attempts to get you to login if you plan on doing this to more than a couple of Professional Social Network accounts.</p>
<p>Okay, now I'd like to take this a step further and show you a better way to do this, particularly at scale--but it’ll also provide you with a richer level of data than method two.</p>
<h2 id="search-professional-social-network-at-scale-with-proxycurl">Search Professional Social Network at scale with Proxycurl</h2>
<p><a href="https://nubela.co/proxycurl/?ref=nubela.co">Proxycurl</a> is a B2B data provider that scrapes public people and companies on Professional Social Network for you, and provides it to you in a convenient format. Specifically, <a href="https://nubela.co/blog/ultimate-guide-to-all-21-proxycurl-apis-enrich-people-company-profiles/">an API</a>.</p>
<p>If you’re not aware, an API is like a fast food menu for data. With our <a href="https://nubela.co/proxycurl/docs?ref=nubela.co">different API endpoints</a> you can search for and extract all kinds of B2B data.</p>
<p>Essentially, Proxycurl does all of the complex work and scraping for you; you just need to implement the data.</p>
<p>Our <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#search-api-person-search-endpoint">Person Search Endpoint</a> is what you want to use to search for people on Professional Social Network. Using a little bit of Python and our Person Search Endpoint, we could search for, enrich, and extract any profile.</p>
<figure class="kg-card kg-image-card"><a href="https://sapiengraph.com/?utm_campaign=own_platforms&utm_source=proxycurl_website&utm_medium=platforms&utm_content=ad_image-search_li_wo_login"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/04/SG-Banner-Image-in-Proxycurl-Article-2-1.png" class="kg-image" alt="" loading="lazy" width="2048" height="520"></a></figure><p>Here’s an example:</p>
<pre><code class="language-python">
import requests

import json

api_key = 'Your_API_Key_Here'

headers = {'Authorization': 'Bearer ' + api_key}

api_endpoint = 'https://nubela.co/proxycurl/api/v2/Professional Social Network'

params = {

    'Professional Social Network_profile_url': 'https://professionalsocialnetwork.com/in/colton-randolph',

    'extra': 'include',

    'github_profile_id': 'include',

    'facebook_profile_id': 'include',

    'twitter_profile_id': 'include',

    'personal_contact_number': 'include',

    'personal_email': 'include',

    'inferred_salary': 'include',

    'skills': 'include',

    'use_cache': 'if-recent',

    'fallback_to_cache': 'on-error',

}

response = requests.get(api_endpoint,

                        params=params,

                        headers=headers)

formatted_data = json.dumps(response.json(), indent=4)

print(formatted_data)

</code></pre>
<p>It returns us the following result:</p>
<pre><code class="language-python">
{

"public_identifier": "colton-randolph",

    "profile_pic_url": "https://s3.us-west-000.backblazeb2.com/proxycurl/person/colton-randolph/profile?X-Amz-Algorithm=AWS4-HMAC-SHA256&amp;X-Amz-Credential=0004d7f56a0400b0000000001%2F20231027%2Fus-west-000%2Fs3%2Faws4_request&amp;X-Amz-Date=20231027T201111Z&amp;X-Amz-Expires=3600&amp;X-Amz-SignedHeaders=host&amp;X-Amz-Signature=74f63d7668e64c8192e731d2c8d9fb227273a8708177eaa708b0a7d7fda17cd0",

    "background_cover_image_url": null,

    "first_name": "Colton",

    "last_name": "Randolph",

    "full_name": "Colton Randolph",

    "follower_count": 1823,

    "occupation": "Technical Writer at Proxycurl",

    "headline": "Content strategist and conversion copywriter",

    "summary": "Hi! Nice to meet you; I\u2019m Colton.\n\nA  content strategist and conversion copywriter.\n\nIn short, I turn words into attention and sales.\n\nSEO &amp; blog-based content writing, technical writing, traditional website copy, email copy, VSL, or Dan Kennedy style direct response copy \u2013 it doesn\u2019t matter\u2026\n\nNor does the target audience \u2013 I\u2019ve written for both B2C and B2B brands in various niches like eCom, Cannabis, info products, insurance, software, virtualization and networking, tech (in general), and beyond\u2026\n\nIf you're interested in content that ranks, as well as copy that builds a relationship and converts, reach out.",

    "country": "US",

    "country_full_name": "United States of America",

    "city": "Wichita",

    "state": null,

    "experiences": [

        {

            "starts_at": {

                "day": 1,

                "month": 5,

                "year": 2016

            },

            "ends_at": null,

            "company": "Colton Randolph",

            "company_Professional Social Network_profile_url": null,

            "title": "Freelance Copywriter",

            "description": "I craft copy that actually works. Stop wasting your time on generic copy and content. Start getting leads and customers. Finally increase your conversions and revenue. Get going by reading my blog, then takeoff by shooting me an email, and let's talk growth.",

            "location": null,

            "logo_url": null

        },

        {

            "starts_at": {

                "day": 1,

                "month": 8,

                "year": 2023

            },

            "ends_at": null,

            "company": "Proxycurl",

            "company_Professional Social Network_profile_url": "https://www.professionalsocialnetwork.com/company/proxycurl/",

            "title": "Technical Writer",

            "description": null,

            "location": "Wichita, Kansas, United States",

            "logo_url": "https://media.licdn.com/dms/image/D560BAQG_yY7-UMuvZg/company-logo_400_400/0/1696561966581?e=1705536000&amp;v=beta&amp;t=yEYk4y9X_PwT_q-PDsU3AH0b7fBGlu6PUoEB1WQ8ToI"

        }

</code></pre>
<p>And more, including contact information like email and phone number (depending on the profile).</p>
<p>Plus, since we used <code>'use_cache': 'if-recent</code> here, it will <a href="https://nubela.co/blog/how-fresh-are-profiles-returned-by-proxycurl-api/">only pull data that’s been scraped within 29-days</a>, often even in real time.</p>
<p>Of course the biggest benefit with this option is that you can search and extract data from Professional Social Network at scale. You could build our API into your existing systems and be able to utilize the rich B2B data Professional Social Network provides with none of the normal headaches involved.</p>
<p>I should also note Proxycurl works with both people and companies on Professional Social Network.</p>
<p>To search and export data from companies, you would use our <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#company-api-company-profile-endpoint">Company Profile Endpoint</a>.</p>
<figure class="kg-card kg-image-card"><a href="https://sapiengraph.com/?utm_campaign=own_platforms&utm_source=proxycurl_website&utm_medium=platforms&utm_content=ad_image-search_li_wo_login"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2024/04/SG-Banner-Image-in-Proxycurl-Article-2.png" class="kg-image" alt="Use Sapiengraph custom Google Sheets formulas to scrape Professional Social Network data" loading="lazy" width="2048" height="520"></a></figure><h2 id="create-your-proxycurl-account-today">Create your Proxycurl account today</h2>
<p>It’s free to create a Proxycurl account, and you’ll receive 15 credits upon signing up to try out a few different actions.</p>
<p><a href="https://nubela.co/proxycurl/auth/register?ref=nubela.co">You can click here to create your account today.</a></p>
<p>After you run out of your initial account credits, <a href="https://nubela.co/proxycurl/pricing?ref=nubela.co">$10 can buy you 100 credits</a>, and 100 credits can do quite a few different actions with our API.</p>
<p>For example, you could pull 50 different fresh Professional Social Network profiles while using our <code>if_recent</code> caching parameter with our Person Profile Endpoint for 100 credits or $10 (it could be less or more depending on the parameters used, <a href="https://nubela.co/proxycurl/docs?ref=nubela.co">our full documentation is here</a>).</p>
<p>Proxycurl is extremely cost effective while eliminating most of the headaches involved with pulling data from Professional Social Network–even when you compare it to the official paid tools available from Professional Social Network like their own limited API, or Professional Social Network Sales Navigator.</p>
<p>It’s time you finally started operating with the fresh &amp; rich B2B data you deserve.</p>
<p><a href="https://nubela.co/proxycurl/auth/register?ref=nubela.co">Give Proxycurl a try today</a>.</p>
<p><strong>P.S.</strong> Any questions about Proxycurl or how we scrape data from Professional Social Network and beyond? Reach out to us at “<a href="mailto:hello@nubela.co">hello@nubela.co</a>” and we would be happy to help.</p>
 ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ Changelog: Fresh data is now the default standard for our Person and Company Profile Endpoints ]]></title>
        <description><![CDATA[ You might&#39;ve seen this new “Data Freshness” selector in your Proxycurl dashboard.





It’s part of a new update we recently rolled out.


We’ve made it easy for you to toggle on and off the freshness parameter of the Person Profile Endpoint and Company Profile Endpoint..


Once ]]></description>
        <link>https://nubela.co/blog/changelog-fresh-data-is-now-the-default-standard-for-our-person-and-company-profile-endpoints/</link>
        <guid isPermaLink="false">6541d08a49b46000012438e0</guid>
        <category><![CDATA[ changelog ]]></category>
        <dc:creator><![CDATA[ Joseph Lim | Head of Marketing ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2023/03/Screenshot-2023-03-13-at-5.30.12-PM-min.png"/>
        <pubDate>Tue, 07 Nov 2023 11:26:18 +0800</pubDate>
        <media:content url="" medium="image"/>
        <content:encoded><![CDATA[ <!--kg-card-begin: markdown--><p>You might've seen this new “Data Freshness” selector in <a href="https://nubela.co/proxycurl/dashboard/proxycurl-api/api-key/?ref=nubela.co">your Proxycurl dashboard</a>.</p>
<p><img src="https://drive.google.com/uc?export=view&amp;id=1wZOxA8Dpo9s3zpVVuyUQ-8PMLuo79H8t" alt="Data freshness defaults" loading="lazy"></p>
<p>It’s part of a new update we recently rolled out.</p>
<p>We’ve made it easy for you to toggle on and off the freshness parameter of the <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#people-api-person-profile-endpoint">Person Profile Endpoint</a> and <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#company-api-company-profile-endpoint">Company Profile Endpoint</a>..</p>
<p>Once turned on, the profile data returned will be <strong>no older than 29 days</strong> old <a href="https://nubela.co/blog/how-fresh-are-profiles-returned-by-proxycurl-api/">(<em>see Proxycurl's freshness guarantee in detail here</em>)</a>.</p>
<ul>
<li>For <strong>new users</strong> (thank you, we love you) whose accounts were created on 26 Oct 2023 and beyond, this parameter is enabled by default.</li>
<li>For <strong>old users</strong> (thank you, we love you extra), this is toggled off by default. You’ll need to toggle them on to use the freshness parameter.</li>
</ul>
<p><em>Why did we do this?</em></p>
<p>Our competitors may not think the same, but fresh data should be the standard.</p>
<p>Also, this saves the countless emails asking us about pulling fresher data (again, we love you and are here to help but your answer is likely contained in our <a href="https://nubela.co/proxycurl/docs?ref=nubela.co">documentation</a>.</p>
<p>Anyways, over the course of time, if the questions are consistent enough, it might make more sense to change the standard. We recognized it here, and have adjusted our API accordingly.</p>
<p>For those that are on a budget and value credit usage more than fresh data, you can always still use our cache (see: <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#people-api-person-profile-endpoint">“<code>use_cache</code>” documentation here</a>). For heavy users to whom fresh data is always required, this toggle can save you the trouble needing to specify the <code>use_cache</code> parameter every time.</p>
<p>Here’s to fresh data!</p>
<!--kg-card-end: markdown--> ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ Changelog: Improving The Personal Email Lookup Endpoint To Exclude Work Emails ]]></title>
        <description><![CDATA[ “Why do you still charge credits for work emails that are filtered out when I’m searching for personal emails?”

A customer asked.

In fact, quite a few customers…

We’re happy to announce we listened:

 * before: when using the Personal Email Lookup Endpoint, work emails that were filtered out ]]></description>
        <link>https://nubela.co/blog/changelog-improving-the-personal-email-lookup-endpoint-to-exclude-work-emails/</link>
        <guid isPermaLink="false">6530d9cb49b4600001243499</guid>
        <category><![CDATA[ changelog ]]></category>
        <dc:creator><![CDATA[ Joseph Lim | Head of Marketing ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2023/03/Screenshot-2023-03-13-at-5.30.12-PM-min.png"/>
        <pubDate>Tue, 24 Oct 2023 16:37:58 +0800</pubDate>
        <media:content url="" medium="image"/>
        <content:encoded><![CDATA[ <p><em>“Why do you still charge credits for work emails that are filtered out when I’m searching for personal emails?”</em></p><p>A customer asked.</p><p>In fact, quite a few customers…</p><p>We’re happy to announce we listened:</p><ul><li><code>before</code>: when using the <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#contact-api-personal-email-lookup-endpoint">Personal Email Lookup Endpoint</a>, work emails that were filtered out via <code>email_validation=fast</code> were returned under the <code>invalid_email</code> key and still deducted credits from your account.</li><li><code>now</code>: these work emails <strong>will not be returned nor cost any credits</strong>.</li></ul><p>It’s only right that our Personal Email Lookup Endpoint solely charges for finding personal emails, and excludes work emails.</p><p>Going forward our goal is to make Proxycurl a no-brainer to build into your existing systems and workflow.</p><p>So, we want you to trust us to consistently provide you rich data at an extremely competitive, and fair rate – which is why we’ve made this change.</p><p>By the way, if you need to find work emails, you can find them with our <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#contact-api-work-email-lookup-endpoint">Work Email Lookup Endpoint</a>.</p><p><strong>P.S.</strong> If you’re an active customer of Coresignal on the fence about switching over to Proxycurl (it’s not too late to make your best business decision of 2023), we just released an article with some news you definitely want to see:</p><p><a href="https://nubela.co/blog/proxycurls-guarantee-to-beat-coresignal-prices/">Click here to read Proxycurl’s guarantee to beat Coresignal prices</a>.</p><p><strong>P.P.S.</strong> A cheat code is to simply reply to this email with your current Coresignal quote (with proof) – and we promise to beat it.</p><p>Also, if you’re a customer of any of our competitors right now, just email us at <a href="mailto:hello@nubela.co">hello@nubela.co</a> with a quote – there’s a very good chance we can beat it.</p> ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ Due Diligence Simplified: Automate the Enrichment of People and Companies ]]></title>
        <description><![CDATA[ It&#39;s crucial you know who you&#39;re talking to. Whether it&#39;s for sales, HR, or beyond, due diligence is essential. But how do you do it effectively? Let&#39;s find out. ]]></description>
        <link>https://nubela.co/blog/due-diligence-simplified-automate-the-enrichment-of-people-and-companies/</link>
        <guid isPermaLink="false">652db3fa49b4600001243361</guid>
        <category><![CDATA[ proxycurl ]]></category>
        <dc:creator><![CDATA[ Colton Randolph | Technical Writer ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2023/08/cr.jpg"/>
        <pubDate>Tue, 17 Oct 2023 17:38:15 +0800</pubDate>
        <media:content url="" medium="image"/>
        <content:encoded><![CDATA[ <!--kg-card-begin: markdown--><p>There are several reasons why you might need to enrich a data profile on a person or company; it entirely depends on the industry.</p>
<p>For example:</p>
<ul>
<li>A sales team trying to better understand a prospect before reaching out and trying to close a deal</li>
<li>HR doing research on a candidate's job history before presenting an offer</li>
<li>A startup doing their due diligence on a list of VCs they’re interested in reaching out to for investment opportunities</li>
<li>The inverse, a VC performing due diligence on a list of startups they're interested in</li>
</ul>
<p>And beyond...</p>
<p>Regardless of industry, you want to be able to know who you’re talking to. That’s where due diligence comes in.</p>
<p>Plus, even if you already have a solid dataset, it doesn’t hurt to have other data sources to be able to use to verify and validate your existing one.</p>
<p>Which brings up a valid question:</p>
<h2 id="what%E2%80%99s-the-best-data-provider-to-enrich-people-and-companies-with">What’s the best data provider to enrich people and companies with?</h2>
<p>I’m glad you asked.</p>
<p>I might be slightly biased here (I’ll prove it later, though), but I’d like to introduce you to <a href="https://proxycurl.com/?ref=nubela.co">Proxycurl</a>.</p>
<p>We’re a B2B data provider that you can plug into your existing due diligence process to enrich and/or validate data profiles on people and companies.</p>
<p>Proxycurl is specifically designed to be developer-friendly and integrate with your existing systems, if possible.</p>
<p>Most of our customers use our API, but we also sell our entire dataset (it’s called <a href="https://nubela.co/proxycurl/linkdb?ref=nubela.co">LinkDB</a>).</p>
<p>A big benefit of using our API to enrich data profiles, though, is the fact we can offer a <a href="https://nubela.co/blog/how-fresh-are-profiles-returned-by-proxycurl-api/">29-day freshness guarantee</a>, and in many cases, the data is scraped live.</p>
<p>So, that means you’re getting an extremely fresh source of data to enrich your data profiles with.</p>
<p>That said, by the end of this article, my goal is for you to walk away knowing a much simpler and easier way to enrich just about any data profile without requiring any additional information.</p>
<p>But first, I need to explain what enriching a data profile really means…</p>
<h2 id="what-does-enriching-a-data-profile-mean">What does enriching a data profile mean?</h2>
<p>Enriching a data profile refers to the process of adding more information or details to an existing set of data about an individual or company.</p>
<p>The aim is to get a clearer, more comprehensive picture of the person or organization in question.</p>
<p>This could involve adding data such as employment history, education, professional connections, social media activity, and more.</p>
<p>In essence, it's about making the profile more ”rich” in terms of information.</p>
<p>Now, let's tackle the purpose of due diligence.</p>
<h2 id="what%E2%80%99s-the-purpose-of-due-diligence">What’s the purpose of due diligence?</h2>
<p>Due diligence, in its simplest form, is a thorough investigation or audit of a potential investment, business partnership, or any other situation where understanding the full picture of an individual is crucial.</p>
<p>It's essentially the research phase that ensures all parties involved have a clear understanding of what they're getting into.</p>
<p>This can range from understanding the financial health of a company you're considering investing in, to vetting a potential employee's background and qualifications.</p>
<p>More or less, due diligence is simply about mitigating risks and making informed decisions.</p>
<p>By conducting due diligence, you can avoid potential pitfalls, protect your reputation, ensure you’re complying with all relevant regulations and standards, and beyond.</p>
<p>For many industries, KYC (Know Your Customer) is a mandated form of due diligence, ensuring that businesses understand the true identity of their clients and can screen for potential risks.</p>
<p>But beyond the regulatory requirements, due diligence also provides businesses with valuable insights that can inform their strategies, tailor their services, and ultimately build stronger, more trusting relationships with their clients or partners.</p>
<p>In this article, we’ll primarily focus on that aspect of due diligence.</p>
<h2 id="how-can-proxycurl-simplify-my-due-diligence-process">How can Proxycurl simplify my due diligence process?</h2>
<p>Proxycurl offers a non-intrusive platform to pull extensive data about people and companies.</p>
<p>Through <a href="https://nubela.co/blog/ultimate-guide-to-all-21-proxycurl-apis-enrich-people-company-profiles/">Proxycurl's API</a>, you can effortlessly access details such as work experience history, personal email addresses, phone numbers, and beyond without the need for additional KYC methods (take one data point, such as an email, and expand it into many).</p>
<p>This ensures that there's a perfect equilibrium between the depth of data and not annoying your customers, clients, and prospects.</p>
<p>Also, if you’re curious about the legality of Proxycurl, all of our data is scraped from [publicly available sources](<a href="https://nubela.co/blog/what-is-the-difference-between-Professional">https://nubela.co/blog/what-is-the-difference-between-Professional</a> Social Network-public-profiles-vs-Professional Social Network-private-profiles-with-python-code-samples/) and then packaged together into an easily usable medium (<a href="https://proxycurl.com/?ref=nubela.co">our API</a>).</p>
<p>Meaning, [Proxycurl is 100% legal](<a href="https://nubela.co/blog/is-Professional">https://nubela.co/blog/is-Professional</a> Social Network-scraping-legal/). We also comply with CCPA and GDPR.</p>
<p>Now that I’ve given you a bit of background, let’s break down the actual due diligence use cases of Proxycurl and how you can implement them.</p>
<p>First up:</p>
<h2 id="hr-and-employment-due-diligence">HR and employment due diligence</h2>
<p>HR firms, recruitment agencies, and jobs in general have to perform due diligence practically every time before they hire someone.</p>
<p>You can’t employ someone you don’t know anything about. It’s important to validate and verify; you can save yourself months of hassle that way.</p>
<p>The good news is, using Proxycurl, there are two different ways you could easily look up a work history.</p>
<h3 id="verifying-work-history-and-skills-with-a-social-media-profile-url">Verifying work history and skills with a social media profile URL</h3>
<p>The first way to verify employment history is by using our <a href="https://nubela.co/proxycurl/people-api?ref=nubela.co">People API</a>, specifically our <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#people-api-person-profile-endpoint">Person Profile Endpoint</a>.</p>
<p>Our Person Profile Endpoint <a href="https://nubela.co/blog/profile-enrichment-via-facebook-twitter-comes-to-proxycurl/">only requires a social media URL</a>, so you could look up a work history and more with either a Twitter (X), Facebook, or Professional Social Network profile URL.</p>
<p>Here’s a quick Python example:</p>
<pre><code class="language-python">
import requests

import json

api_key = 'Your_API_Key_Here'

headers = {'Authorization': 'Bearer ' + api_key}

api_endpoint = 'https://nubela.co/proxycurl/api/v2/Professional Social Network'

params = {

    'Professional Social Network_profile_url': 'https://professionalsocialnetwork.com/in/johnrmarty/',

    'extra': 'include',

    'github_profile_id': 'include',

    'facebook_profile_id': 'include',

    'twitter_profile_id': 'include',

    'personal_contact_number': 'include',

    'personal_email': 'include',

    'inferred_salary': 'include',

    'skills': 'include',

    'use_cache': 'if-recent,

}

response = requests.get(api_endpoint,

                        params=params,

                        headers=headers)

formatted_data = json.dumps(response.json(), indent=4)

print(formatted_data)

</code></pre>
<p>In response, because of the additional parameters used here, we’re returned the following:</p>
<ul>
<li>Full name</li>
<li>Occupation</li>
<li>Summary of the individual</li>
<li>The country they’re from</li>
<li>Their current source of employment</li>
<li>Past sources of employment (and length, job roles)</li>
<li>Skills</li>
</ul>
<p>Not bad, right?</p>
<p>Now, let’s do it without a social media URL.</p>
<h3 id="verify-work-history-with-just-a-first-and-last-name">Verify work history with just a first and last name</h3>
<p>By using our <a href="https://nubela.co/proxycurl/search-api?ref=nubela.co">Search API</a>, specifically our <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#search-api-person-search-endpoint">Person Search Endpoint</a>, you can look up and enrich an identity based on a couple of varying identifiers, such as:</p>
<ul>
<li>Name</li>
<li>Current company</li>
<li>Current job role</li>
<li>Education</li>
<li>And more</li>
</ul>
<p>You can use one or <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#search-api-person-search-endpoint">any of those search parameters from the full list available</a>.</p>
<p>Let’s say we want to hire someone named “Bob Dylan” and his role is going to be a content writer.</p>
<p>Using some simple Python, we could look up that identity and enrich it:</p>
<pre><code class="language-python">import requests

import json

api_key = 'Your_API_Key_Here'

headers = {'Authorization': 'Bearer ' + api_key}

api_endpoint = 'https://nubela.co/proxycurl/api/search/person/'

params = {

    'country': 'US',

    'enrich_profiles': 'enrich',

    'page_size': '10',

    'past_role_title': '(?i)content writer',

    'current_role_title': '(?i)content writer',

    'last_name': '(?i)Dylan',

    'first_name': '(?i)Bob'

}

response = requests.get(api_endpoint,

                        params=params,

                        headers=headers)

formatted_data = json.dumps(response.json(), indent=4)

print(formatted_data)

</code></pre>
<p>After running that script, we actually <a href="https://www.professionalsocialnetwork.com/in/bob-dylan-0a5b1a1bb/?ref=nubela.co">got one result back</a>:</p>
<!--kg-card-end: markdown--><figure class="kg-card kg-image-card"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2023/10/chrome_ixgWgzEtu7.png" class="kg-image" alt="Bob Dylan Professional Social Network profile" loading="lazy" width="572" height="593"></figure><!--kg-card-begin: markdown--><p>It’ll also return other available data points like:</p>
<ul>
<li>City, state</li>
<li>Full work history</li>
<li>Skills</li>
<li>And beyond</li>
</ul>
<p>With our Search API, all you need is one or two available identifiers, and then you can enrich practically an entire identity.</p>
<p>Now, let me give you another example outside of verifying employment history.</p>
<h2 id="due-diligence-on-people">Due diligence on people</h2>
<p>Our API works with both people and companies, but let’s start with use cases designed to be used on people rather than companies.</p>
<h3 id="validating-any-given-email-address-for-free">Validating any given email address for free</h3>
<p>Using our <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#contact-api-disposable-email-address-check-endpoint">Disposable Email Address Check Endpoint</a>, you can check if any email address belongs to a free or disposable email service.</p>
<p>In other words, you can validate if there are any worthless email addresses on any of your prospecting lists before you send – and <a href="https://nubela.co/proxycurl/free-tools?ref=nubela.co">this endpoint is entirely free</a>.</p>
<p>Here’s an example of how you could use some Python with it to automatically validate a list of email addresses:</p>
<pre><code class="language-python">import requests

import csv

api_key = 'YOUR_API_KEY'  # Replace with your actual API key

headers = {'Authorization': 'Bearer ' + api_key}

api_endpoint = 'https://nubela.co/proxycurl/api/disposable-email'

valid_emails = []

free_emails = []

disposable_emails = []

# Open the input CSV file and read the emails

with open('emails_list.csv', 'r') as input_file:

    reader = csv.DictReader(input_file)

    for row in reader:

        email = row['email']

        params = {'email': email}

        response = requests.get(api_endpoint, params=params, headers=headers)

        

        data = response.json()

        

        # Handle rate limit error

        if 'error' in data:

            print(f&quot;Error for {email}: {data['error']}&quot;)

            continue

        

        # Categorize the email

        if data.get('is_disposable_email') == True:

            disposable_emails.append(email)

        elif data.get('is_free_email') == True:

            free_emails.append(email)

        else:

            valid_emails.append(email)

# Write the emails to a new CSV file in separate columns

with open('categorized_emails.csv', 'w', newline='') as output_file:

    writer = csv.writer(output_file)

    writer.writerow(['Valid Emails', 'Free Emails', 'Disposable Emails'])  # Write the headers

    

    # Write emails row by row

    max_rows = max(len(valid_emails), len(free_emails), len(disposable_emails))

    for i in range(max_rows):

        valid_email = valid_emails[i] if i &amp;lt; len(valid_emails) else ''

        free_email = free_emails[i] if i &amp;lt; len(free_emails) else ''

        disposable_email = disposable_emails[i] if i &amp;lt; len(disposable_emails) else ''

        

        writer.writerow([valid_email, free_email, disposable_email])

print(&quot;Export of categorized emails completed!&quot;)
</code></pre>
<p>That’ll take a list of emails within “emails_list.csv” (in the same folder as your Python script) and automatically validate them for you, placing them in one of three columns:</p>
<ul>
<li>Valid emails</li>
<li>Free emails</li>
<li>Disposable emails</li>
</ul>
<p>Again, this is entirely for free – there’s no reason not to be doing this before you ever send out any cold emails.</p>
<p>Now, let me show you an enrichment example.</p>
<h3 id="enriching-leads-with-only-an-email">Enriching leads with only an email</h3>
<p>Using our <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#contact-api-reverse-email-lookup-endpoint">Reverse Email Lookup</a>, you could enrich an identity using nothing but an email.</p>
<p>So, go ahead and create a new folder, then create a new .CSV named “input_emails.csv” with only one row like so (of course, replacing with the desired emails you’d like to enrich):</p>
<pre><code>
nathan@convertkit.com

russell@clickfunnels.com

dan@mailchimp.com

</code></pre>
<p>Next, create another Python script in that same folder and paste the following code:</p>
<pre><code class="language-python">
import json

import requests

import csv

# Your API key

API_KEY = ‘Your_API_Key_Here'

# API endpoint

api_endpoint = 'https://nubela.co/proxycurl/api/Professional Social Network/profile/resolve/email'

# Headers for the API request

headers = {'Authorization': 'Bearer ' + API_KEY}

# Input and output CSV file names

input_file = 'input_emails.csv'

output_file = 'enriched_data.csv'

# Read email addresses from the input CSV file

with open(input_file, 'r') as csvfile:

    reader = csv.reader(csvfile)

    email_addresses = [row[0] for row in reader]

# Open the output CSV file for writing

with open(output_file, 'w', newline='') as csvfile:

    fieldnames = [

        'email', 'full_name', 'profile_picture', 'current_occupation',

        'country', 'city', 'state', 'Professional Social Network_profile', 'twitter_profile',

        'facebook_profile', 'past_work_experiences', 'Professional Social Network_posts',

        'personal_emails', 'personal_phone_numbers', 'skills_interests'

    ]

    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)

    writer.writeheader()

    # Loop through each email address

    for email_address in email_addresses:

        params = {

            'lookup_depth': 'deep',

            'email': email_address,

            'enrich_profile': 'enrich',

        }

        response = requests.get(api_endpoint, params=params, headers=headers)

        result = response.json()

        # Extract data from the API response

        profile = result.get('profile', {})

        experiences = profile.get('experiences', [])

        past_work_experiences = '; '.join([exp.get('title', '') + ' at ' + exp.get('company', '') for exp in experiences])

        writer.writerow({

            'email': email_address,

            'full_name': profile.get('full_name', ''),

            'profile_picture': profile.get('profile_pic_url', ''),

            'current_occupation': profile.get('occupation', ''),

            'country': profile.get('country_full_name', ''),

            'city': profile.get('city', ''),

            'state': profile.get('state', ''),

            'Professional Social Network_profile': result.get('Professional Social Network_profile_url', ''),

            'twitter_profile': result.get('twitter_profile_url', ''),

            'facebook_profile': result.get('facebook_profile_url', ''),

            'past_work_experiences': past_work_experiences,

            'Professional Social Network_posts': '',  # This data is not provided in the shared response

            'personal_emails': '; '.join(profile.get('personal_emails', [])),

            'personal_phone_numbers': '; '.join(profile.get('personal_numbers', [])),

            'skills_interests': '; '.join(profile.get('skills', []))

        })

print(f&quot;Data exported to {output_file}&quot;)

</code></pre>
<p>In return, that’ll export the enriched identities to a file in the same folder named “enriched_data.csv”:</p>
<!--kg-card-end: markdown--><figure class="kg-card kg-image-card"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2023/10/EXCEL_lCUnhrXHJf.png" class="kg-image" alt="A csv file of enrich identities" loading="lazy" width="1309" height="81"></figure><!--kg-card-begin: markdown--><p>It should be noted that <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#contact-api-reverse-email-lookup-endpoint">any of the additional responses here</a> can be implemented into this script.</p>
<p>You would just need to add the extra responses desired, depending on the information needed.</p>
<p>We could also enrich leads with a social media profile URL.</p>
<h3 id="enriching-leads-with-social-media-profile-urls">Enriching leads with social media profile URLs</h3>
<p>If you don’t have an email yet but were able to find their social media URL, you could pull their personal email address as well as other information by using our <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#people-api-person-profile-endpoint">Personal Profile Endpoint</a>.</p>
<p>For example, let's say we have a list of Professional Social Network profile URLs but nothing else.</p>
<p>First, we need to create a new file named “input_profiles.csv” in its own folder, formatted as follows:</p>
<pre><code class="language-csv">
Professional Social Network_profile_url

https://www.professionalsocialnetwork.com/in/colton-randolph/

https://www.professionalsocialnetwork.com/in/stevengoh/

</code></pre>
<p>Then, if you don’t already have pandas (a Python library) installed, you’ll need to install pandas with <code>pip install pandas</code> to run the following script.</p>
<p>After installing pandas, we need to create another Python script in the same folder as “input_profiles.csv”:</p>
<pre><code class="language-python">
import pandas as pd

import requests

# Define your Proxycurl API key and API endpoint

api_key = 'YOUR_API_KEY'

api_endpoint = 'https://nubela.co/proxycurl/api/v2/Professional Social Network'

# Load the input CSV file with Professional Social Network profile URLs

input_csv = 'input_profiles.csv'

output_csv = 'enriched_profiles.csv'

# Create empty lists to store enriched data

enriched_data = []

# Read the CSV file into a DataFrame

try:

    df = pd.read_csv(input_csv)

except FileNotFoundError:

    print(f&quot;Error: Input CSV file '{input_csv}' not found.&quot;)

    exit(1)

# Iterate through the Professional Social Network profile URLs in the DataFrame

for index, row in df.iterrows():

    Professional Social Network_profile_url = row['Professional Social Network_profile_url']

    

    # Make API request without the 'extra' parameter

    headers = {'Authorization': 'Bearer ' + api_key}

    params = {

        'Professional Social Network_profile_url': Professional Social Network_profile_url,

        'personal_email': 'include',  # Include personal email

        'personal_contact_number': 'include',  # Include personal contact number

    }

    response = requests.get(api_endpoint, params=params, headers=headers)

    

    # Check if the API request was successful

    if response.status_code == 200:

        api_data = response.json()

        

        # Extract the relevant information from the API response

        full_name = api_data.get('full_name', '')

        profile_picture = api_data.get('profile_pic_url', '')

        current_occupation = api_data.get('occupation', '')

        country = api_data.get('country', '')

        city = api_data.get('city', '')

        state = api_data.get('state', '')

        

        # Extract personal email and contact number if available

        personal_emails = api_data.get('personal_emails', [])

        personal_contact_numbers = api_data.get('personal_numbers', [])

        # Get the first personal email if available

        personal_email = personal_emails[0] if personal_emails else ''

        # Get the first personal contact number if available

        personal_contact_number = personal_contact_numbers[0] if personal_contact_numbers else ''

        # Create a dictionary with the extracted data

        enriched_profile = {

            'full_name': full_name,

            'profile_picture': profile_picture,

            'current_occupation': current_occupation,

            'country': country,

            'city': city,

            'state': state,

            'Professional Social Network_profile': Professional Social Network_profile_url,

            'personal_email': personal_email,

            'personal_contact_number': personal_contact_number,

        }

        # Append the enriched data to the list

        enriched_data.append(enriched_profile)

    else:

        print(f&quot;Failed to fetch data for profile at index {index}: {Professional Social Network_profile_url}&quot;)

# Create a new DataFrame from the enriched data

enriched_df = pd.DataFrame(enriched_data)

# Save the enriched data to a new CSV file

enriched_df.to_csv(output_csv, index=False)

print(f&quot;Enriched data saved to {output_csv}&quot;)

</code></pre>
<p>After running that script, you’ll see it turns Professional Social Network profile URLs into an enriched dataset, including email, personal phone number, country, and more.</p>
<p>It all depends on the required fields you want to pass over to the .CSV. You could add more data than demonstrated here. <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#people-api-person-profile-endpoint">All of the available responses are listed here</a>.</p>
<p>Again, as I mentioned earlier, you can also use Facebook as well as Twitter (X) with this endpoint, but Professional Social Network will be the most reliable.</p>
<p>This just goes to show you can enrich an identity with about any data point. Email, social media URL, whatever.</p>
<p>Who needs extra KYC?</p>
<p>You just need one tiny identifier, and we can do all of the rest.</p>
<p>Now, let’s move on to companies.</p>
<h2 id="due-diligence-on-companies">Due diligence on companies</h2>
<p>We have much of the same functionality for companies as we do for people.</p>
<h3 id="enriching-a-company">Enriching a company</h3>
<p>Using our <a href="https://nubela.co/proxycurl/docs?python&ref=nubela.co#company-api-company-profile-endpoint">Company Profile Endpoint</a>, you can insert any Professional Social Network company URL and automatically enrich it.</p>
<p>So, let’s say we want to do a <a href="https://nubela.co/blog/proxycurl-api-vs-coresignal/">competitive analysis on Coresignal</a>, as they’re one of our (cough, cough, <a href="https://nubela.co/blog/proxycurls-guarantee-to-beat-coresignal-prices/">inferior and expensive</a>) competitors.</p>
<p>Here’s a quick Python example of just that:</p>
<pre><code class="language-python">
import requests

import json

api_key = 'Your_API_Key_Here'

headers = {'Authorization': 'Bearer ' + api_key}

api_endpoint = 'https://nubela.co/proxycurl/api/Professional Social Network/company'

params = {

    'url': 'https://www.professionalsocialnetwork.com/company/coresignal/',

    'resolve_numeric_id': 'true',

    'categories': 'include',

    'funding_data': 'include',

    'extra': 'include',

    'exit_data': 'include',

    'acquisitions': 'include',

    'use_cache': 'if-recent',

}

response = requests.get(api_endpoint,

                        params=params,

                        headers=headers)

# Check if the request was successful

if response.status_code == 200:

    # Parse and print the content of the response in a formatted manner

    data = response.json()

    print(json.dumps(data, indent=4))

else:

    print(f&quot;Error: {response.status_code}&quot;)

</code></pre>
<p>After running the script, we received the following response:</p>
<pre><code class="language-json">
{

    &quot;Professional Social Network_internal_id&quot;: &quot;43181787&quot;,

    &quot;description&quot;: &quot;Coresignal was founded with a goal to make large amounts of fresh public web data accessible to any company worldwide.\n\nWe offer parsed, ready-to-use data from 20 public web data sources for investment, HR tech, and sales tech companies, placing a special emphasis on data freshness.\n\n740M employee data records, 104M company data records, and millions of other records split into 8 data categories enable companies to build data-driven products and extract actionable insights.\n\nYou can choose a data solution that suits your needs, pick between multiple delivery frequency options and get data in different formats: JSON, CSV, or HTML. We also offer six convenient APIs for easy search and retrieval of fresh data records.\n\nThe Coresignal team includes some of the industry\u2019s most experienced web data extraction professionals coming from big data, lead generation, and e-commerce backgrounds.\n\nOur combined experience and a culture of knowledge sharing allow us to help businesses utilize our data in the most efficient way. This is one of the main reasons why over 400 data-driven companies have already chosen Coresignal as their public web data provider.\n&quot;,

    &quot;website&quot;: &quot;http://coresignal.com&quot;,

    &quot;industry&quot;: &quot;Information Technology &amp; Services&quot;,

    &quot;company_size&quot;: [

        51,

        200

    ],

    &quot;company_size_on_Professional Social Network&quot;: 34,

    &quot;hq&quot;: {

        &quot;country&quot;: &quot;US&quot;,

        &quot;city&quot;: &quot;New York&quot;,

        &quot;postal_code&quot;: &quot;1001&quot;,

        &quot;line_1&quot;: &quot;630 3rd Ave&quot;,

        &quot;is_hq&quot;: true,

        &quot;state&quot;: &quot;NY&quot;

    },

    &quot;company_type&quot;: null,

    &quot;founded_year&quot;: 2016,

    &quot;specialities&quot;: [

        &quot;Firmographic data&quot;,

        &quot;Employee data&quot;,

        &quot;Job posting data&quot;,

        &quot;Startup data&quot;,

        &quot;Technographic data&quot;,

        &quot;Company employee review data&quot;,

        &quot;Company funding data&quot;,

        &quot;Tech product review data&quot;,

        &quot;Professional network data&quot;,

        &quot;Company API&quot;,

        &quot;Employee API&quot;,

        &quot;Jobs API&quot;,

        &quot;Company scraping API&quot;,

        &quot;Employee scraping API&quot;,

        &quot;Jobs scraping API&quot;

    ],

    &quot;locations&quot;: [

        {

            &quot;country&quot;: &quot;US&quot;,

            &quot;city&quot;: &quot;New York&quot;,

            &quot;postal_code&quot;: &quot;1001&quot;,

            &quot;line_1&quot;: &quot;630 3rd Ave&quot;,

            &quot;is_hq&quot;: true,

            &quot;state&quot;: &quot;NY&quot;

        }

    ],

    &quot;name&quot;: &quot;Coresignal&quot;,

    &quot;tagline&quot;: &quot;Freshest public firmographic and talent data for 360\u00b0 competitive intelligence and data-driven products.&quot;,

    &quot;universal_name_id&quot;: &quot;coresignal&quot;,

    &quot;profile_pic_url&quot;: &quot;https://s3.us-west-000.backblazeb2.com/proxycurl/company/coresignal/profile?X-Amz-Algorithm=AWS4-HMAC-SHA256&amp;X-Amz-Credential=0004d7f56a0400b0000000001%2F20231016%2Fus-west-000%2Fs3%2Faws4_request&amp;X-Amz-Date=20231016T184242Z&amp;X-Amz-Expires=3600&amp;X-Amz-SignedHeaders=host&amp;X-Amz-Signature=287ec7802cbb10b3ff438ee5862f7b33789be65414cc6fb3278737a31baf5c98&quot;,

    &quot;background_cover_image_url&quot;: &quot;https://s3.us-west-000.backblazeb2.com/proxycurl/company/coresignal/cover?X-Amz-Algorithm=AWS4-HMAC-SHA256&amp;X-Amz-Credential=0004d7f56a0400b0000000001%2F20231016%2Fus-west-000%2Fs3%2Faws4_request&amp;X-Amz-Date=20231016T184242Z&amp;X-Amz-Expires=3600&amp;X-Amz-SignedHeaders=host&amp;X-Amz-Signature=46d9685e7445a9661703f9b5f5cf1a8877d6a8412c3c7cb7f39dc7a1f6888551&quot;,

    &quot;search_id&quot;: &quot;43181787&quot;,

    &quot;similar_companies&quot;: [

        {

            &quot;name&quot;: &quot;Oxylabs.io&quot;,

            &quot;link&quot;: &quot;https://www.professionalsocialnetwork.com/company/oxylabs-io/&quot;,

            &quot;industry&quot;: &quot;Information Technology &amp; Services&quot;,

            &quot;location&quot;: &quot;Vilnius, Lithuania&quot;

        },

        {

            &quot;name&quot;: &quot;Smartproxy&quot;,

            &quot;link&quot;: &quot;https://www.professionalsocialnetwork.com/company/smartproxy/&quot;,

            &quot;industry&quot;: &quot;Information Technology &amp; Services&quot;,

            &quot;location&quot;: &quot;New York&quot;

        },

        {

            &quot;name&quot;: &quot;Nord Security&quot;,

            &quot;link&quot;: &quot;https://www.professionalsocialnetwork.com/company/nordsecurity/&quot;,

            &quot;industry&quot;: &quot;Computer &amp; Network Security&quot;,

            &quot;location&quot;: null

        },

        {

            &quot;name&quot;: &quot;Kilo Health&quot;,

            &quot;link&quot;: &quot;https://www.professionalsocialnetwork.com/company/kilo-health/&quot;,

            &quot;industry&quot;: &quot;Health, Wellness &amp; Fitness&quot;,

            &quot;location&quot;: &quot;Vilnius, Vilniaus&quot;

        },

        {

            &quot;name&quot;: &quot;Attention Insight&quot;,

            &quot;link&quot;: &quot;https://www.professionalsocialnetwork.com/company/attention-insight/&quot;,

            &quot;industry&quot;: &quot;Market Research&quot;,

            &quot;location&quot;: &quot;Hamburg, Hamburg&quot;

        },

        {

            &quot;name&quot;: &quot;DueDil (now FullCircl)&quot;,

            &quot;link&quot;: &quot;https://www.professionalsocialnetwork.com/company/duedil/&quot;,

            &quot;industry&quot;: &quot;Information Services&quot;,

            &quot;location&quot;: &quot;London&quot;

        },

        {

            &quot;name&quot;: &quot;Surfshark&quot;,

            &quot;link&quot;: &quot;https://www.professionalsocialnetwork.com/company/surfshark/&quot;,

            &quot;industry&quot;: &quot;Information Technology &amp; Services&quot;,

            &quot;location&quot;: &quot;Vilnius&quot;

        },

        {

            &quot;name&quot;: &quot;People Data Labs&quot;,

            &quot;link&quot;: &quot;https://www.professionalsocialnetwork.com/company/peopledatalabs/&quot;,

            &quot;industry&quot;: &quot;Computer Software&quot;,

            &quot;location&quot;: &quot;San Francisco, CA&quot;

        },

        {

            &quot;name&quot;: &quot;Tesonet&quot;,

            &quot;link&quot;: &quot;https://www.professionalsocialnetwork.com/company/tesonet/&quot;,

            &quot;industry&quot;: &quot;Computer Software&quot;,

            &quot;location&quot;: &quot;Vilnius, Vilniaus&quot;

        },

        {

            &quot;name&quot;: &quot;Zyte&quot;,

            &quot;link&quot;: &quot;https://www.professionalsocialnetwork.com/company/zytedata/&quot;,

            &quot;industry&quot;: &quot;Information Technology &amp; Services&quot;,

            &quot;location&quot;: &quot;Ballincollig, Cork&quot;

        },

        {

            &quot;name&quot;: &quot;VV Solar Solutions LLC&quot;,

            &quot;link&quot;: &quot;https://www.professionalsocialnetwork.com/company/vv-solar-solutions/&quot;,

            &quot;industry&quot;: &quot;Mechanical Or Industrial Engineering&quot;,

            &quot;location&quot;: null

        },

        {

            &quot;name&quot;: &quot;CyberCare&quot;,

            &quot;link&quot;: &quot;https://www.professionalsocialnetwork.com/company/cybercarecompany/&quot;,

            &quot;industry&quot;: &quot;Information Technology &amp; Services&quot;,

            &quot;location&quot;: &quot;Vilnius, Vilniaus&quot;

        }

    ],

    &quot;affiliated_companies&quot;: [],

    &quot;updates&quot;: [

        {

            &quot;article_link&quot;: null,

            &quot;image&quot;: null,

            &quot;posted_on&quot;: {

                &quot;day&quot;: 13,

                &quot;month&quot;: 10,

                &quot;year&quot;: 2023

            },

            &quot;text&quot;: &quot;Just like ships in the open sea, firms need some sort of North Star\u2728 to navigate the competitive business landscape toward success. In business, #benchmarks provide such reference points for finding direction. \ud83e\udded \n\n#BusinessBenchmarking comes in various shapes and can be tailored to suit firms of all sizes. But most importantly, it can help firms improve their current procedures, allocate their assets more effectively, and create #data-based business strategies. \n\nTake a closer look at the different types of #benchmarking and how anyone from big corporations to small businesses benefit from it. \u2b07\ufe0f&quot;,

            &quot;total_likes&quot;: 6

        },

        {

            &quot;article_link&quot;: &quot;https://www.professionalsocialnetwork.com/in/ACoAAAnlb-UBck__0dt_mQm64NYcMOoj5QDN-Ok&quot;,

            &quot;image&quot;: &quot;https://media.licdn.com/dms/image/D5622AQEwgzPapxTTZg/feedshare-shrink_2048_1536/0/1697036143908?e=1700092800&amp;v=beta&amp;t=8iNUw_bvbXVpPY-Ti_Y49YsaBu0qlKMO3wk4yP5rAXc&quot;,

            &quot;posted_on&quot;: {

                &quot;day&quot;: 12,

                &quot;month&quot;: 10,

                &quot;year&quot;: 2023

            },

            &quot;text&quot;: &quot;Hey there, it's Ugnius and Karolis saying hello from the HR Technology Conference &amp; Exposition 2023 in Las Vegas! \ud83d\udc4b\n\nAre you joining us at this year's event? If you're here or planning to be, come say hi!\n\nAnd if you're curious about how #data can supercharge your #HR strategies and would like to have a 1:1 consultation, don't hesitate to let us know here \u27a1\ufe0f https://lnkd.in/d_nmMVix\n\n#HRTechConf #HRtech&quot;,

            &quot;total_likes&quot;: 107

        },

        {

            &quot;article_link&quot;: &quot;https://www.professionalsocialnetwork.com/company/hr-technology-conference/&quot;,

            &quot;image&quot;: &quot;https://media.licdn.com/dms/image/D4D22AQGp-k_9-MS5JA/feedshare-shrink_2048_1536/0/1696858497052?e=1700092800&amp;v=beta&amp;t=OKKL176H0qVmZz_Q7myLhagdYm-WEqew0Dum6cdWdMQ&quot;,

            &quot;posted_on&quot;: {

                &quot;day&quot;: 10,

                &quot;month&quot;: 10,

                &quot;year&quot;: 2023

            },

            &quot;text&quot;: &quot;\ud83d\udce3 Let's meet in Las Vegas TOMORROW! \ud83d\udce3\n\nFrom October 10th to 13th, you can find us at the HR Technology Conference &amp; Exposition in Las Vegas, where you will have the opportunity to:\n\n\ud83d\udc65 Meet the people behind our brand\u00a0\n\ud83d\udcca Conveniently identify your #data needs\n\u2753 Ask any questions and receive immediate answers\n\ud83d\udcbc Discover how public talent data can help enhance #HR solutions\n\nBook a meeting with us \u27a1\ufe0f https://lnkd.in/d_nmMVix\u00a0\n#HRTechConf #HRtech&quot;,

            &quot;total_likes&quot;: 15

        }

    ],

    &quot;follower_count&quot;: 1268,

    &quot;acquisitions&quot;: {

        &quot;acquired&quot;: [],

        &quot;acquired_by&quot;: null

    },

    &quot;exit_data&quot;: [],

    &quot;extra&quot;: {

        &quot;crunchbase_profile_url&quot;: &quot;https://www.crunchbase.com/organization/coresignal&quot;,

        &quot;ipo_status&quot;: &quot;Private&quot;,

        &quot;crunchbase_rank&quot;: 144694,

        &quot;founding_date&quot;: null,

        &quot;operating_status&quot;: &quot;Active&quot;,

        &quot;company_type&quot;: &quot;For Profit&quot;,

        &quot;contact_email&quot;: &quot;sales@coresignal.com&quot;,

        &quot;phone_number&quot;: null,

        &quot;facebook_id&quot;: null,

        &quot;twitter_id&quot;: null,

        &quot;number_of_funding_rounds&quot;: 0,

        &quot;total_funding_amount&quot;: null,

        &quot;stock_symbol&quot;: null,

        &quot;ipo_date&quot;: null,

        &quot;number_of_lead_investors&quot;: 0,

        &quot;number_of_investors&quot;: 0,

        &quot;total_fund_raised&quot;: 0,

        &quot;number_of_investments&quot;: null,

        &quot;number_of_lead_investments&quot;: 0,

        &quot;number_of_exits&quot;: null,

        &quot;number_of_acquisitions&quot;: null

    },

    &quot;funding_data&quot;: [],

    &quot;categories&quot;: [

        &quot;big-data&quot;,

        &quot;data-mining&quot;,

        &quot;database&quot;

    ]

}

</code></pre>
<p>Nice.</p>
<p>As you can see, depending on the amount of information they’ve made available, we can provide you with many data points like:</p>
<ul>
<li>The amount of funding a company has received</li>
<li>The rounds of investments</li>
<li>Similar companies</li>
<li>Exits, acquisitions, and beyond</li>
</ul>
<p>There is definitely enough information that it’d be valuable to integrate into your workflow.</p>
<p>The example given above is about Coresignal, a competitive analysis, but you could use it for prospecting due diligence as well.</p>
<p>It’ll enrich any profile you give it, giving you a better understanding of any company.</p>
<h3 id="searching-for-companies-based-on-certain-criteria-and-enriching-them">Searching for companies based on certain criteria and enriching them</h3>
<p>It’s very simple to automatically search for companies using specific filtering parameters with our <a href="https://nubela.co/proxycurl/docs?python&ref=nubela.co#search-api-company-search-endpoint">Company Search Endpoint</a>.</p>
<p>It’s why many VC firms and the like use Proxycurl for due diligence on deal sourcing.</p>
<p>Let’s say we’re looking for early-stage San Francisco-based companies.</p>
<p>With our Company Search Endpoint, we can use the following script to search for early-stage San Francisco startups and then export them to a .CSV:</p>
<pre><code class="language-python">
import requests

import csv

# API endpoint

endpoint = &quot;https://nubela.co/proxycurl/api/search/company&quot;

# API headers

headers = {

    &quot;Authorization&quot;: &quot;Bearer Your_API_Key_Here&quot;

}

# Parameters for the API request

params = {

    &quot;country&quot;: &quot;us&quot;,

    &quot;city&quot;: &quot;(?i)San Francisco&quot;,

    &quot;funding_amount_max&quot;:&quot;100000&quot;,

    &quot;employee_count_min&quot;:&quot;10&quot;,

    &quot;industry&quot;: &quot;(?i)Financial Services&quot;,

    &quot;enrich_profiles&quot;: &quot;enrich&quot;,

    &quot;page_size&quot;: 10

}

# Make the API request

response = requests.get(endpoint, headers=headers, params=params)

data = response.json()

# Check if 'results' key exists in the data

if 'results' in data:

    # Extract the results

    results = data['results']

    # Print the companies matching the criteria

    print(&quot;Companies matching the criteria:&quot;)

    print(&quot;--------------------------------&quot;)

    # Prepare data for CSV export

    csv_data = [[&quot;Company Name&quot;, &quot;Professional Social Network URL&quot;, &quot;HQ&quot;, &quot;Industry&quot;, &quot;Description&quot;]]

    for result in results:

        profile = result.get('profile', {})

        company_name = profile.get('name', &quot;N/A&quot;)

        Professional Social Network_url = result.get('Professional Social Network_profile_url', &quot;N/A&quot;)

        hq_value = profile.get('hq', {})

        hq = hq_value.get('city', &quot;N/A&quot;) if hq_value else &quot;N/A&quot;

        industry = profile.get('industry', &quot;N/A&quot;)

        description = profile.get('description', &quot;N/A&quot;)

        print(f&quot;Company Name: {company_name}&quot;)

        print(f&quot;Professional Social Network URL: {Professional Social Network_url}&quot;)

        print(f&quot;HQ: {hq}&quot;)

        print(f&quot;Industry: {industry}&quot;)

        print(f&quot;Description: {description}&quot;)

        print(&quot;&quot;)

        # Append to CSV data

        csv_data.append([company_name, Professional Social Network_url, hq, industry, description])

    # Export to CSV

    with open(&quot;sanfran_startups.csv&quot;, &quot;w&quot;, newline=&quot;&quot;, encoding=&quot;utf-8&quot;) as file:

        writer = csv.writer(file)

        writer.writerows(csv_data)

else:

    print(&quot;No companies found matching the criteria.&quot;)
</code></pre>
<p>It’ll find any relative companies that match the search criteria, enrich them, and export them to a .CSV in the same folder as your Python script named “sanfran_startups.csv” – of course, you just need to slightly modify this to fit your needs.</p>
<p>When you use our Search API, you need no identifiers. It comes in hand for a lot of use cases.</p>
<p>By the way, we wrote a whole article talking about <a href="https://nubela.co/blog/the-vc-playbook-proven-methods-for-identifying-and-securing-promising-startups-first/">proven methods you can use as a VC firm for deal sourcing</a>. It might be of value to you.</p>
<!--kg-card-end: markdown--><!--kg-card-begin: markdown--><h2 id="a-quick-recap">A quick recap</h2>
<p>Whew, that was a lot. Here’s what we’ve covered so far:</p>
<p><strong>Employment due diligence</strong></p>
<ul>
<li><a href="https://nubela.co/blog/due-diligence-simplified-automate-the-enrichment-of-people-and-companies/#verifying-work-history-and-skills-with-a-social-media-profile-url">Verifying work history with a social media profile URL</a></li>
<li><a href="https://nubela.co/blog/due-diligence-simplified-automate-the-enrichment-of-people-and-companies/#verify-work-history-with-just-a-first-and-last-name">Verifying work history with just a first and last name</a></li>
</ul>
<p><strong>Due diligence on people</strong></p>
<ul>
<li><a href="https://nubela.co/blog/due-diligence-simplified-automate-the-enrichment-of-people-and-companies/#validating-any-given-email-address-for-free">Validating any given email address</a></li>
<li><a href="https://nubela.co/blog/due-diligence-simplified-automate-the-enrichment-of-people-and-companies/#enriching-leads-with-only-an-email">Enriching leads with only an email</a></li>
<li><a href="https://nubela.co/blog/due-diligence-simplified-automate-the-enrichment-of-people-and-companies/#enriching-leads-with-social-media-profile-urls">Enriching leads with social media profile URLs</a></li>
</ul>
<p><strong>Due diligence on companies</strong></p>
<ul>
<li><a href="https://nubela.co/blog/due-diligence-simplified-automate-the-enrichment-of-people-and-companies/#enriching-a-company">Enriching a company with a Professional Social Network profile URL</a></li>
<li><a href="https://nubela.co/blog/due-diligence-simplified-automate-the-enrichment-of-people-and-companies/#searching-for-companies-based-on-certain-criteria-and-enriching-them">Searching for companies based on specified criteria and enriching them</a></li>
</ul>
<p>The examples above are only a few possibilities out of hundreds of different possible due diligence use cases.</p>
<h2 id="so-what-do-you-think">So, what do you think?</h2>
<p>Can you think of any workflows where our different endpoints could be of value?</p>
<p>Maybe in your HR department? Sales? Account management?</p>
<p>Between our different endpoints, you can flawlessly implement the data we can provide into your existing systems – for whatever purpose you need it for.</p>
<p>More specifically, with the data we provide and our enrichment capabilities, you can automate much of the mundane process of performing due diligence for several tasks.</p>
<p>Providing you and your entire team with clear-cut data to operate their business functions.</p>
<h2 id="the-next-step">The next step:</h2>
<p>If you’re seeing the value here, which I think you are…</p>
<p>The next step is to <a href="https://nubela.co/proxycurl/auth/register?ref=nubela.co">click right here and create your Proxycurl account</a>.</p>
<p>It’s free, and you start with 10 credits, which allows you to test out our free endpoints as well as perform a few paid actions (but not much).</p>
<p>After that, $10 can get you 100 credits, and 100 credits can do quite a few different due diligence actions for you, and then you can just top up from there (or sign up for a subscription; it's up to you).</p>
<p>Our full <a href="https://nubela.co/proxycurl/pricing?ref=nubela.co">Proxycurl API pricing policy is available for view here</a>.</p>
<p>Simply stated: Due diligence is important – you need to know who you’re talking to, but it doesn’t have to be difficult.</p>
<p><a href="https://nubela.co/proxycurl/auth/register?ref=nubela.co">Integrate Proxycurl with your due diligence processes today</a>, and you’ll thank yourself later.</p>
<p><strong>P.S.</strong> Have any questions about implementing Proxycurl with your business? No problem, we’ll be glad to help;  reach out to “<a href="mailto:hello@nubela.co">hello@nubela.co</a>”.</p>
<!--kg-card-end: markdown--> ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ Proxycurl&#x27;s Guarantee to Beat Coresignal&#x27;s Prices ]]></title>
        <description><![CDATA[ It&#39;s not hard to understand why having access to rich B2B data is so important. The hard thing is justifying the costs our competitors charge. It&#39;s a good thing we can fix that for you. ]]></description>
        <link>https://nubela.co/blog/proxycurls-guarantee-to-beat-coresignal-prices/</link>
        <guid isPermaLink="false">6525a5be7e53f70001ae4506</guid>
        <category><![CDATA[ proxycurl ]]></category>
        <dc:creator><![CDATA[ Colton Randolph | Technical Writer ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2023/08/cr.jpg"/>
        <pubDate>Mon, 16 Oct 2023 17:48:43 +0800</pubDate>
        <media:content url="" medium="image"/>
        <content:encoded><![CDATA[ <p>Coresignal advertises itself as a "daily stream of fresh data on companies and professionals."</p>
<p>However, many people switch over to Proxycurl due to stale data. It's one of the most common complaints we hear from customers moving from Coresignal to us.</p>
<p>(<strong>Note:</strong> If you're the type that values short and to the point, send us a quote from Coresignal to "<a href="mailto:hello@nubela.co">hello@nubela.co</a>" and we'll price match it, plus, give you free API credits. But keep reading for a detailed explanation of our Coresignal price matching policy and comparison.)</p>
<p>Coresignal provides B2B data through its different API endpoints, as well as  selling its entire dataset.</p>
<p>One of their existing customers asked:</p>
<blockquote>
<p>We have been collaborating with CoreSignal for a couple of months, and now would like to chat with you whether you still provide datasets. Currently we want more fresh Professional Social Network US profile dataset + Professional Social Network all companies dataset.</p>
</blockquote>
<p>Their advertised dataset is larger than ours, but based on our experience dealing with their previous customers converting to Proxycurl, we figured that there is quite a difference in profile quality between their dataset and our dataset that I think you'll come to appreciate.</p>
<p>Speaking of data quality differences, let me introduce you to a better alternative.</p>
<h2 id="proxycurl-your-new-b2b-data-provider">Proxycurl: your new B2B data provider</h2>
<p><a href="https://proxycurl.com/?ref=nubela.co">Proxycurl</a> is an API that provides rich, accurate, and fresh data on people and companies. Like Coresignal, we also sell our dataset (<a href="https://nubela.co/proxycurl/linkdb?ref=nubela.co">LinkDB</a>) that powers our API.</p>
<p>Along with our data quality being richer -- we also have fresher and even often live scraped data. Coresignal couldn't say the same. On data richness -- don't take my word on it. We have <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#people-api-person-profile-picture-endpoint">profile pictures</a> and <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#company-api-company-profile-picture-endpoint">company logos</a>, Coresignal doesn't.</p>
<p>Outside of data richness and freshness, we differ from Coresignal because Coresignal focuses hardcore on the Enterprise business model.</p>
<p>You know, the whole hiding their prices and focusing on a hardcore traditional sales approach.</p>
<p>While we definitely still service enterprise customers, we don't operate like Coresignal at all...</p>
<h2 id="all-of-our-pricing-is-transparent">All of our pricing is transparent</h2>
<ul>
<li><a href="https://nubela.co/proxycurl/pricing?ref=nubela.co">Here's our API pricing</a></li>
<li><a href="https://nubela.co/proxycurl/linkdb/pricing?ref=nubela.co">Here's our dataset (LinkDB) pricing</a></li>
</ul>
<p>That means you never <em>have</em> to jump through any hoops or get on any sales calls to use us.</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><a href="https://nubela.co/blog/proxycurl-api-vs-coresignal/"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2023/10/TLC_Proxycurl_vs_CoresignalArtboard_2-1.png" class="kg-image" alt="Proxycurl vs Coresignal" loading="lazy" width="2048" height="1040"></a><figcaption><span style="white-space: pre-wrap;">Proxycurl vs. Coresignal – </span><a href="https://nubela.co/blog/proxycurl-api-vs-coresignal/"><span style="white-space: pre-wrap;">learn more here</span></a></figcaption></figure><p>All of that said, I also don't want to give you the impression that Proxycurl is cheap...</p>
<p>Because we aren't cheap.</p>
<h2 id="were-fairly-priced">We're fairly priced</h2>
<p>There's a difference between cheap and fairly priced.</p>
<p>We know that we can provide better quality data than Coresignal at an extremely competitive rate.</p>
<p>We're confident enough in that fact to not only guarantee to match any of Coresignal's pricing (if they offer at or under our pricing), but we'll also throw in free API credits for causing you the pain of making you waste your valuable time on Coresignal before you discovered us!</p>
<p>Interested?</p>
<h2 id="heres-how-our-price-match-guarantee-works">Here's how our price match guarantee works:</h2>
<p>To receive a Coresignal price match, email us at "<a href="mailto:hello@nubela.co">hello@nubela.co</a>" with a cheaper quote you received from Coresignal compared to any of our equivalent services (must provide proof); after verifying, we'll price match the offer and issue you free API credits as a bonus on top.</p>
 ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ Why Doesn&#x27;t Proxycurl API Support CORS? ]]></title>
        <description><![CDATA[ We often receive inquiries about enabling CORS headers to allow any origin to access the Proxycurl API. However, our policy is to deliberately block requests to the Proxycurl API that are made from a browser client.

The reason for this is that it would require exposing the Proxycurl API key ]]></description>
        <link>https://nubela.co/blog/why-doesnt-proxycurl-api-support-cors/</link>
        <guid isPermaLink="false">6527f77c49b460000124332a</guid>
        <category><![CDATA[ faq ]]></category>
        <dc:creator><![CDATA[ Steven Goh | CEO ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2019/05/square.jpg"/>
        <pubDate>Thu, 12 Oct 2023 21:41:41 +0800</pubDate>
        <media:content url="" medium="image"/>
        <content:encoded><![CDATA[ <p>We often receive inquiries about enabling CORS headers to allow any origin to access the Proxycurl API. However, our policy is to deliberately block requests to the Proxycurl API that are made from a browser client.</p><p>The reason for this is that it would require exposing the Proxycurl API key on client-side, making it visible to all users. This would pose a significant security risk.</p><p>Instead, we recommend setting up a middleware. All client-side requests can then be routed through this middleware. This approach ensures that no API keys are exposed on the client-side, effectively preventing any potential leaks.</p> ]]></content:encoded>
    </item>
    <item>
        <title><![CDATA[ How to Programmatically Generate Leads &amp; Write Cold Emails ]]></title>
        <description><![CDATA[ Tired of hearing everyone else talk about how much money they&#39;re making from cold emails, but you&#39;re not seeing the same success? Let&#39;s fix that for you. ]]></description>
        <link>https://nubela.co/blog/how-to-programmatically-generate-leads-and-write-cold-emails/</link>
        <guid isPermaLink="false">651f15867e53f70001ae4338</guid>
        <category><![CDATA[ proxycurl ]]></category>
        <dc:creator><![CDATA[ Colton Randolph | Technical Writer ]]></dc:creator>
        <nubela:avatar url="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2023/08/cr.jpg"/>
        <pubDate>Wed, 11 Oct 2023 21:20:19 +0800</pubDate>
        <media:content url="" medium="image"/>
        <content:encoded><![CDATA[ <p>How many cold emails do you receive every day? A dozen? More than that?</p>
<p>Now, how many do you respond to?</p>
<p>Further, how many cold emails have resulted in you exchanging money with a person or business?</p>
<p>I’m willing to bet you receive quite a few cold emails every day, and you’ve ignored nearly all of them.</p>
<p>Yet, nonetheless, you hear all the time cold email can be one of the best channels for sales across several different industries. Practically every B2B business for that matter.</p>
<p>It’s true, too – amidst all of the noise, <a href="https://nubela.co/blog/i-cold-emailed-our-way-to-1m-arr-in-18-months-heres-the-story/">cold emailing remains a valuable tool</a> for businesses aiming to make genuine connections, foster partnerships, and drive sales.</p>
<h2 id="the-key-to-success-at-cold-emailing-though">The key to success at cold emailing, though?</h2>
<p>It’s strategic prospecting and effective outreach – which is easier said than done, of course.</p>
<p>However, with tools like <a href="https://nubela.co/proxycurl/?ref=nubela.co">Proxycurl</a> (an API that provides fresh and accurate data on people and companies), accessing detailed insights on potential leads becomes much simpler, allowing for more personalized and impactful cold emails.</p>
<p>That being said, in this guide, we'll be walking you through a step-by-step process to not only automate your prospecting efforts – but also create compelling cold emails that actually convert.</p>
<p>Yes, contrary to what you may believe, cold emailing can even work for you too...</p>
<p>We’ll be showing you the entire process of crafting a successful <a href="https://glockapps.com/blog/5-cold-email-trends-to-nail-your-outreach-campaigns-in-2024/?ref=nubela.co">cold email outreach campaign</a> from start to finish.</p>
<p>And it doesn’t matter if you’re:</p>
<ul>
<li><a href="https://nubela.co/proxycurl/solutions/hr-tech?ref=nubela.co">In HR, looking to recruit talent</a></li>
<li>A VC firm looking to source deals</li>
<li>A startup looking to source investment money</li>
<li><a href="https://nubela.co/proxycurl/solutions/accelerate-growth?ref=nubela.co">A SaaS company looking to land more clients</a></li>
<li>An advertising agency looking to land more deals</li>
<li>Or beyond…</li>
</ul>
<p>If you’re looking to contact a specific target audience to complete a desired action (booking a call, selling a product, etc.) cold emailing will work for you.</p>
<p>This guide will equip you with all of the tools and knowledge to make cold emailing a powerful asset in your marketing arsenal.</p>
<p>That said, let’s dive in.</p>
<h2 id="the-importance-of-targeted-prospecting">The importance of targeted prospecting</h2>
<p>Before diving into the mechanics of cold emailing, it's crucial to understand the significance of targeted prospecting.</p>
<p>Sending emails en masse without proper targeting is a recipe for low open rates and even lower conversion rates.</p>
<p>While the temptation might exist to cast a wide net with generic emails, this approach often leads to wasted efforts and missed opportunities.</p>
<p>Templated emails, devoid of any personal touch, often come across as spam and are easily dismissed by prospects – in other words, they don’t work.</p>
<p>Moreover, broad targeting, where emails are sent to a vast audience without consideration of their specific needs or interests, further dilutes the impact of the cold email.</p>
<p>When prospects feel that an email isn't tailored to them or doesn't address their unique challenges and aspirations, they’re more likely to ignore it.</p>
<p>In essence, the success of cold emailing hinges on the balance of precise targeting and personalization.</p>
<p>By ensuring that each email speaks directly to the recipient's needs, you can elevate your cold emailing efforts from mere shots in the dark to strategic, impactful communications.</p>
<h2 id="automating-prospecting-with-proxycurl">Automating prospecting with Proxycurl</h2>
<h3 id="searching-based-on-qualifying-characteristics">Searching based on qualifying characteristics</h3>
<p>Proxycurl's API is a game-changer for businesses looking to automate their prospecting efforts.</p>
<p>Using the <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#search-api-person-search-endpoint">Person Search Endpoint</a> and <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#people-api-person-profile-endpoint">Person Profile Endpoint</a>, we can automatically search for prospects that meet certain criteria (falling within your ICP), and then enrich the results, and finally export the results into a .CSV.</p>
<p>For example, let’s say we run a real estate showing/booking SaaS, and we want to start conducting a cold email campaign to win over more clients.</p>
<p>The first step is building a list of relevant, and accurate leads – clearly, we don’t want to do this by hand (that takes forever, and there are more profitable activities you and your sales team can spend your time on).</p>
<p>That said, here’s how you can automate your entire lead generation process with a bit of Python and Proxycurl:</p>
<pre><code class="language-python">
import requests

import csv

# Define the API key and headers

api_key = 'Your_API_Key_Here'

headers = {'Authorization': 'Bearer ' + api_key}

# Define the search endpoint and parameters

search_endpoint = 'https://nubela.co/proxycurl/api/search/person/'

search_params = {

    'country': 'US',

    'current_company_industry': '(?i)real estate',

    'current_role_title': '(?i)real estate agent',

    'page_size': '100'  # To get 100 profiles

}

# Define the profile endpoint

profile_endpoint = 'https://nubela.co/proxycurl/api/v2/Professional Social Network'

# Fetch the Professional Social Network profiles using the search endpoint

response = requests.get(search_endpoint, params=search_params, headers=headers)

profiles = response.json().get('results', [])

# Enrich each profile using the profile endpoint

enriched_profiles = []

for profile in profiles:

    Professional Social Network_url = profile.get('Professional Social Network_profile_url')

    if Professional Social Network_url:

        response = requests.get(profile_endpoint, params={'Professional Social Network_profile_url': Professional Social Network_url, 'personal_email': 'include'}, headers=headers)

        if response.status_code == 200:

            enriched_data = response.json()

            enriched_profiles.append(enriched_data)

        else:

            print(f"Error enriching profile {Professional Social Network_url}: {response.text}")

# Export the enriched profiles to a CSV

with open('enriched_real_estate_agents.csv', 'w', newline='', encoding='utf-8') as csvfile:

    writer = csv.writer(csvfile)

    # Define the headers based on the fields you want to export

    headers = ['Full Name', 'Professional Social Network URL', 'Occupation', 'Headline', 'Summary', 'Country', 'City', 'State', 'Experiences', 'Education', 'Languages', 'Inferred Salary', 'Gender', 'Industry', 'Interests', 'Personal Emails']

    writer.writerow(headers)

    for profile in enriched_profiles:

        writer.writerow([

            profile.get('full_name'),

            profile.get('Professional Social Network_profile_url'),

            profile.get('occupation'),

            profile.get('headline'),

            profile.get('summary'),

            profile.get('country_full_name'),

            profile.get('city'),

            profile.get('state'),

            ", ".join([(exp.get('title') or '') + " at " + (exp.get('company') or '') for exp in profile.get('experiences', [])]),

            ", ".join([(edu.get('school') or '') + " - " + (edu.get('degree') or '') for edu in profile.get('education', [])]),

            ", ".join(profile.get('languages', [])),

            (profile.get('inferred_salary') or {}).get('range'),

            profile.get('gender'),

            profile.get('industry'),

            ", ".join(profile.get('interests', [])),

            ", ".join(profile.get('personal_emails', []))

        ])

print(f"Data exported to enriched_real_estate_agents.csv")

</code></pre>
<p>The above searches for a list of 100 real estate agents, then automatically enriches those results, the list of 100 real estate agents, and exports it into a file named “enriched_real_estate_agents.CSV” – by the way, I’ve intentionally limited it to 100 different agents because this will return thousands of results:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2023/10/EXCEL_WYAbU4MWnn.png" class="kg-image" alt="enriched list of prospects generated by our API" loading="lazy" width="1920" height="761"><figcaption><span style="white-space: pre-wrap;">The enriched list of real estate prospects generated by our API</span></figcaption></figure><p>You can get more specific with it, too, if you’d like. For example, we could also search by education, skills, current company, and beyond.</p>
<p>This will allow you to build different prospecting lists based on different target audiences, way beyond just real estate agents, all you need to do is change <code>current_role_title</code>.</p>
<p>Ultimately if there is a job title out there, you can target it, and you can further refine and filter your prospecting results with our various parameters available.</p>
<p>Now, let’s change the scenario and say you already have a list of social media profiles, and you’d like to get a list of email addresses from them.</p>
<h3 id="extracting-email-addresses-from-any-given-social-media-profile-url">Extracting email addresses from any given social media profile URL</h3>
<p>Using our <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#contact-api-personal-email-lookup-endpoint">Personal Email Lookup Endpoint</a>, we can take a given social media profile URL and extract the email address from it.</p>
<p>It’ll work with any Twitter (X), Facebook, or Professional Social Network profile URL you give it, returning you the email address.</p>
<p>This endpoint also has an <code>email_validation</code> parameter that comes in handy here so that we can ensure we’re only sending to verified emails and aren’t endangering our emailing account.</p>
<p>Again using a bit of Python, here’s an example of extracting the email address from a social media profile:</p>
<pre><code class="language-python">
import requests

import csv

import json

api_key = 'Your_API_Key_Here'  # Replace with your actual API key

headers = {'Authorization': 'Bearer ' + api_key}

api_endpoint = 'https://nubela.co/proxycurl/api/contact-api/personal-email'

params = {

    'email_validation': 'include',

    'page_size': '0',

}

# Create or overwrite the output CSV file

with open('output_responses.csv', 'w', newline='') as output_file:

    fieldnames = ['Professional Social Network_url', 'valid_emails', 'invalid_emails']  # Define your desired output columns

    writer = csv.DictWriter(output_file, fieldnames=fieldnames)

    writer.writeheader()

    # Open the input CSV file and read the Professional Social Network URLs

    with open('Professional Social Network_urls.csv', 'r') as input_file:

        reader = csv.DictReader(input_file)

        for row in reader:

            Professional Social Network_url = row['Professional Social Network_profile']  # Adjust this based on your CSV's column name

            params['Professional Social Network_profile_url'] = Professional Social Network_url

            response = requests.get(api_endpoint, params=params, headers=headers)

            # Parse the JSON response

            data = json.loads(response.text)

            valid_emails = ', '.join(data.get('emails', []))

            invalid_emails = ', '.join(data.get('invalid_emails', []))

            # Write the Professional Social Network URL and its corresponding response to the output CSV

            writer.writerow({

                'Professional Social Network_url': Professional Social Network_url,

                'valid_emails': valid_emails,

                'invalid_emails': invalid_emails

            })

print("Export completed!")

</code></pre>
<p>What that does is take a file named “Professional Social Network_urls.csv” (in the same folder as your Python script), with only one column, Professional Social Network_url at the top, and then a list of Professional Social Network profiles below it.</p>
<p>Then, it goes through the list extracting all of the valid emails into a file named “output_responses.csv”, filtering out all invalid email addresses:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2023/10/JBF49mVj1X.png" class="kg-image" alt="Proxycurl pycharm python API response" loading="lazy" width="1401" height="939"><figcaption><span style="white-space: pre-wrap;">Proxycurl response using PyCharm, Python, and our Personal Email Lookup Endpoint</span></figcaption></figure><p>Not bad, huh?</p>
<p>That means if you can find their Twitter (X), Facebook, or Professional Social Network – you can likely send them cold emails.</p>
<p>I should also mention if you’d like to look up a work email address, you can do that with our <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#contact-api-work-email-lookup-endpoint">Work Email Lookup Endpoint</a>, but it works slightly differently and only works with Professional Social Network profile URLs.</p>
<p>Now, let me throw in a freebie…</p>
<h3 id="how-to-validate-any-email-address-for-free">How to validate any email address for free</h3>
<p>Using our <a href="https://nubela.co/proxycurl/docs?ref=nubela.co#contact-api-disposable-email-address-check-endpoint">Disposable Email Address Check Endpoint</a>, you can check if any email address belongs to a free or disposable email service.</p>
<p>In other words, you can validate if there are any worthless email addresses on any of your prospecting lists before you send – and <strong>this endpoint is entirely free</strong>.</p>
<p>Here’s an example of how you could use some Python with it to automatically validate a list of email addresses:</p>
<pre><code class="language-python">
import requests

import csv

api_key = 'YOUR_API_KEY'  # Replace with your actual API key

headers = {'Authorization': 'Bearer ' + api_key}

api_endpoint = 'https://nubela.co/proxycurl/api/disposable-email'

valid_emails = []

free_emails = []

disposable_emails = []

# Open the input CSV file and read the emails

with open('emails_list.csv', 'r') as input_file:

    reader = csv.DictReader(input_file)

    for row in reader:

        email = row['email']

        params = {'email': email}

        response = requests.get(api_endpoint, params=params, headers=headers)

        

        data = response.json()

        

        # Handle rate limit error

        if 'error' in data:

            print(f"Error for {email}: {data['error']}")

            continue

        

        # Categorize the email

        if data.get('is_disposable_email') == True:

            disposable_emails.append(email)

        elif data.get('is_free_email') == True:

            free_emails.append(email)

        else:

            valid_emails.append(email)

# Write the emails to a new CSV file in separate columns

with open('categorized_emails.csv', 'w', newline='') as output_file:

    writer = csv.writer(output_file)

    writer.writerow(['Valid Emails', 'Free Emails', 'Disposable Emails'])  # Write the headers

    

    # Write emails row by row

    max_rows = max(len(valid_emails), len(free_emails), len(disposable_emails))

    for i in range(max_rows):

        valid_email = valid_emails[i] if i &amp;lt; len(valid_emails) else ''

        free_email = free_emails[i] if i &amp;lt; len(free_emails) else ''

        disposable_email = disposable_emails[i] if i &amp;lt; len(disposable_emails) else ''

        

        writer.writerow([valid_email, free_email, disposable_email])

print("Export of categorized emails completed!")

</code></pre>
<p>That’ll take a list of emails within “emails_list.csv” (in the same folder as your Python script) and automatically validate them for you, placing them in one of three columns:</p>
<ul>
<li>Valid emails</li>
<li>Free emails</li>
<li>Disposable emails</li>
</ul>
<p>Again, entirely for free – there’s no reason to not be doing this before you ever send out any cold emails.</p>
<p>Okay, now that we’ve covered:</p>
<ol>
<li>Searching and building prospecting lists based on specific parameters</li>
<li>Building prospecting lists with social media profiles</li>
<li>Validating all of your email addresses</li>
</ol>
<p>It’s time to move on to the fun part.</p>
<h2 id="crafting-the-perfect-cold-email">Crafting the perfect cold email</h2>
<p>With a list of prospects in hand, it's time to <a href="https://glockapps.com/blog/how-to-write-a-perfect-cold-email-tips-and-tricks/?ref=nubela.co">write your cold email</a>.</p>
<p>First things first: Your email should be concise, relevant, and provide clear value to the recipient.</p>
<p>Furthermore, since we’ve enriched our contacts, we can use the data from Proxycurl to address the recipient by name and reference specific details about their company or role (also known as personalization).</p>
<p>Let’s start with an example of a bad cold email:</p>
<pre><code>
Subject: Hey! Check This Out!!!

Hey there *name*,

I'm just reaching out because I wanted to tell you about this thing called Proxycurl. It’s some kind of API or something? Anyway, I think it's supposed to help with data insights or whatever that means. I'm not really sure how it works, but I think you should totally check it out. Everyone's using it, I guess.

So, yeah, if you're into that kind of thing, maybe give it a look? Or don't. Whatever.

Catch you later,

Colton

P.S. I forgot to mention, but it's also good for sales and marketing teams, I think? Not sure. Anyway, bye!

</code></pre>
<p>I’ve made it comically bad intentionally, but you get the point.</p>
<p>This is literally how most cold emails sound:</p>
<ul>
<li>Un-personal, bulk, and literally emotionally cold</li>
<li>Vague</li>
<li>Lack of value proposition</li>
<li>No clear problem/solution fit</li>
<li>No reason for them to take you seriously or respond to your email</li>
</ul>
<p>Which is exactly why they don’t work.</p>
<p>Now, take a look at this cold email:</p>
<pre><code>
Hey *name*,

I took a look over your SaaS, and according to your blog post, it seems you’ve attempted cold emailing in the past and failed.

I work for Proxycurl, and we’re an API that provides data on people and companies – many people use us for cold email prospecting.

Do you have 15 minutes of your time to spare for me to show you how you could turn cold emailing from a flop into one of your highest-performing growth channels?

Look forward to hearing back from you,

Colton

P.S. I’m actually an alumnus from *college name* too – small world haha.

</code></pre>
<p>See the difference?</p>
<p>The clarity and value proposition is entirely different, and it presents a clear solution to an obvious problem.</p>
<p>It also doesn’t try to sell Proxycurl on the email. It only sells a call, and focuses first on conveying that we can provide value to them – and as concisely as possible.</p>
<p>Of course, the name of the game is all about automation, so instead of doing things the boring, time-consuming, and energy-draining way – aka, by hand – we can automate this process nearly entirely by using LLMs like ChatGPT.</p>
<h2 id="automate-writing-your-cold-emails-with-chatgpt">Automate writing your cold emails with ChatGPT</h2>
<p>In order to automate this with ChatGPT, we need to craft a prompt that works for your individual business.</p>
<p>Rather than using Proxycurl, I’ll use our real estate showing/booking SaaS example from earlier.</p>
<p>We could use something like this:</p>
<pre><code>
My name is Colton from RealEstateBooker. Our software as a service tool makes it much easier for real estate agents to book showings automatically. I want you to write a cold email that's a paragraph or less to the following prospect:

Name: Cassidy Jones

Location: Houston, Texas

Company: Berkshire Hathaway

Education: The University of Texas

Industry: Real estate

Job role: Real estate agent

The goal is to get a call booked. Be as concise as possible and prevent a clear problem/solution fit. The wording should be friendly and conversational. Don't use buzzwords, and use all of the data points provided to personalize the email and help it stand out.

</code></pre>
<p>Using the above prompt, here’s what ChatGPT came up with:</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2023/10/chrome_Yr4pQ8q3cl-1.png" class="kg-image" alt="ChatGPT writes our cold email for us" loading="lazy" width="973" height="781"><figcaption><span style="white-space: pre-wrap;">ChatGPT writes our cold email for us</span></figcaption></figure><p>Nice. Plus, if you wanted to take this a step further, you could automate more of this using ChatGPT’s API.</p><p>This is all possible from our enrichment step earlier, because now you’ll have data points like:</p><ul><li>Full name</li><li>Education</li><li>Summary of the individual</li><li>Current job role</li><li>Current location</li><li>And beyond</li></ul><p>So you can automatically take these enriched variables and feed them to ChatGPT to improve the level of personalization in your email and, thus, the response.</p><p>You could personalize thousands of emails at once that way.</p><p>However, <a href="https://nubela.co/blog/how-salesforge-integrates-rich-prospecting-data-with-chatgpt-to-automatically-personalize-emails/">we just published an in-depth article about that here</a>, so I won’t go into that any further in this article.</p><p>The main point here, though, is that automation doesn’t have to mean impersonal.</p><p>You can use Proxycurl to gather detailed insights about your prospects and use that data to craft personalized outreach emails – but make sure to keep them concise and relevant.</p><p>Your cold emails should either directly provide value, or present an obvious solution to a major problem that the prospect is experiencing.</p><p>Now for the next step in the process...</p><h2 id="what%E2%80%99s-the-best-cold-emailing-tool">What’s the best cold emailing tool?</h2><p>Over here at Proxycurl, we use Sendy.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://accountgram-production.sfo2.cdn.digitaloceanspaces.com/nubelaco_ghost/2023/10/sendy.png" class="kg-image" alt="Sendy's autoresponder feature" loading="lazy" width="1430" height="601"><figcaption><span style="white-space: pre-wrap;">What Sendy's autoresponder feature looks like</span></figcaption></figure><p><a href="https://nubela.co/blog/how-cold-emailing-grew-my-b2b-startup-to-100k-mrr/">We also already have an entire article about our cold emailing setup here</a> that’s worth a read.</p><p>But, other than that, I wouldn’t put too much focus on the cold emailing tool. They all more or less do the same thing.</p><p>In our case, Sendy allowed us to self-host our emailing tool and use an SMTP relay to send out our emails (AWS SES).</p><p>That was the best of both worlds because it enabled us to keep our costs down and our deliverability high, which is the most important part of the equation.</p><p>Speaking of deliverability, here are a couple of best practices to get and keep you in the inbox folder instead of the spam folder:</p><ul><li>Make sure you’re using a different domain to email from, you don’t want your main domain being flagged by the likes of Gmail, etc</li><li>Warm up your cold email domain for a week or two prior, there are plenty of solutions out there to do that for you – you shouldn’t immediately go straight to blasting out thousands of emails on a new domain</li><li>Use a relay with well-guarded IPs like AWS SES, don’t try to send out your own cold emails with your own IPs, it’s not worth the hassle</li><li>Keep an eye out for complaint rates, if they’re excessively high you can be kicked off any SMTP relay, AWS SES included, if you have an excessively high complaint rate it’s because your cold emails look spammy and aren’t personalized enough</li></ul><p>Cold emailing only works if your emails are getting read, and if they’re ending up in the spam folder it’s very unlikely they’re getting read.</p><p>The world's best copy is useless if the email isn’t opened in the first place, so make sure you’re keeping an eye on deliverability, but the tool alone doesn’t inherently matter.</p><p>Practically all of them will allow you to build automated sequences nowadays, which is all we need here.</p><h2 id="navigating-common-cold-emailing-challenges-and-objections">Navigating common cold emailing challenges and objections</h2><p>Things aren’t over once you start sending cold emails. In fact, things are really just starting.</p><p>Once you've started cold emailing, keep the following three things in mind:</p><p><strong>1)</strong> Keep following up</p><p>You’ll find out many people who do convert don’t respond immediately.</p><p>Your prospects are busy people, and even though they might act right away, there’s a very big chance they simply won’t get around to fully digesting your message and value proposition the first time around.</p><p>That’s where following up comes in.</p><p>Don’t be afraid to throw a couple of emails in a sequence, in fact, if you aren’t, you’re doing it wrong.</p><p>Just make sure you provide the ability to unsubscribe from your sequence.</p><p><strong>2)</strong> Usually, you aren’t right the first time</p><p>Be comfortable with testing new things, and be prepared to fail.</p><p>As I mentioned above, cold emailing is all about reiteration – you should expect to be wrong, but it takes testing, learning, and reiterating to perfect any skill, cold emailing included.</p><p><strong>3) </strong>You might make a couple of people angry</p><p>Without a doubt, you will receive a couple of negative responses to your emails.</p><p> That’s understandable and is to be expected.</p><p>Of course, the more value-driven and personalized the cold email is, the less likely you are to receive a negative response.</p><p>But, nonetheless, it’ll happen… and you’ll need to expect it.</p><p>The criticism is usually fair too (not always), and if you actually read and understand the criticism, you can usually take it and use it to make your cold email copy better.</p><h2 id="the-next-steps">The next steps:</h2><p>Whew, that was a lot. </p><p>First, to put all of this into practice, <a href="https://nubela.co/proxycurl/auth/register?ref=nubela.co">you'll need to click here and create your Proxycurl account</a>.</p><p>Proxycurl is entirely self-service  – you can get started using us to build your prospecting lists (and enrich your data) immediately.</p><p>Plus, you can get started with as little as <a href="https://nubela.co/proxycurl/pricing?ref=nubela.co">$10 for 100 credits, or free</a> if you're just looking to validate your emails.</p><p>From that point forward, you have a couple of different options...</p><p>Technically, you could use the scripts provided here, <a href="https://nubela.co/blog/how-salesforge-integrates-rich-prospecting-data-with-chatgpt-to-automatically-personalize-emails/">along with the scripts provided here</a> to build a custom in-house solution and automate nearly everything involved in the cold emailing process including:</p><ul><li>Searching for leads within your ICP</li><li>Building cold emailing lists</li><li>Creating cold emails at scale with the enriched data provided and ChatGPT</li><li>Sending cold emails </li></ul><p>Or, if you're a small business, you could keep things simple by using the provided Python prospecting script above, and then copy and paste into ChatGPT using the example prompt provided above, and finally load them up into a simple solution like Sendy.</p><p>Either way, with Proxycurl there are a ton of different options – and it'll make your cold emailing process infinitely easier.</p><p><a href="https://nubela.co/proxycurl/auth/register?ref=nubela.co">You can click here to get started and create your Proxycurl account today.</a></p><p>Thanks for reading, and keep on cold emailing!</p><p><strong>P.S.</strong> If you have any questions, don't be afraid to reach out to us at "<a href="mailto:hello@nubela.co">hello@nubela.co</a>" – we promise we don't bite.</p> ]]></content:encoded>
    </item>

</channel>
</rss>