<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Proxycurl</title>
    <description>The latest articles on DEV Community by Proxycurl (@proxycurl).</description>
    <link>https://dev.to/proxycurl</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2156361%2F181e122e-f249-4184-b3f9-c0fd0590479f.jpeg</url>
      <title>DEV Community: Proxycurl</title>
      <link>https://dev.to/proxycurl</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/proxycurl"/>
    <language>en</language>
    <item>
      <title>30 (+1) Top LinkedIn Scrapers for 2025 with Pros &amp; Cons</title>
      <dc:creator>Proxycurl</dc:creator>
      <pubDate>Wed, 11 Dec 2024 09:52:47 +0000</pubDate>
      <link>https://dev.to/proxycurl/30-1-top-linkedin-scrapers-for-2025-with-pros-cons-3c1h</link>
      <guid>https://dev.to/proxycurl/30-1-top-linkedin-scrapers-for-2025-with-pros-cons-3c1h</guid>
      <description>&lt;p&gt;If you think LinkedIn scraping is tough, it's because you are not equipped with the right tool. LinkedIn 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.&lt;/p&gt;

&lt;p&gt;Fortunately, there are plenty of B2B data providers and LinkedIn scrapers available. But with so many options, it's easy to feel overwhelmed. I mean, where do you even start looking?&lt;/p&gt;

&lt;p&gt;I understand the conundrum. What you need is a thoughtfully curated list of LinkedIn scrapers, categorized to tailor your specific needs, so you can easily pick the right tool for you.&lt;/p&gt;

&lt;p&gt;Welcome to the only guide on LinkedIn Scrapers you will ever need. In this article, I will go through:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;30+1 of the best LikedIn Scraping Tools in 2025; categorized based on their nature. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Pros and Cons of each scraper.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;How do I find the best LinkedIn Scraper?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Is LinkedIn Scraping Legal?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;My Recommendation (with explanation)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Final thoughts&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I'll start with an overview of all the LinkedIn scraper categories. This will give you a clear roadmap of what to expect and help you find out which category best suits your needs.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl9xid7jdby8cd06ypvqh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl9xid7jdby8cd06ypvqh.png" alt="LinkedIn Scrapers Categories with features and suitability" width="800" height="1316"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now, let's look at each of our 31 entrants in the list. Each of these LinkedIn scrapers are categorized and are weighed based on their price and free version availability.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fafvp81hulakibcvxguhd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fafvp81hulakibcvxguhd.png" alt="List of all 31 LinkedIn scrapers categorized based on six major groups " width="800" height="1846"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Full Scale/Enterprise LinkedIn Scrapers
&lt;/h2&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. &lt;a href="http://nubela.co/proxycurl?utm_campaign=content_amplification&amp;amp;utm_source=dev.to&amp;amp;utm_medium=social&amp;amp;utm_content=post_link"&gt;Proxycurl&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh7-rt.googleusercontent.com%2Fdocsz%2FAD_4nXfdd9ogdtkTgrnt6eOluswOWfM5BEhG5EQFcFIZdNdWlH-umE4l2kkD_WRYRj_JbQvT4Zmql2zVGjq8rGY49TCZNAG3IyhGr1VYPrKgr8eKvxnKNX-u9wtoQlNhFDFmJ_GTpO23%3Fkey%3DzOWCgs-RYSeIo6J5EF_RSGON" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh7-rt.googleusercontent.com%2Fdocsz%2FAD_4nXfdd9ogdtkTgrnt6eOluswOWfM5BEhG5EQFcFIZdNdWlH-umE4l2kkD_WRYRj_JbQvT4Zmql2zVGjq8rGY49TCZNAG3IyhGr1VYPrKgr8eKvxnKNX-u9wtoQlNhFDFmJ_GTpO23%3Fkey%3DzOWCgs-RYSeIo6J5EF_RSGON" alt="Proxycurl Landing page" width="800" height="451"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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 LinkedIn accounts, or anything else. Proxycurl gives you access to rich B2B data from more data sources than just LinkedIn.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh7-rt.googleusercontent.com%2Fdocsz%2FAD_4nXdcuheRDbGNif66tyfLKgNg4OFWkL41Mb3mzrf7GHAROwS3nTD2g1Xjsb3SiZ4y3Czq9GR6Ll6-r0LnpTayCSaE7O1Y1qXe9M8zNaqwWeXVb_zLfs6HVJBwvKRjQ7KPv8Mg4QxSbQ%3Fkey%3DzOWCgs-RYSeIo6J5EF_RSGON" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh7-rt.googleusercontent.com%2Fdocsz%2FAD_4nXdcuheRDbGNif66tyfLKgNg4OFWkL41Mb3mzrf7GHAROwS3nTD2g1Xjsb3SiZ4y3Czq9GR6Ll6-r0LnpTayCSaE7O1Y1qXe9M8zNaqwWeXVb_zLfs6HVJBwvKRjQ7KPv8Mg4QxSbQ%3Fkey%3DzOWCgs-RYSeIo6J5EF_RSGON" alt="Proxycurl Dashboard" width="800" height="398"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It is a developer-friendly platform, but the vast number of API endpoints are easy to use and incorporate. Plus, you have &lt;a href="https://nubela.co/proxycurl/docs?ref=nubela.co?utm_campaign=content_amplification&amp;amp;utm_source=dev.to&amp;amp;utm_medium=social&amp;amp;utm_content=post_link"&gt;detailed documentation on each API&lt;/a&gt; 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?&lt;/p&gt;

&lt;p&gt;With a &lt;a href="https://nubela.co/blog/how-fresh-are-profiles-returned-by-proxycurl-api/?utm_campaign=content_amplification&amp;amp;utm_source=dev.to&amp;amp;utm_medium=social&amp;amp;utm_content=post_link%20"&gt;data freshness guarantee&lt;/a&gt;, 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 &lt;a href="https://nubela.co/proxycurl/docs?ref=nubela.co#people-api-person-profile-endpoint?utm_campaign=content_amplification&amp;amp;utm_source=dev.to&amp;amp;utm_medium=social&amp;amp;utm_content=post_link"&gt;Person Profile Endpoint&lt;/a&gt; or our &lt;a href="https://nubela.co/proxycurl/docs?ref=nubela.co#company-api-company-profile-endpoint?utm_campaign=content_amplification&amp;amp;utm_source=dev.to&amp;amp;utm_medium=social&amp;amp;utm_content=post_link"&gt;Company Profile Endpoint&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Let me show you how easy it is to pull a freshly scraped and accurate personal profile from LinkedIn using a simple Python script and our Person Profile Endpoint:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;json&lt;/span&gt;
&lt;span class="n"&gt;api_key&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Your_API_Key_Here&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;
&lt;span class="n"&gt;headers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Authorization&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Bearer &lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="n"&gt;api_endpoint&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;https://nubela.co/proxycurl/api/v2/linkedin&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;
&lt;span class="n"&gt;params&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
 &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;linkedin_profile_url&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;https://www.linkedin.com/in/vickygill/&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
 &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;extra&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;include&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
 &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;github_profile_id&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;include&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
 &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;facebook_profile_id&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;include&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
 &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;twitter_profile_id&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;include&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
 &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;personal_contact_number&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;include&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
 &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;personal_email&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;include&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
 &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;inferred_salary&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;include&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
 &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;skills&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;include&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
 &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;use_cache&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;if-recent&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
 &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;fallback_to_cache&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;on-error&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;api_endpoint&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Check if the request was successful
&lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;status_code&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;

 &lt;span class="c1"&gt;# Parse and print the content of the response in a formatted manner
&lt;/span&gt;    &lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;dumps&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;indent&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Error: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;status_code&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The script returns a scraped and enriched profile, that's fresh, and includes data points like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Full name&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Work history&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Salary expectations&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Similar profiles&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Education&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A summary of the individual&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Email&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Phone number&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;And more.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/koKwm1o6jUI"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Alternatively, we also hold a publicly scraped LinkedIn dataset, &lt;a href="https://nubela.co/proxycurl/linkdb?ref=nubela.co?utm_campaign=content_amplification&amp;amp;utm_source=dev.to&amp;amp;utm_medium=social&amp;amp;utm_content=post_link"&gt;LinkDB&lt;/a&gt;, a collection of over 492,805,659 (and increasing) LinkedIn profiles (however, these profiles will not be as fresh as profiles enriched via our API - &lt;a href="https://nubela.co/blog/how-often-is-linkdb-updated/?utm_campaign=content_amplification&amp;amp;utm_source=dev.to&amp;amp;utm_medium=social&amp;amp;utm_content=post_link"&gt;see how often is LinkDB updated&lt;/a&gt;).&lt;/p&gt;

&lt;h4&gt;
  
  
  Proxycurl Pros
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;A plethora of B2B data, everything you could possibly need.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;API crawls are dispatched on-demand and are made in real-time for the latest data.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Flexibility in data freshness.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;High scale crawl, scraping about a million pages per day.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Affordable price plans.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Proxycurl Cons
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The API endpoints can be a bit intimidating for non-developers, and there might be a bit of a learning curve involved.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Businesses requiring extensive hands-on customization might need additional support.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  &lt;a href="http://nubela.co/proxycurl/pricing?utm_campaign=content_amplification&amp;amp;utm_source=dev.to&amp;amp;utm_medium=social&amp;amp;utm_content=post_link"&gt;Proxycurl Pricing&lt;/a&gt;
&lt;/h4&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Plans&lt;/th&gt;
&lt;th&gt;Details&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;td&gt;10 credits on sign-up (100 credits on work email)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Basic Paid&lt;/td&gt;
&lt;td&gt;$49/mo&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;High-end Paid&lt;/td&gt;
&lt;td&gt;Starts from $2000/mo&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  2. &lt;a href="&amp;lt;http://phantombuster.com&amp;gt;%22%20rel='nofollow'&amp;gt;PhantomBuster&amp;lt;/a&amp;gt;%0A&amp;lt;/h3&amp;gt;%0A%0A&amp;lt;p&amp;gt;&amp;lt;img%20src=" alt="PhantomBuster Landing Page"&gt;&lt;/a&gt;

&lt;/h3&gt;
&lt;p&gt;A cloud-based scraping and automation tool that supports LinkedIn among other platforms. PhantomBuster advertises itself as the platform for all things lead generation, without the need for any coding skills.&lt;/p&gt;

&lt;p&gt;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 LinkedIn.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh7-rt.googleusercontent.com%2Fdocsz%2FAD_4nXfPje7pxzVJY0gEve_e0B68DpfCpo2xo3ScxMsCitO_yr5ySxzRCEVtaCJKukwpmEGEgW_9DEwrqe1F1o5dcOYxzwx03flsIhMw0GtCohqsppQBRefDbaZ3UJLw3KqwdM0gcX4w%3Fkey%3DzOWCgs-RYSeIo6J5EF_RSGON" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh7-rt.googleusercontent.com%2Fdocsz%2FAD_4nXfPje7pxzVJY0gEve_e0B68DpfCpo2xo3ScxMsCitO_yr5ySxzRCEVtaCJKukwpmEGEgW_9DEwrqe1F1o5dcOYxzwx03flsIhMw0GtCohqsppQBRefDbaZ3UJLw3KqwdM0gcX4w%3Fkey%3DzOWCgs-RYSeIo6J5EF_RSGON" alt="PhantomBuster Dashboard" width="800" height="385"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;One of them is the LinkedIn profile scraper:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh7-rt.googleusercontent.com%2Fdocsz%2FAD_4nXfWuI_J9CdqsUQb0Phryn9v4uWfur2C7xLavXzOyzsZb6GDwLr3D2tbryvJDmeXM44126R0RTNwsCPsxqOBt3v0aSZHcMDZeuHnaEAl9E9qQw4kf3uKmSPDL4cwnk7B8xTP0RaFaw%3Fkey%3DzOWCgs-RYSeIo6J5EF_RSGON" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh7-rt.googleusercontent.com%2Fdocsz%2FAD_4nXfWuI_J9CdqsUQb0Phryn9v4uWfur2C7xLavXzOyzsZb6GDwLr3D2tbryvJDmeXM44126R0RTNwsCPsxqOBt3v0aSZHcMDZeuHnaEAl9E9qQw4kf3uKmSPDL4cwnk7B8xTP0RaFaw%3Fkey%3DzOWCgs-RYSeIo6J5EF_RSGON" alt="PhantomBuster's LinkedIn Profile Scraper" width="800" height="353"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;On it, you can submit a LinkedIn profile or a desired list of profile URLs. The data it exports includes things like name, LinkedIn profile URL, company, and beyond, but you'll have to use a separate Phantom, the email extractor, to get an email address.&lt;/p&gt;
&lt;h4&gt;
  
  
  PhantomBuster Pros
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Supports automation on repetitive tasks.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Supports business scaling by providing valuable insights through data analysis.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Supports integration with multiple platforms.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;
  
  
  PhantomBuster Cons
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Overcompensating UI; it can get super confusing. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Only supports Hubspot, and limited options for other CRMs.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Rate-limiting issues for high-volume operations&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Unable to bypass LinkedIn's limit or connection invite restrictions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Safety concerns as Phantom Buster requires you to download a Chrome extension and access your cookies to enter LinkedIn.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;
  
  
  &lt;a href="&amp;lt;http://phantombuster.com/pricing&amp;gt;%22%20rel='nofllow'&amp;gt;PhantomBuster%20Pricing&amp;lt;/a&amp;gt;%0A&amp;lt;/h4&amp;gt;%0A%0A&amp;lt;table&amp;gt;&amp;lt;thead&amp;gt;%0A&amp;lt;tr&amp;gt;%0A&amp;lt;th%20style="&gt;Plans
&lt;/a&gt;&lt;th&gt;Details&lt;/th&gt;

&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Free Trial&lt;/td&gt;
&lt;td&gt;2hrs execution time, 1k AI credits&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Basic Paid&lt;/td&gt;
&lt;td&gt;$56/mo&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;High-End Paid&lt;/td&gt;
&lt;td&gt;$352/mo&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;h3&gt;
  
  
  3. &lt;a href="&amp;lt;https://www.peopledatalabs.com/&amp;gt;%22%20rel='nofollow'&amp;gt;People%20Data%20Labs&amp;lt;/a&amp;gt;%0A&amp;lt;/h3&amp;gt;%0A%0A&amp;lt;p&amp;gt;&amp;lt;img%20src=" alt="People Data Labs Landing Page"&gt;&lt;/a&gt;

&lt;/h3&gt;

&lt;/h4&gt;

&lt;p&gt;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 LinkedIn data and works with third-party partners to get private data. Then it packages this data into datasets that customers can call using APIs.&lt;/p&gt;

&lt;h4&gt;
  
  
  People Data Labs Pros
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Large datasets on multiple data points.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Tier based scalable solutions for different levels of enterprises.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Plug-and-play model allows for immediate consumption.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  People Data Labs Cons
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Even if there are different tiers, it's hardly affordable for small businesses and startups.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Data freshness is a big issue, as they offer pre-collected data updated monthly by default.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  &lt;a href="&amp;lt;https://www.peopledatalabs.com/pricing/person&amp;gt;%22%20rel='nofollow'&amp;gt;People%20Data%20Labs%20Pricing&amp;lt;/a&amp;gt;%0A&amp;lt;/h4&amp;gt;%0A%0A&amp;lt;table&amp;gt;&amp;lt;thead&amp;gt;%0A&amp;lt;tr&amp;gt;%0A&amp;lt;th%20style="&gt;Plans
&lt;/a&gt;&lt;th&gt;Details&lt;/th&gt;

&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;td&gt;Up to 100 records&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Basic Paid&lt;/td&gt;
&lt;td&gt;$98/mo&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;High-end Paid&lt;/td&gt;
&lt;td&gt;Custom Pricing&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;

&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Note:&lt;/strong&gt; You cannot sign up with a personal email. Signups are only validated using work emails, making it tough to get a free trial.&lt;/em&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  4. &lt;a href="&amp;lt;https://www.zoominfo.com/&amp;gt;%22%20rel='nofollow'&amp;gt;ZoomInfo&amp;lt;/a&amp;gt;%0A&amp;lt;/h3&amp;gt;%0A%0A&amp;lt;p&amp;gt;&amp;lt;img%20src=" alt="ZoomInfo Landing Page"&gt;&lt;/a&gt;

&lt;/h3&gt;
&lt;p&gt;While not exactly a LinkedIn Scraper, Zoominfo leverages data from LinkedIn 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.&lt;/p&gt;
&lt;h4&gt;
  
  
  ZoomInfo Pros
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Supports integration with CRM platforms and workflow automation.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Provides a granular view with advanced search options, along with intent data.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  ZoomInfo Cons
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Not ideal for developers looking for customizable scraping solutions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Expensive plans, suitable for organizations with larger budgets.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  &lt;a href="&amp;lt;https://www.zoominfo.com/pricing&amp;gt;%22%20rel='nofollow'&amp;gt;ZoomInfo%20Pricing&amp;lt;/a&amp;gt;%0A&amp;lt;/h4&amp;gt;%0A%0A&amp;lt;p&amp;gt;Their%20pricing%20information%20is%20not%20publicly%20available.%20It%20is%20a%20trend%20for%20some%20data%20solution%20providers,%20even%20though%20I%20personally%20feel%20it's%20more%20of%20a%20bother.%20After%20some%20research,%20I%20found%20out%20their%20plan%20starts%20from%20$14,995/%20year.&amp;lt;/p&amp;gt;%0A&amp;lt;h3&amp;gt;%0A%20%20&amp;lt;a%20name="&gt;
  &lt;/a&gt;
  5. &lt;a href="https://business.linkedin.com/sales-solutions/sales-navigator" rel="nofollow noopener noreferrer"&gt; LinkedIn Sales Navigator API&lt;/a&gt;


&lt;/h4&gt;
&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh7-rt.googleusercontent.com%2Fdocsz%2FAD_4nXc_IH90NAif6vrxSiOU6gY3mK27cacHHoi6X2EOhFt6YaV8gKQ87CRWbKseLBm8B39RYSNX1B60-9v_sRN32psVdWdMQZj6TR4vIMDCIMhqUZZWVPiExqc5sN3mH8YRW1M-dRncqQ%3Fkey%3DzOWCgs-RYSeIo6J5EF_RSGON" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh7-rt.googleusercontent.com%2Fdocsz%2FAD_4nXc_IH90NAif6vrxSiOU6gY3mK27cacHHoi6X2EOhFt6YaV8gKQ87CRWbKseLBm8B39RYSNX1B60-9v_sRN32psVdWdMQZj6TR4vIMDCIMhqUZZWVPiExqc5sN3mH8YRW1M-dRncqQ%3Fkey%3DzOWCgs-RYSeIo6J5EF_RSGON" alt="LinkedIn Sales Navigator Landing Page" width="800" height="431"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Like I prefaced earlier, LinkedIn has their very own paid API that grants access to LinkedIn's network and professional data.&lt;/p&gt;

&lt;p&gt;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. LinkedIn 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.&lt;/p&gt;

&lt;p&gt;If you want to learn more, check out this article on &lt;a href="https://nubela.co/blog/access-linkedin-sales-navigator-api-guide/?utm_campaign=content_amplification&amp;amp;utm_source=dev.to&amp;amp;utm_medium=social&amp;amp;utm_content=post_link"&gt;How I Accessed LinkedIn Sales Navigator API&lt;/a&gt;.&lt;/p&gt;
&lt;h4&gt;
  
  
  Linkedin Sales Navigator API Pros
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Allows fetching real-time data and enrich your platform.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Supports data syncing of newly fetched data with your existing customer information.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Advanced search options with numerous fields filters.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  LinkedIn Sales Navigator API Cons
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Lengthy approval process, hard to get access&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Harsh rate limits.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Expensive venture, need an active subscription to access.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  &lt;a href="&amp;lt;https://business.linkedin.com/sales-solutions/compare-plans&amp;gt;%22%20rel='nofollow'&amp;gt;LinkedIn%20Sales%20Navigator%20API%20Pricing&amp;lt;/a&amp;gt;%0A&amp;lt;/h4&amp;gt;%0A%0A&amp;lt;p&amp;gt;Pricing%20for%20the%20API%20is%20not%20publicly%20disclosed%20and%20requires%20direct%20negotiation%20with%20LinkedIn,%20depending%20on%20the%20intended%20use%20case%20and%20volume%20of%20data%20access.%20The%20most%20common%20pricing%20reference%20you%20can%20get%20online%20is%20$99/person/mo.&amp;lt;/p&amp;gt;%0A&amp;lt;h3&amp;gt;%0A%20%20&amp;lt;a%20name="&gt;
  &lt;/a&gt;
  6. &lt;a href="https://zopto.com/" rel="nofollow noopener noreferrer"&gt;Zopto&lt;/a&gt;


&lt;/h4&gt;
&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh7-rt.googleusercontent.com%2Fdocsz%2FAD_4nXfd_CfTbFBv7FXxgSObDnO1kTwjuHMSQBAcJsSGTmYRMbElGRxAab2-6AdzLF-c9Jir-ckmY4LROaJm9gfK4GmDfrOFZqA9GSO5jmCAXPBSv1cdH72Rn9GsmcvJ1jvwo3vNG-SeNA%3Fkey%3DzOWCgs-RYSeIo6J5EF_RSGON" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh7-rt.googleusercontent.com%2Fdocsz%2FAD_4nXfd_CfTbFBv7FXxgSObDnO1kTwjuHMSQBAcJsSGTmYRMbElGRxAab2-6AdzLF-c9Jir-ckmY4LROaJm9gfK4GmDfrOFZqA9GSO5jmCAXPBSv1cdH72Rn9GsmcvJ1jvwo3vNG-SeNA%3Fkey%3DzOWCgs-RYSeIo6J5EF_RSGON" alt="Zopto Landing Page" width="800" height="451"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A LinkedIn 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.&lt;/p&gt;

&lt;p&gt;It is the perfect tool if you're looking to scale your LinkedIn outreach while maintaining a degree of personalization.&lt;/p&gt;
&lt;h4&gt;
  
  
  Zopto Pros
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Supports integration with Linkedin Sales Navigator&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Simple and easy to follow UI&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Supports integration with GPT&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Zopto Cons
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Automated campaigns pose risk triggering LinkedIn's anti-automation policies&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Steep pricing for small businesses or individual users.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  &lt;a href="&amp;lt;https://zopto.com/pricing/&amp;gt;%22%20rel='nofollow'&amp;gt;Zopto%20Pricing&amp;lt;/a&amp;gt;%0A&amp;lt;/h4&amp;gt;%0A%0A&amp;lt;table&amp;gt;&amp;lt;thead&amp;gt;%0A&amp;lt;tr&amp;gt;%0A&amp;lt;th%20style="&gt;Plans
&lt;/a&gt;&lt;th&gt;Details&lt;/th&gt;

&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;td&gt;No Free Trials ❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Basic Paid&lt;/td&gt;
&lt;td&gt;$197/person/mo&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;High-end Paid&lt;/td&gt;
&lt;td&gt;$237/person/mo&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;h2&gt;
  
  
  Open-Source LinkedIn Scrapers
&lt;/h2&gt;

&lt;/h4&gt;
&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;But 'free' is not truly free. Open source LinkedIn Scrapers offer flexible modifications and are free, but it demands a lot of your time and requires technical expertise.&lt;/p&gt;

&lt;p&gt;Those who are up for the challenge, I present to you a list of some projects that I deem are perfect for LinkedIn scraping.&lt;/p&gt;
&lt;h3&gt;
  
  
  7. &lt;a href="https://github.com/joeyism/linkedin_scraper?ref=nubela.co" rel="noopener noreferrer"&gt;&lt;code&gt;LinkedIn_Scraper&lt;/code&gt; by joeyism&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://github.com/joeyism/linkedin_scraper?ref=nubela.co" rel="noopener noreferrer"&gt;LinkedIn_Scraper&lt;/a&gt; is designed to automate the extraction of data from LinkedIn user and company profiles. It is proudly sponsored by &lt;a href="http://nubela.co/proxycurl/?utm_campaign=content_amplification&amp;amp;utm_source=dev.to&amp;amp;utm_medium=social&amp;amp;utm_content=post_link"&gt;Proxycurl&lt;/a&gt;, as a tip of the hat to the developers' spirit and ingenuity. It is one of the reasons the repository is still free.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh7-rt.googleusercontent.com%2Fdocsz%2FAD_4nXfpC18ILCwANRJC5xbAOmZCpYo-bKOxBqaXni-_5Xi5sdDk5FahcNdx_UgI3MB4LKnDPyNQxuCTWF1FwdpQMsxQcfrQQc2da9yANkFhrSfuFYQQOt0J_RF8ed_BUgIkaSU8S5AV%3Fkey%3DzOWCgs-RYSeIo6J5EF_RSGON" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh7-rt.googleusercontent.com%2Fdocsz%2FAD_4nXfpC18ILCwANRJC5xbAOmZCpYo-bKOxBqaXni-_5Xi5sdDk5FahcNdx_UgI3MB4LKnDPyNQxuCTWF1FwdpQMsxQcfrQQc2da9yANkFhrSfuFYQQOt0J_RF8ed_BUgIkaSU8S5AV%3Fkey%3DzOWCgs-RYSeIo6J5EF_RSGON" alt="LinkedIn_Scraper Github Repository" width="800" height="410"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Linkedin_Scraper makes the process of scraping LinkedIn with Python so much easier. How?&lt;/p&gt;

&lt;p&gt;Let me show you.&lt;/p&gt;

&lt;p&gt;Install the Python library by running the following command:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;pip3 install --user linkedin_scraper&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;After installing the library, here's an example of how you can scrape a person's profile:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;linkedin_scraper&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Person&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;actions&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;selenium&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;webdriver&lt;/span&gt;
&lt;span class="n"&gt;driver&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;webdriver&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Chrome&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;email&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;some-email@email.address&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="n"&gt;password&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;password123&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="n"&gt;actions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;login&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;driver&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;email&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;password&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;# if email and password isnt given, it'll prompt in terminal
&lt;/span&gt;&lt;span class="n"&gt;person&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Person&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://www.linkedin.com/in/joey-sham-aa2a50122&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;driver&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;driver&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;And that's how you do it! Be advised, you still have to circumvent LinkedIn'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!&lt;/p&gt;
&lt;h4&gt;
  
  
  LinkedIn_Scraper Pros
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Absolutely Free.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Doesn't require a LinkedIn login or API access.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  LinkedIn_Scraper Cons
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;It's not a one time setup. It is continuous work and you'll need to frequently update the scraper if LinkedIn changes its page structure.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You have to parse HTML manually and navigate the complexities of DOM trees.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  8. &lt;a href="https://github.com/tomquirk/linkedin-api" rel="noopener noreferrer"&gt;&lt;code&gt;LinkedIn-API&lt;/code&gt; by tomquirk&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Another feature scraper brought to you by yours truly is the LinkedIn-API by Tomquirk. A highly favored tool among developers for its flexible, code-based approach to scraping LinkedIn profiles, job listings, and more.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh7-rt.googleusercontent.com%2Fdocsz%2FAD_4nXeGGuwV3m6d7Qc7RmfPE9dX-0oM6bOEj2jd6RBNjyTn7f7_NXI-8lm9II0hrBKAog456iC2OtZah0IrCuj0uWxyxnVuto-lwlp6VoauCTsttUOskmpXUmIOMtipxX0snZeMuN-A%3Fkey%3DzOWCgs-RYSeIo6J5EF_RSGON" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh7-rt.googleusercontent.com%2Fdocsz%2FAD_4nXeGGuwV3m6d7Qc7RmfPE9dX-0oM6bOEj2jd6RBNjyTn7f7_NXI-8lm9II0hrBKAog456iC2OtZah0IrCuj0uWxyxnVuto-lwlp6VoauCTsttUOskmpXUmIOMtipxX0snZeMuN-A%3Fkey%3DzOWCgs-RYSeIo6J5EF_RSGON" alt="LinkedIn-API Github Repository" width="800" height="410"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let me show you how you can pull up a LinkedIn profile through this tool using Python.&lt;/p&gt;

&lt;p&gt;First, install the LinkedIn API package.&lt;br&gt;
&lt;code&gt;pip install linkedin-api&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Then, authenticate your LinkedIn account using email and password (use this responsibly to comply with LinkedIn's terms of service).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;linkedin_api&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Linkedin&lt;/span&gt;
&lt;span class="c1"&gt;# Authenticate with your LinkedIn credentials
&lt;/span&gt;&lt;span class="n"&gt;api&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Linkedin&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;your_email@example.com&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;your_password&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Fetch a person's LinkedIn profile data using their public profile URL or unique identifier.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Example of extracting a profile
&lt;/span&gt;&lt;span class="n"&gt;profile&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;api&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get_profile&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Sese-Limbu-12345&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  &lt;span class="c1"&gt;# Replace with the LinkedIn username or profile ID
&lt;/span&gt;&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;profile&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;What you get is a clean and structured output in JSON format.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"firstName"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Sese"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"lastName"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Limbu"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"headline"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Technical Writer at Proxycurl"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"location"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Vancouver, BC"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"industry"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Information Technology"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"summary"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Super cool guy with an innate hunger for personal growth."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"experience"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"title"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Technical Writer"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"company"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"XYZ Corp"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"duration"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"3 years"&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"title"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Intern"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"company"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"ABC Inc."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"duration"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"6 months"&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"education"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"degree"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Bachelors in Business Administration"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"institution"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Kathmandu University School of Management"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"year"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2021"&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;By the way, &lt;a href="http://nubela.co/proxycurl/?utm_campaign=content_amplification&amp;amp;utm_source=dev.to&amp;amp;utm_medium=social&amp;amp;utm_content=post_link"&gt;Proxycurl&lt;/a&gt; is sponsoring this one too! As a developer-focused company, we are just trying to look after the community. Enjoy!&lt;/p&gt;

&lt;h4&gt;
  
  
  LinkedIn-API Pros
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Clean and structured JSON output.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;No parsing required.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  LinkedIn-API Cons
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Requires LinkedIn credentials, risking account suspension.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Limited to what the API endpoints provide access to.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  9. &lt;a href="&amp;lt;https://github.com/rosstripi/linkScrape&amp;gt;%22%20rel='nofollow'&amp;gt;%20raw%20&amp;lt;code&amp;gt;LinkScrape&amp;lt;/code&amp;gt;%20endraw%20%20by%20rosstripi&amp;lt;/a&amp;gt;%0A&amp;lt;/h3&amp;gt;%0A%0A&amp;lt;p&amp;gt;LinkScrape%20is%20another%20open%20source%20LinkedIn%20scraper,%20designed%20to%20scrape%20employee%20names%20from%20LinkedIn%20using%20company%20search%20results.%20It%20operates%20entirely%20on%20the%20command%20line,%20leveraging%20Python%20libraries%20like%20%20raw%20&amp;lt;code&amp;gt;beautifulsoup4&amp;lt;/code&amp;gt;%20endraw%20%20and%20%20raw%20&amp;lt;code&amp;gt;lxml&amp;lt;/code&amp;gt;%20endraw%20%20to%20parse%20LinkedIn's%20front-end,%20without%20using%20the%20official%20API.&amp;lt;/p&amp;gt;%0A%0A&amp;lt;p&amp;gt;&amp;lt;img%20src=" alt="LinkScrape GitHub Repository"&gt;&lt;/a&gt;

&lt;/h3&gt;
&lt;p&gt;Here's &lt;strong&gt;how you can scrape Linkedin using LinkScrape&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Since the tool is primarily focused on employee enumeration, let's go ahead and see how we can pull that data.&lt;/p&gt;

&lt;p&gt;Start by cloning the LinkScrape repository from GitHub to your local environment.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;git&lt;/span&gt; &lt;span class="n"&gt;clone&lt;/span&gt; &lt;span class="n"&gt;https&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="n"&gt;github&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;com&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;rosstripi&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;LinkScrape&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;git&lt;/span&gt;
&lt;span class="n"&gt;cd&lt;/span&gt; &lt;span class="n"&gt;LinkScrape&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Then, install the necessary Python libraries specified in the &lt;code&gt;requirements.txt&lt;/code&gt; file in the repository.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;pip install -r requirements.txt&lt;/code&gt;\&lt;br&gt;
Remember, you will need valid LinkedIn session cookies. Obtain your session cookie &lt;code&gt;li_at&lt;/code&gt; from your browser and configure it in the script.&lt;/p&gt;

&lt;p&gt;Now, get your target's LinkedIn company profile URL and run the script.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;linkscrape&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;LinkedInScraper&lt;/span&gt;
&lt;span class="c1"&gt;# Initialize scraper with your LinkedIn cookie
&lt;/span&gt;&lt;span class="n"&gt;scraper&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;LinkedInScraper&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;your_li_at_cookie&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="c1"&gt;# Extract employee data
&lt;/span&gt;&lt;span class="n"&gt;company_url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://www.linkedin.com/company/apple/&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="n"&gt;employee_data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;scraper&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;scrape_employees&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;company_url&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="c1"&gt;# Print results
&lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;employee&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;employee_data&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Name: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;employee&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;name&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;, Position: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;employee&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;position&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;What you get is a structured output in JSON format.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Claire Spencer"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"position"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Marketing Manager"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Ahmed Mansoor"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"position"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Software Engineer"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Carla Jensen"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"position"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"HR Specialist"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  LinkScrape Pros
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Targeted scraping; Designed for company-based scraping rather than broad profile searches.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;
  
  
  LinkScrape Cons
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Targeted scraping yes, so it makes the tool limited.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;LinkScrape lacks the extensive session handling of other tools, which might result in faster session expirations.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;With fewer users and contributors, troubleshooting and enhancements may take longer compared to more established open-source projects like LinkedInScraper.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  10. &lt;a href="&amp;lt;https://github.com/TufayelLUS/LinkedIn-Scraper&amp;gt;%22%20rel='nofollow'&amp;gt;%20raw%20&amp;lt;code&amp;gt;LinkedIn-Scraper&amp;lt;/code&amp;gt;%20endraw%20%20by%20TufayelLUS&amp;lt;/a&amp;gt;%0A&amp;lt;/h3&amp;gt;%0A%0A&amp;lt;p&amp;gt;The%20last%20entry%20for%20this%20category%20is%20LinkedIn-Scraper%20by%20TufayelLUS.%20A%20scraper%20designed%20for%20extracting%20detailed%20LinkedIn%20profile%20data.%20Unlike%20tools%20like%20LinkScrape%20or%20LinkedIn-API%20by%20TomQuirk,%20TufayelLUS%20Scraper%20excels%20at%20extracting%20specific%20skill%20details%20and%20endorsements.%20This%20makes%20it%20ideal%20for%20talent%20acquisition%20or%20workforce%20skill%20analysis.&amp;lt;/p&amp;gt;%0A%0A&amp;lt;p&amp;gt;&amp;lt;img%20src=" alt="LikedIn-Scraper GitHub Repository"&gt;&lt;/a&gt;

&lt;/h3&gt;
&lt;p&gt;Let's go through how you can extract data using this scraper.&lt;/p&gt;

&lt;p&gt;First, clone the GitHub repository and install the required dependencies via &lt;code&gt;pip install -r requirements.txt.&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Then, log into LinkedIn and retrieve the &lt;code&gt;li_at&lt;/code&gt; cookie from your browser's developer tools. Update the configuration file or pass the cookie directly when running the script.&lt;/p&gt;

&lt;p&gt;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.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;tufayel_scraper&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;LinkedInScraper&lt;/span&gt;
&lt;span class="c1"&gt;# Initialize the scraper
&lt;/span&gt;&lt;span class="n"&gt;scraper&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;LinkedInScraper&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;li_at&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;your_li_at_cookie&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="c1"&gt;# Scrape a specific profile
&lt;/span&gt;&lt;span class="n"&gt;profile_data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;scraper&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get_profile&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://www.linkedin.com/in/example-profile/&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;profile_data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;The output generated is in JSON and containing fields like&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Full name&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Job title and company&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Education history&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Skills and endorsements&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;
  
  
  LinkedIn-Scraper Pros
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Supports scraping jobs and company pages in addition to individual profiles, offering more functionality than narrower tools like LinkScrape.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Robust HTML parsing techniques, minimizing errors in capturing structured data.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;
  
  
  LinkedIn-Scraper Cons
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Depends heavily on the li_at cookie; frequent session expirations can be expected.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;TufayelLUS Scraper has a smaller community resulting in slow troubleshooting or enhancement requests.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;No built-in rotation for proxies or accounts; scraping larger volumes of data may lead to faster bans.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Browser Extension LinkedIn Scrapers
&lt;/h2&gt;

&lt;p&gt;Browser extension LinkedIn 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.&lt;/p&gt;
&lt;h3&gt;
  
  
  11. &lt;a href="&amp;lt;https://evaboot.com/?ref=nubela.co&amp;gt;%22%20rel='nofollow'&amp;gt;Evaboot&amp;lt;/a&amp;gt;%0A&amp;lt;/h3&amp;gt;%0A%0A&amp;lt;p&amp;gt;&amp;lt;img%20src=" alt="Evaboot Lnading Page"&gt;&lt;/a&gt;

&lt;/h3&gt;
&lt;p&gt;Evaboot is an extension based Linkedin scraper that requires a &lt;a href="https://nubela.co/blog/what-is-the-linkedin-sales-navigator/?utm_campaign=content_amplification&amp;amp;utm_source=dev.to&amp;amp;utm_medium=social&amp;amp;utm_content=post_link"&gt;LinkedIn Sales Navigator&lt;/a&gt; subscription.&lt;/p&gt;

&lt;p&gt;Once you install the extension, you can perform Sales Navigator searches and then export the data back to Evaboot.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh7-rt.googleusercontent.com%2Fdocsz%2FAD_4nXcOc_ERBuL0Sgj90erKd5xSRcUgZQP5PPAvRDDQQRP26OHM7_znHwMM0joK1EdoPaqkgwGrtY9aCQjgiIHf6Uzw9sut5ViHJToynO07PCl2WwthuPxL9_vP-VIBQseBF8beQRiBIA%3Fkey%3DzOWCgs-RYSeIo6J5EF_RSGON" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh7-rt.googleusercontent.com%2Fdocsz%2FAD_4nXcOc_ERBuL0Sgj90erKd5xSRcUgZQP5PPAvRDDQQRP26OHM7_znHwMM0joK1EdoPaqkgwGrtY9aCQjgiIHf6Uzw9sut5ViHJToynO07PCl2WwthuPxL9_vP-VIBQseBF8beQRiBIA%3Fkey%3DzOWCgs-RYSeIo6J5EF_RSGON" alt="Evaboot Dashboard" width="800" height="398"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;They export data points like full name, company, role, LinkedIn profile URL, and then they have an additional feature to obtain email addresses.&lt;/p&gt;
&lt;h4&gt;
  
  
  Evaboot Pros
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Great documentation and tutorials to assist new users.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;
  
  
  Evaboot Cons
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Requires LinkedIn Sales Navigator access.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Credit-based system for emails and exporting data.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Restricted to data scraping only, with no additional automation features.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;
  
  
  &lt;a href="&amp;lt;https://evaboot.com/pricing&amp;gt;%22%20rel='nofollow'&amp;gt;Evaboot%20Pricing&amp;lt;/a&amp;gt;%0A&amp;lt;/h4&amp;gt;%0A%0A&amp;lt;p&amp;gt;Evaboot%20has%20both%20subscription%20and%20one%20time%20payment%20plans.&amp;lt;/p&amp;gt;%0A%0A&amp;lt;p&amp;gt;They%20also%20have%20a%20credit%20system,%20in%20which:&amp;lt;/p&amp;gt;%0A%0A&amp;lt;ul&amp;gt;%0A&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;1%20export%20credit%20=%20LinkedIn%20profile%20+%20company%20data&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;%0A&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;1%20email%20credit%20=%20email%20search%20+%20verification&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;%0A&amp;lt;/ul&amp;gt;%0A%0A&amp;lt;p&amp;gt;You%20can%20opt%20for%20buying%20as%20low%20as%20100%20credits%20for%20just%20$9.%20Or%20go%20up%20to%2050,000%20credits%20at%20$499.&amp;lt;/p&amp;gt;%0A&amp;lt;h3&amp;gt;%0A%20%20&amp;lt;a%20name="&gt;
  &lt;/a&gt;
  12. &lt;a href="&amp;lt;https://meetalfred.com/&amp;gt;%22%20rel='nofollow'&amp;gt;MeetAlfred&amp;lt;/a&amp;gt;%0A&amp;lt;/h3&amp;gt;%0A%0A&amp;lt;p&amp;gt;&amp;lt;img%20src=" alt="MeetAlfred Landing Page"&gt;&lt;/a&gt;

&lt;/h4&gt;
&lt;p&gt;For whatever reason, Meet Alfred refused to successfully link with my LinkedIn. Not a great first impression.&lt;/p&gt;

&lt;p&gt;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 LinkedIn:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh7-rt.googleusercontent.com%2Fdocsz%2FAD_4nXetCC_oHwWYaUfe86ln9AKHKuXC3Akkr_j1GAdx0_Oyl9HP5VRCQo85aB7PakNXmvjTaALLmtOTVxPkURINItFrQ3Pr5VU2pm65AdVpqEYYI2UACMTSu6So9DQgk-iH_4Tq3QHinw%3Fkey%3DzOWCgs-RYSeIo6J5EF_RSGON" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh7-rt.googleusercontent.com%2Fdocsz%2FAD_4nXetCC_oHwWYaUfe86ln9AKHKuXC3Akkr_j1GAdx0_Oyl9HP5VRCQo85aB7PakNXmvjTaALLmtOTVxPkURINItFrQ3Pr5VU2pm65AdVpqEYYI2UACMTSu6So9DQgk-iH_4Tq3QHinw%3Fkey%3DzOWCgs-RYSeIo6J5EF_RSGON" alt="MeetAlfred's LinkedIn Scraper" width="800" height="398"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So, for example, you could specify a search URL, or input your own specified search query:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh7-rt.googleusercontent.com%2Fdocsz%2FAD_4nXePAlJfolCcW0fJFXrbrCqkpPB1BMNzfag1VYngUSkMsyWuxqSoizn3SorbxkyGxycqMUqg-UbYWqElPcyCGjzcSxlCSkwkuDiokfRpv8lTD2hh-c5BU1DJf9r3biKJTjECfk-M-A%3Fkey%3DzOWCgs-RYSeIo6J5EF_RSGON" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh7-rt.googleusercontent.com%2Fdocsz%2FAD_4nXePAlJfolCcW0fJFXrbrCqkpPB1BMNzfag1VYngUSkMsyWuxqSoizn3SorbxkyGxycqMUqg-UbYWqElPcyCGjzcSxlCSkwkuDiokfRpv8lTD2hh-c5BU1DJf9r3biKJTjECfk-M-A%3Fkey%3DzOWCgs-RYSeIo6J5EF_RSGON" alt="MeetAlfred Extention" width="800" height="398"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Afterwards you could conduct outreach campaigns or export the scraped profiles which includes data points like name, phone number, and email.&lt;/p&gt;
&lt;h4&gt;
  
  
  Meet Alfred Pros
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Provides a variety of ways to search for LinkedIn profiles. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Pretty simple UI.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;
  
  
  Meet Alfred Cons
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Focus more on omnichannel outreach rather than scraping LinkedIn profiles (it wants you to keep the data in-house).&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;
  
  
  &lt;a href="&amp;lt;https://meetalfred.com/pricing&amp;gt;%22%20rel='nofollow'&amp;gt;Meet%20Alfred%20Pricing&amp;lt;/a&amp;gt;%0A&amp;lt;/h4&amp;gt;%0A%0A&amp;lt;table&amp;gt;&amp;lt;thead&amp;gt;%0A&amp;lt;tr&amp;gt;%0A&amp;lt;th%20style="&gt;Plans
&lt;/a&gt;&lt;th&gt;Details&lt;/th&gt;

&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;td&gt;14 Days Free Trial ✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Basic Paid&lt;/td&gt;
&lt;td&gt;$59/person/mo&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;High-end Paid&lt;/td&gt;
&lt;td&gt;$99/person/mo&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;h3&gt;
  
  
  13. &lt;a href="&amp;lt;https://octopuscrm.io/?ref=nubela.co&amp;gt;%22%20rel='nofollow'&amp;gt;Octopus%20CRM&amp;lt;/a&amp;gt;%0A&amp;lt;/h3&amp;gt;%0A%0A&amp;lt;p&amp;gt;&amp;lt;img%20src=" alt="Octopus CRM Landing Page"&gt;&lt;/a&gt;

&lt;/h3&gt;

&lt;/h4&gt;

&lt;p&gt;Octopus CRM advertise themselves as "the all-in-one LinkedIn automation tool". Bold claim for a LinkedIn scraper operating using Google extension. But on closer inspection, it's actually not very hard to extract data.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh7-rt.googleusercontent.com%2Fdocsz%2FAD_4nXdK0JbQ684cUYtwQ0ZYaS23du4IVY-BOpZRsrTTNu7H2h28sbpooWf0wguFBdg0oBLE9dun12tBYgFSjEvYTvWeeDH_m2-sWyuP7fG3Z0OEyNhvpuTMHCC9GjJ0CXTuHz5kexrM%3Fkey%3DzOWCgs-RYSeIo6J5EF_RSGON" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh7-rt.googleusercontent.com%2Fdocsz%2FAD_4nXdK0JbQ684cUYtwQ0ZYaS23du4IVY-BOpZRsrTTNu7H2h28sbpooWf0wguFBdg0oBLE9dun12tBYgFSjEvYTvWeeDH_m2-sWyuP7fG3Z0OEyNhvpuTMHCC9GjJ0CXTuHz5kexrM%3Fkey%3DzOWCgs-RYSeIo6J5EF_RSGON" alt="Octopus CRM extention" width="800" height="427"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But like with other extension based scrapers, the primary purpose seems to be more on LinkedIn marketing and outreach than LinkedIn scraping. That said, there is a provision to export emails and phone numbers into a .CSV file.&lt;/p&gt;

&lt;h4&gt;
  
  
  Octopus CRM Pros
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Supports integration with just about any tool.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Pricing is on the cheaper side.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Octopus CRM Cons
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Hyper-simplistic UI.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Higher priority towards outreach than scraping or exporting data. &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  &lt;a href="&amp;lt;https://octopuscrm.io/&amp;gt;%22%20rel='nofollow'&amp;gt;Octopus%20CRM%20Pricing&amp;lt;/a&amp;gt;%0A&amp;lt;/h4&amp;gt;%0A%0A&amp;lt;table&amp;gt;&amp;lt;thead&amp;gt;%0A&amp;lt;tr&amp;gt;%0A&amp;lt;th%20style="&gt;Plans
&lt;/a&gt;&lt;th&gt;Details&lt;/th&gt;

&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;td&gt;7 Day Free Trial ✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Basic Paid&lt;/td&gt;
&lt;td&gt;$9.99/mo&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;High-end Paid&lt;/td&gt;
&lt;td&gt;$39.99/mo&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;h3&gt;
  
  
  14. &lt;a href="&amp;lt;https://www.waalaxy.com/&amp;gt;%22%20rel='nofollow'&amp;gt;Waalaxy&amp;lt;/a&amp;gt;%0A&amp;lt;/h3&amp;gt;%0A%0A&amp;lt;p&amp;gt;&amp;lt;img%20src=" alt="Waalaxy Landing Page"&gt;&lt;/a&gt;

&lt;/h3&gt;
&lt;/h4&gt;
&lt;p&gt;Waalaxy is a freely downloadable LinkedIn 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.&lt;/p&gt;

&lt;p&gt;After enabling, all you have to do is perform a person search on LinkedIn, so, for example, I searched "SaaS founders" and then exported the data:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh7-rt.googleusercontent.com%2Fdocsz%2FAD_4nXdZE-0hce_HrpSeY9pBw5WNFdZ6Bi9eMIQqmcPNV-hNs6CKDWp9begqqFt8AB8QytThhQe0m1p8nEdDwX2hUCw7Zi2o8hAu016DCg81hrhTL4CzgDBlBIkUQS8X-gGs09oRqkOf%3Fkey%3DzOWCgs-RYSeIo6J5EF_RSGON" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh7-rt.googleusercontent.com%2Fdocsz%2FAD_4nXdZE-0hce_HrpSeY9pBw5WNFdZ6Bi9eMIQqmcPNV-hNs6CKDWp9begqqFt8AB8QytThhQe0m1p8nEdDwX2hUCw7Zi2o8hAu016DCg81hrhTL4CzgDBlBIkUQS8X-gGs09oRqkOf%3Fkey%3DzOWCgs-RYSeIo6J5EF_RSGON" alt="Waalaxy Browser Extention" width="800" height="398"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The data then goes over to the Waalaxy dashboard through the chrome extension:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh7-rt.googleusercontent.com%2Fdocsz%2FAD_4nXdKDXS2ne5PxPdTAGS2v4A1BO7mTm77o2PK54aezOPWO2GLGYCCMm5piPK-V0vx8SWScB1nTBL0qsTFx-yT30qGzrdsvuRT3DKw3kQ4TC9lXwyCYC7FlGmfmgMuHz3AKLTBKCHXiA%3Fkey%3DzOWCgs-RYSeIo6J5EF_RSGON" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh7-rt.googleusercontent.com%2Fdocsz%2FAD_4nXdKDXS2ne5PxPdTAGS2v4A1BO7mTm77o2PK54aezOPWO2GLGYCCMm5piPK-V0vx8SWScB1nTBL0qsTFx-yT30qGzrdsvuRT3DKw3kQ4TC9lXwyCYC7FlGmfmgMuHz3AKLTBKCHXiA%3Fkey%3DzOWCgs-RYSeIo6J5EF_RSGON" alt="Waalaxy Dashboard" width="800" height="398"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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, LinkedIn profile URL, and then some contact information.&lt;/p&gt;
&lt;h4&gt;
  
  
  Waalaxy Pros
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Beginner friendly UI, almost too simple.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Inbox management system&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Affordable pricing tiers&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Waalaxy Cons
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Hardly any useful data is extracted. More for outreach rather than extracting data from LinkedIn.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Simple yes, but too simple. Barely basic scraping functionalities compared to dedicated scrapers.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;&lt;a href="&amp;lt;https://www.waalaxy.com/pricing/&amp;gt;%22%20rel='nofollow'&amp;gt;Waalaxy%20pricing&amp;lt;/a&amp;gt;&amp;lt;/strong&amp;gt;%0A&amp;lt;/h4&amp;gt;%0A%0A&amp;lt;table&amp;gt;&amp;lt;thead&amp;gt;%0A&amp;lt;tr&amp;gt;%0A&amp;lt;th%20style="&gt;Plans
&lt;/a&gt;&lt;th&gt;Details&lt;/th&gt;

&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;td&gt;Free Trial (80 invites/mo)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Basic paid&lt;/td&gt;
&lt;td&gt;$59/mo&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;High-end paid&lt;/td&gt;
&lt;td&gt;$179/mo&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;h3&gt;
  
  
  15. &lt;a href="&amp;lt;https://www.dux-soup.com/&amp;gt;%22%20rel='nofollow'&amp;gt;Dux-Soup&amp;lt;/a&amp;gt;%0A&amp;lt;/h3&amp;gt;%0A%0A&amp;lt;p&amp;gt;&amp;lt;img%20src=" alt="Dux-Soup Landing Page"&gt;&lt;/a&gt;

&lt;/h3&gt;
&lt;p&gt;The final extension based LinkedIn 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 LinkedIn account, Sales Navigator or Recruiter account.&lt;/p&gt;

&lt;p&gt;Once downloaded, you can create 'Drip' campaigns to automate LinkedIn connection invitations, follow and endorse profiles, send InMails, and messages.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh7-rt.googleusercontent.com%2Fdocsz%2FAD_4nXfDIWVbCL8ioDyU4gIkE_tHTa5qvdd9_G3W8supwP-pv5XighNo-eJ75RD0utlYWC3h4IAsADTimiyB_UqmBAaf0uU8GRXHYbNcAXJVimquqEpYDJsykCrsdlUy0mDHoYq875nQ8w%3Fkey%3DzOWCgs-RYSeIo6J5EF_RSGON" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh7-rt.googleusercontent.com%2Fdocsz%2FAD_4nXfDIWVbCL8ioDyU4gIkE_tHTa5qvdd9_G3W8supwP-pv5XighNo-eJ75RD0utlYWC3h4IAsADTimiyB_UqmBAaf0uU8GRXHYbNcAXJVimquqEpYDJsykCrsdlUy0mDHoYq875nQ8w%3Fkey%3DzOWCgs-RYSeIo6J5EF_RSGON" alt="Dux-Soup campaigns" width="800" height="451"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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 LinkedIn lead generation efforts.&lt;/p&gt;
&lt;h4&gt;
  
  
  Dux-Soup Pros
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Short yet detailed tutorial upon using the platform for the first time.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;On the more affordable side of pricing.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Dux-Soup Cons
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Weirdly enough, the extension doesn't work if the browser is closed.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;They guarantee safety of your LinkedIn account, but it is open to restrictions if usage limits are exceeded.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;More about outreach than scraping.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  &lt;a href="&amp;lt;https://www.dux-soup.com/pricing/plans&amp;gt;%22%20rel='nofollow'&amp;gt;Dux-Soup%20Pricing&amp;lt;/a&amp;gt;%0A&amp;lt;/h4&amp;gt;%0A%0A&amp;lt;table&amp;gt;&amp;lt;thead&amp;gt;%0A&amp;lt;tr&amp;gt;%0A&amp;lt;th%20style="&gt;Plans
&lt;/a&gt;&lt;th&gt;Details&lt;/th&gt;

&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;td&gt;14 Days Free Trial ✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Basic Paid&lt;/td&gt;
&lt;td&gt;$11.25/mo&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;High-end Paid&lt;/td&gt;
&lt;td&gt;$74.17/mo&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;h2&gt;
  
  
  Lead Generation and Email Discovery LinkedIn Scrapers
&lt;/h2&gt;

&lt;/h4&gt;

&lt;p&gt;By now, it's clear that not all LinkedIn 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.&lt;/p&gt;

&lt;h3&gt;
  
  
  16. &lt;a href="&amp;lt;https://hunter.io/&amp;gt;%22%20rel='nofollow'&amp;gt;Hunter.io&amp;lt;/a&amp;gt;%0A&amp;lt;/h3&amp;gt;%0A%0A&amp;lt;p&amp;gt;&amp;lt;img%20src=" alt="Hunter.io Landing Page"&gt;&lt;/a&gt;

&lt;/h3&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh7-rt.googleusercontent.com%2Fdocsz%2FAD_4nXeBNGo_iPnAjxpcMKzeXxmX3N6GveF5yrzaN-IME3WDVh98nteVxm8pl7ptA-acTXgan4WdbpZY-oWsMcNTl0AQ-k227zBvyQgnxJJKEmyQuOASvE_HT8lPW5EQdcP-4YQGvDL9%3Fkey%3DzOWCgs-RYSeIo6J5EF_RSGON" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh7-rt.googleusercontent.com%2Fdocsz%2FAD_4nXeBNGo_iPnAjxpcMKzeXxmX3N6GveF5yrzaN-IME3WDVh98nteVxm8pl7ptA-acTXgan4WdbpZY-oWsMcNTl0AQ-k227zBvyQgnxJJKEmyQuOASvE_HT8lPW5EQdcP-4YQGvDL9%3Fkey%3DzOWCgs-RYSeIo6J5EF_RSGON" alt="Hunter.io Email Campaign" width="800" height="451"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h4&gt;
  
  
  Hunter.io Pros
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Easy-to-follow tutorial and simple enough UI. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Email verification is excellent in dodging bounce rates.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Hunter.io Cons
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Massive priority on email discovery and outreach, better tools available for dedicated scraping.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Can match false positives on email verifications.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  &lt;a href="&amp;lt;https://hunter.io/pricing&amp;gt;%22%20rel='nofollow'&amp;gt;Hunter.io%20Pricing&amp;lt;/a&amp;gt;%0A&amp;lt;/h4&amp;gt;%0A%0A&amp;lt;table&amp;gt;&amp;lt;thead&amp;gt;%0A&amp;lt;tr&amp;gt;%0A&amp;lt;th%20style="&gt;Plans
&lt;/a&gt;&lt;th&gt;Details&lt;/th&gt;

&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;td&gt;Free Plan Available ✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Basic Paid&lt;/td&gt;
&lt;td&gt;$34/mo&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;High-end Paid&lt;/td&gt;
&lt;td&gt;$349/mo&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;h3&gt;
  
  
  17. &lt;a href="https://www.lusha.com/" rel="nofollow noopener noreferrer"&gt;Lusha&lt;/a&gt;
&lt;/h3&gt;

&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh7-rt.googleusercontent.com%2Fdocsz%2FAD_4nXfOu4bof4xeDMgHE9hs_lH4sPwIMH4MEabGbsLy2BFmKSxjVkJuPryVaHcRxb_xEqR4dreguugz0Vpvq3bhZMd9ry4NSEba8q5Gvzp36S04nWTiqZNiDzHcyeBdtQqIaibMWFYk%3Fkey%3DzOWCgs-RYSeIo6J5EF_RSGON" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh7-rt.googleusercontent.com%2Fdocsz%2FAD_4nXfOu4bof4xeDMgHE9hs_lH4sPwIMH4MEabGbsLy2BFmKSxjVkJuPryVaHcRxb_xEqR4dreguugz0Vpvq3bhZMd9ry4NSEba8q5Gvzp36S04nWTiqZNiDzHcyeBdtQqIaibMWFYk%3Fkey%3DzOWCgs-RYSeIo6J5EF_RSGON" alt="Lusha Landing Page" width="800" height="445"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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 LinkedIn or integrate it into your CRM systems like Salesforce and HubSpot.&lt;/p&gt;

&lt;h4&gt;
  
  
  Lusha Pros
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Reasonable pricing for the quality of data it provides.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Interactive dashboard and supports integrations with popular CRM platforms.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Has a chrome extension where you can extract contact data directly from LinkedIn profiles while browsing.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Lusha Cons
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Instances of wrong information being served; posing trust issues.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;LinkedIn's data access limitations, especially with frequent scraping.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  &lt;a href="http://lusha.com/pricing" rel="nofollow noopener noreferrer"&gt;Lusha Pricing&lt;/a&gt;
&lt;/h4&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Plans&lt;/th&gt;
&lt;th&gt;Details&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;td&gt;Free Plan Available ✅ (50 emails/5 phone numbers)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Basic Paid&lt;/td&gt;
&lt;td&gt;$49/person/mo&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;High-end paid&lt;/td&gt;
&lt;td&gt;Customizable usage and price&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Note:&lt;/strong&gt; You cannot sign up with a personal email. Signups are only validated using work emails.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  18. &lt;a href="&amp;lt;https://www.apollo.io/&amp;gt;%22%20rel='nofollow'&amp;gt;Apollo.io&amp;lt;/a&amp;gt;%0A&amp;lt;/h3&amp;gt;%0A%0A&amp;lt;p&amp;gt;&amp;lt;img%20src=" alt="Apollo.io Landing Page"&gt;&lt;/a&gt;

&lt;/h3&gt;

&lt;p&gt;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 LinkedIn, 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.&lt;/p&gt;

&lt;h4&gt;
  
  
  Apollo.io Pros
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;65+ advanced search filters.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Serious automation features; Almost every repetitive sales and marketing tasks can be automated.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Seamless integration with CRMs like Salesforce for workflow efficiency.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Apollo.io Cons
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Full-on automation poses a risk of losing personal touch.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;High tier pricing, hard to access for small businesses and startups.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Instances of outdated or incorrect data despite regular updates.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  &lt;a href="&amp;lt;https://www.apollo.io/pricing&amp;gt;%22%20rel='nofollow'&amp;gt;Apollo.io%20Pricing&amp;lt;/a&amp;gt;%0A&amp;lt;/h4&amp;gt;%0A%0A&amp;lt;table&amp;gt;&amp;lt;thead&amp;gt;%0A&amp;lt;tr&amp;gt;%0A&amp;lt;th%20style="&gt;Plans
&lt;/a&gt;&lt;th&gt;Details&lt;/th&gt;

&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;td&gt;Free Plan Available ✅&lt;br&gt; 1,200 credits/year&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Basic Paid&lt;/td&gt;
&lt;td&gt;$59/person/mo&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;High-end Paid&lt;/td&gt;
&lt;td&gt;$149/person/mo&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;

&lt;/h4&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Note:&lt;/strong&gt; You cannot sign up with a personal email. Signups are only validated using work emails.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  19. &lt;a href="&amp;lt;https://www.uplead.com/&amp;gt;%22%20rel='nofolloe'&amp;gt;UpLead&amp;lt;/a&amp;gt;%0A&amp;lt;/h3&amp;gt;%0A%0A&amp;lt;p&amp;gt;&amp;lt;img%20src=" alt="UpLead Landing Page"&gt;&lt;/a&gt;

&lt;/h3&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h4&gt;
  
  
  UpLead Pros
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Excellent tracking of lookups.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Credits are only charged for verified email addresses.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;One stop solution; enriches profiles with important fields that cut down the need for prospecting.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  UpLead Cons
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;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.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The database lacks in volume in contrast to its cost.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  &lt;a href="&amp;lt;https://www.uplead.com/pricing/&amp;gt;%22%20rel='nofollow'&amp;gt;UpLead%20Pricing&amp;lt;/a&amp;gt;%0A&amp;lt;/h4&amp;gt;%0A%0A&amp;lt;table&amp;gt;&amp;lt;thead&amp;gt;%0A&amp;lt;tr&amp;gt;%0A&amp;lt;th%20style="&gt;Pricing
&lt;/a&gt;&lt;th&gt;Details&lt;/th&gt;

&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;td&gt;7 day free trial available ✅ &lt;br&gt; 5 credits&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Basic Paid&lt;/td&gt;
&lt;td&gt;$99/mo&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;High-end Paid&lt;/td&gt;
&lt;td&gt;Customizable usage and pricing&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;

&lt;/h4&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Note:&lt;/strong&gt; Free trials require credit card information to activate.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  20. &lt;a href="&amp;lt;https://www.lemlist.com/&amp;gt;%22%20rel='nofollow'&amp;gt;Lemlist&amp;lt;/a&amp;gt;%0A&amp;lt;/h3&amp;gt;%0A%0A&amp;lt;p&amp;gt;&amp;lt;img%20src=" alt="Lemlist Landing Page"&gt;&lt;/a&gt;

&lt;/h3&gt;

&lt;p&gt;A platform renowned for its exemplary interface, Lemlist is an email outreach and sales engagement platform, revolutionizing personalized outreach, deliverability, and multi-channel prospecting.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h4&gt;
  
  
  💻 We built a Lemlist Clone App, with the full source code, check it out here: I Built a Lemlist Clone App That Personalizes My Email List at Scale
&lt;/h4&gt;

&lt;h4&gt;
  
  
  Lemlist Pros
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;A complete email solution with email templates, personalization options, automation and sequencing features with A/B testing.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Platform specific features like Lemwarm and cockpit management make it unique.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Lemlist Cons
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Customer reviews are mixed; grievances about online customer support, billing, refunds, software crashes and bugs.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The platform lacks tagging features and inaccurate email tracking.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  &lt;a href="&amp;lt;https://www.lemlist.com/pricing&amp;gt;%22%20rel='nofollow'&amp;gt;%20Lemlist%20Pricing&amp;lt;/a&amp;gt;%0A&amp;lt;/h4&amp;gt;%0A%0A&amp;lt;table&amp;gt;&amp;lt;thead&amp;gt;%0A&amp;lt;tr&amp;gt;%0A&amp;lt;th%20style="&gt;Pricing
&lt;/a&gt;&lt;th&gt;Details&lt;/th&gt;

&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;td&gt;14 Day Free Trial ✅&lt;br&gt; 100 free verified emails&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Basic Plan&lt;/td&gt;
&lt;td&gt;$39/person/mo&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;High-end Plan&lt;/td&gt;
&lt;td&gt;$159/person/mo&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;

&lt;/h4&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Note:&lt;/strong&gt; You cannot sign up with a personal email. Signups are only validated using work emails.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  21. &lt;a href="&amp;lt;https://snov.io/&amp;gt;%22%20rel='nofollow'&amp;gt;Snov.io&amp;lt;/a&amp;gt;%0A&amp;lt;/h3&amp;gt;%0A%0A&amp;lt;p&amp;gt;&amp;lt;img%20src=" alt="Snov.io Landing Page"&gt;&lt;/a&gt;

&lt;/h3&gt;

&lt;p&gt;My final entry for the lead generation and email discovery LinkedIn 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 LinkedIn and find your prospects, their email addresses, and make lead generation seamless.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh7-rt.googleusercontent.com%2Fdocsz%2FAD_4nXfnrMQLeKFEJOxO_wHwJ_z2dXV2_7YaagX-sEehQkYpURxJA8wXDj7i-28PZTn7Cv9EVXFKtSz3kTcBUL5XU06SWlpEv233gI0PZlFMl6nT8hQR0eZiSgJsFfZkRHZPqRC2nFCPtw%3Fkey%3DzOWCgs-RYSeIo6J5EF_RSGON" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh7-rt.googleusercontent.com%2Fdocsz%2FAD_4nXfnrMQLeKFEJOxO_wHwJ_z2dXV2_7YaagX-sEehQkYpURxJA8wXDj7i-28PZTn7Cv9EVXFKtSz3kTcBUL5XU06SWlpEv233gI0PZlFMl6nT8hQR0eZiSgJsFfZkRHZPqRC2nFCPtw%3Fkey%3DzOWCgs-RYSeIo6J5EF_RSGON" alt="Snov.io Dashboard and Extention" width="800" height="479"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h4&gt;
  
  
  Snov.io Pros
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;In-platform guides and tutorials are easy to follow through&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Efficient lead generation process (Platform + Extension)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Snov.io Cons
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;No refunds.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;For a LinkedIn scraper, it is weird the email finder doesn't work on LinkedIn.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  &lt;a href="&amp;lt;https://snov.io/pricing&amp;gt;%22%20rel='nofollow'&amp;gt;Snov.io%20Pricing&amp;lt;/a&amp;gt;%0A&amp;lt;/h4&amp;gt;%0A%0A&amp;lt;table&amp;gt;&amp;lt;thead&amp;gt;%0A&amp;lt;tr&amp;gt;%0A&amp;lt;th%20style="&gt;Plans
&lt;/a&gt;&lt;th&gt;Details&lt;/th&gt;

&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;td&gt;Free Plan Available ✅ &lt;br&gt; 50 credits &amp;amp; 100 email receipts&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Basic Paid&lt;/td&gt;
&lt;td&gt;$39/mo&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;High-end Paid&lt;/td&gt;
&lt;td&gt;Customizable usage and pricing&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;h2&gt;
  
  
  Data Aggregation and Analytics LinkedIn Scrapers
&lt;/h2&gt;

&lt;/h4&gt;

&lt;p&gt;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 LinkedIn 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. &lt;/p&gt;

&lt;p&gt;If you are in human resources or market research for a firm, this category of LinkedIn scrapers might appeal to you.&lt;/p&gt;

&lt;h3&gt;
  
  
  22. &lt;a href="&amp;lt;https://www.reveliolabs.com/&amp;gt;%22%20rel='nofollow'&amp;gt;Revelio%20Labs&amp;lt;/a&amp;gt;%0A&amp;lt;/h3&amp;gt;%0A%0A&amp;lt;p&amp;gt;&amp;lt;img%20src=" alt="Revelio Labs Landing Page"&gt;&lt;/a&gt;

&lt;/h3&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh7-rt.googleusercontent.com%2Fdocsz%2FAD_4nXfsGyZXji9m-KvcZWKIYnXaJQizXIHw31wY5nMdW43me7TwP0T9NVwPimbzaI94EMhCwVnn_Y-MOg3qZRJK4NpHOK7577ZB4T0H2OwtYx6auunlxkxAQzxG2CH8jHOTdf97eh7pQw%3Fkey%3DzOWCgs-RYSeIo6J5EF_RSGON" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh7-rt.googleusercontent.com%2Fdocsz%2FAD_4nXfsGyZXji9m-KvcZWKIYnXaJQizXIHw31wY5nMdW43me7TwP0T9NVwPimbzaI94EMhCwVnn_Y-MOg3qZRJK4NpHOK7577ZB4T0H2OwtYx6auunlxkxAQzxG2CH8jHOTdf97eh7pQw%3Fkey%3DzOWCgs-RYSeIo6J5EF_RSGON" alt="Revelio Labs Dashboard" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h4&gt;
  
  
  Revelio Labs Pros
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Comprehensive workforce analytics, tailored for enterprise needs.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Predictive insights give a competitive edge in talent acquisition.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Detailed historical data for benchmarking and trend analysis.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Revelio Labs Cons
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;No transparent pricing details available.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Limited to only providing workforce data and lacks broader B2B data.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Revelio Labs Pricing
&lt;/h4&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h3&gt;
  
  
  23. &lt;a href="&amp;lt;https://www.xverum.com/&amp;gt;%22%20rel='nofollow'&amp;gt;Xverum&amp;lt;/a&amp;gt;%0A&amp;lt;/h3&amp;gt;%0A%0A&amp;lt;p&amp;gt;&amp;lt;img%20src=" alt="Xverum Landing Page"&gt;&lt;/a&gt;

&lt;/h3&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;Not much data is available on Xverum. Customer reviews online are not large enough to hold as reference.&lt;/p&gt;

&lt;h4&gt;
  
  
  Xverum Pros
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;They offer robust API options, enabling smooth integration into marketing and sales tools.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Extensive targeting options, supporting businesses in building segmented, tailored lists.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Xverum Cons
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Xverum does not publish its pricing structure openly, which can make budgeting and cost comparison challenging.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Data update periods are not transparent; businesses that rely on highly current data might need a provider with &lt;a href="https://nubela.co/blog/how-fresh-are-profiles-returned-by-proxycurl-api/?utm_campaign=content_amplification&amp;amp;utm_source=dev.to&amp;amp;utm_medium=social&amp;amp;utm_content=post_link"&gt;data freshness guarantee&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Xverum Pricing
&lt;/h4&gt;

&lt;p&gt;No free trials and no public pricing available. Their pricing roughly starts from $5,000/year.&lt;/p&gt;

&lt;h3&gt;
  
  
  24. &lt;a href="&amp;lt;https://coresignal.com/&amp;gt;%22%20rel='nofollow'&amp;gt;Coresignal&amp;lt;/a&amp;gt;%0A&amp;lt;/h3&amp;gt;%0A%0A&amp;lt;p&amp;gt;&amp;lt;img%20src=" alt="Coresignal Landing Page"&gt;&lt;/a&gt;

&lt;/h3&gt;

&lt;p&gt;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 LinkedIn, which they either scraped themselves or acquired through third-party means.&lt;/p&gt;

&lt;h4&gt;
  
  
  Coresignal Pros
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Large dataset, aggregates data from a significant number of sources.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Provides a lot of data formats: JSON, Parquet, CSV, Other (upon request).&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Coresignal Cons
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Reports of customers receiving out-dated data. See &lt;a href="https://nubela.co/blog/proxycurl-api-vs-coresignal/#proxycurl-api-vs-coresignal?utm_campaign=content_amplification&amp;amp;utm_source=dev.to&amp;amp;utm_medium=social&amp;amp;utm_content=post_link"&gt;Proxycurl vs. Coresignal&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;"Real-time" API does not return data immediately.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  &lt;a href="&amp;lt;https://coresignal.com/pricing/&amp;gt;%22%20rel='nofollow'&amp;gt;Coresignal%20Pricing&amp;lt;/a&amp;gt;%0A&amp;lt;/h4&amp;gt;%0A%0A&amp;lt;table&amp;gt;&amp;lt;thead&amp;gt;%0A&amp;lt;tr&amp;gt;%0A&amp;lt;th%20style="&gt;Plans
&lt;/a&gt;&lt;th&gt;Details&lt;/th&gt;

&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;td&gt;Free Plan Available ✅&lt;br&gt; 200 Collect credits &amp;amp; 400 Search credits&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Basic Paid&lt;/td&gt;
&lt;td&gt;$49/mo&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;High-end Paid&lt;/td&gt;
&lt;td&gt;$1,500/mo&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;h3&gt;
  
  
  25. &lt;a href="&amp;lt;https://www.talentneuron.com/&amp;gt;%22%20rel='nofollow'&amp;gt;TalentNeuron&amp;lt;/a&amp;gt;%0A&amp;lt;/h3&amp;gt;%0A%0A&amp;lt;p&amp;gt;&amp;lt;img%20src=" alt="TalentNeuron Landing Page"&gt;&lt;/a&gt;

&lt;/h3&gt;
&lt;/h4&gt;

&lt;p&gt;TalentNeuron is another workforce analytics platform that offers insights into labor market trends, talent availability, and workforce planning. It combines LinkedIn 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.&lt;/p&gt;

&lt;h4&gt;
  
  
  TalentNeuron Pros
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Combines LinkedIn data with third-party sources for deeper insights.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Great for teams/departments planning workforce expansions and recruitment strategies.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  TalentNeuronCons
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Lacks direct data download options like other competing tools.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  TalentNeuron Pricing
&lt;/h4&gt;

&lt;p&gt;The pricing information is not publicly available and you need to contact their sales team to sign up. No free trials either.&lt;/p&gt;

&lt;h3&gt;
  
  
  26. &lt;a href="&amp;lt;https://www.seekout.com/&amp;gt;%22%20rel='nofollow'&amp;gt;SeekOut&amp;lt;/a&amp;gt;%0A&amp;lt;/h3&amp;gt;%0A%0A&amp;lt;p&amp;gt;&amp;lt;img%20src=" alt="SeekOut Landing Page"&gt;&lt;/a&gt;

&lt;/h3&gt;

&lt;p&gt;SeekOut combines LinkedIn 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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h4&gt;
  
  
  SeekOut Pros
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Advanced diversity filters make it stand out in hiring analytics; it can find talent even among your existing team.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;AI powered search-engine like platform.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  SeekOut Cons
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Data heavily leaning towards the US and Canada.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Limited use cases beyond recruitment.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  &lt;a href="&amp;lt;https://www.seekout.com/pricing&amp;gt;%22%20rel='nofollow'&amp;gt;SeekOut%20Pricing&amp;lt;/a&amp;gt;%0A&amp;lt;/h4&amp;gt;%0A%0A&amp;lt;p&amp;gt;They%20have%20their%20plans%20drawn%20out%20on%20their%20website%20but%20to%20get%20the%20pricing%20details,%20you%20will%20have%20to%20contact%20them.%20Their%20plans%20roughly%20start%20from%20$499/mo.%20No%20free%20trails%20available.&amp;lt;/p&amp;gt;%0A&amp;lt;h3&amp;gt;%0A%20%20&amp;lt;a%20name="&gt;
  &lt;/a&gt;
  27. &lt;a href="&amp;lt;https://rival-hr.com/entelo-recruit/&amp;gt;%22%20rel='nofollow'&amp;gt;Entelo&amp;lt;/a&amp;gt;%0A&amp;lt;/h3&amp;gt;%0A%0A&amp;lt;p&amp;gt;&amp;lt;img%20src=" alt="Entelo Landing Page"&gt;&lt;/a&gt;

&lt;/h4&gt;

&lt;p&gt;Entelo is my last rendition of data analytics Linkedin 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.&lt;/p&gt;

&lt;h4&gt;
  
  
  Entelo Pros
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Predictive recruiting tools streamline proactive hiring efforts.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Simple UI and strong ATS integration simplifies recruitment workflows.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Entelo Cons
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Limited in scalability compared to tools like Revelio Labs or Xverum.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Entelo Pricing
&lt;/h4&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h2&gt;
  
  
  No-Code LinkedIn Scrapers
&lt;/h2&gt;

&lt;p&gt;I'm here to let you know, anyone can scrape LinkedIn. Yes, even if you have 0 coding experience.&lt;/p&gt;

&lt;p&gt;No-code LinkedIn 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 LinkedIn efficiently.&lt;/p&gt;

&lt;h3&gt;
  
  
  28. &lt;a href="&amp;lt;https://www.octoparse.com/&amp;gt;%22%20rel='nofollow'&amp;gt;OctoParse&amp;lt;/a&amp;gt;%0A&amp;lt;/h3&amp;gt;%0A%0A&amp;lt;p&amp;gt;&amp;lt;img%20src=" alt="OctoParse Landing Page"&gt;&lt;/a&gt;

&lt;/h3&gt;

&lt;p&gt;Behold, the first no-code LinkedIn scraper on the list, Octoparse. A multi-purpose tool that can scrape LinkedIn 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.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh7-rt.googleusercontent.com%2Fdocsz%2FAD_4nXcnS7hsXmQZtjk5i76h5idcqMCwZ_RZjpDWKHNeGB7Huk_vD3lIFuy4_nIVqZHMGAS_lgJxuPdP1b6-OD8Rzz1OJXL6FiPgv2VSXNt51RuFhZsf7F1PpOxbBVg26LKxVdIu3zbn%3Fkey%3DzOWCgs-RYSeIo6J5EF_RSGON" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh7-rt.googleusercontent.com%2Fdocsz%2FAD_4nXcnS7hsXmQZtjk5i76h5idcqMCwZ_RZjpDWKHNeGB7Huk_vD3lIFuy4_nIVqZHMGAS_lgJxuPdP1b6-OD8Rzz1OJXL6FiPgv2VSXNt51RuFhZsf7F1PpOxbBVg26LKxVdIu3zbn%3Fkey%3DzOWCgs-RYSeIo6J5EF_RSGON" alt="OctoParse's LinkedIn Job Scraper" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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 Linkedin Job Scraper template allows you to pull job information like job title and description from a URL.&lt;/p&gt;

&lt;h4&gt;
  
  
  Octoparse Pros
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;An all in one web scraping tool.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Cloud scraping allows tasks to run even when offline.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Octoparse Cons
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Limited scraping capabilities on dynamic LinkedIn data due to platform anti-scraping measures.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Advanced features are primarily available to enterprise-level users.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  &lt;a href="&amp;lt;https://www.octoparse.com/pricing&amp;gt;%22%20rel='nofollow'&amp;gt;Octoparse%20Pricing&amp;lt;/a&amp;gt;%0A&amp;lt;/h4&amp;gt;%0A%0A&amp;lt;table&amp;gt;&amp;lt;thead&amp;gt;%0A&amp;lt;tr&amp;gt;%0A&amp;lt;th%20style="&gt;Plans
&lt;/a&gt;&lt;th&gt;Details&lt;/th&gt;

&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;td&gt;Free Plan Available ✅&lt;br&gt; 10 tasks, 10K data per export.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Basic Paid&lt;/td&gt;
&lt;td&gt;$77/mo&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;High-end Paid&lt;/td&gt;
&lt;td&gt;Customizable usage and pricing&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;h3&gt;
  
  
  29. &lt;a href="&amp;lt;https://brightdata.com/&amp;gt;%22%20rel='nofollow'&amp;gt;Bright%20Data&amp;lt;/a&amp;gt;%0A&amp;lt;/h3&amp;gt;%0A%0A&amp;lt;p&amp;gt;&amp;lt;img%20src=" alt="Bright Data Landing Page"&gt;&lt;/a&gt;

&lt;/h3&gt;
&lt;/h4&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h4&gt;
  
  
  Bright Data Pros
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Reliable and a variety of proxy services: residential proxies, ISP proxies, data center proxies, and mobile proxies.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Data collector and SERP API tools enable you to collect public data in real-time.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You get to build your own scraper!&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Bright Data Cons
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Setting and implementation can take weeks for everything to function properly.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Some proxies are quite expensive and might be beyond budget for startups and small businesses.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  &lt;a href="&amp;lt;https://brightdata.com/pricing/proxy-network?plan=monthly&amp;amp;type=res_rotating&amp;gt;%22%20rel='nofollow'&amp;gt;Bright%20Data%20Pricing&amp;lt;/a&amp;gt;%0A&amp;lt;/h4&amp;gt;%0A%0A&amp;lt;table&amp;gt;&amp;lt;thead&amp;gt;%0A&amp;lt;tr&amp;gt;%0A&amp;lt;th%20style="&gt;Plans
&lt;/a&gt;&lt;th&gt;Tier&lt;/th&gt;
&lt;th&gt;Details&lt;/th&gt;

&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;td&gt;7 Days Free Trial Available ✅&lt;br&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Proxy Infrastructure&lt;/td&gt;
&lt;td&gt;Basic Paid&lt;br&gt;High-end Paid&lt;/td&gt;
&lt;td&gt;$499/mo&lt;br&gt;$1999/mo&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Scraping Automation&lt;/td&gt;
&lt;td&gt;Basic Paid&lt;br&gt;High-end Paid&lt;/td&gt;
&lt;td&gt;$499/mo&lt;br&gt;$1999/mo&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Data and Insights&lt;/td&gt;
&lt;td&gt;Basic Paid&lt;br&gt;High-end Paid&lt;/td&gt;
&lt;td&gt;$500/mo&lt;br&gt;Customizable&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;

&lt;/h4&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Note:&lt;/strong&gt; The pricing plans are anything but simple. There are a lot of subcategories and different pricing points. I suggest you visit the &lt;a href="&amp;lt;https://brightdata.com/pricing/proxy-network?plan=monthly&amp;amp;type=res_rotating&amp;gt;%22%20rel='nofollow'&amp;gt;Bright%20Data%20Pricing&amp;lt;/a&amp;gt;%20page%20to%20get%20a%20better%20look.%20Be%20advised,%20you%20cannot%20sign%20up%20without%20a%20work%20email.&amp;lt;/em&amp;gt;&amp;lt;/p&amp;gt;%0A&amp;lt;h3&amp;gt;%0A%20%20&amp;lt;a%20name="&gt;
  &lt;/a&gt;
  30. &lt;a href="&amp;lt;https://www.parsehub.com/&amp;gt;%22%20rel='nofollow'&amp;gt;ParseHub&amp;lt;/a&amp;gt;%0A&amp;lt;/h3&amp;gt;%0A%0A&amp;lt;p&amp;gt;&amp;lt;img%20src=" alt="ParseHub Landing Page"&gt;&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh7-rt.googleusercontent.com%2Fdocsz%2FAD_4nXfOycjWdawbJskvff821tzVab9BYe-L3-tYNEb-j4hEZrwpFvXH5xWfEKse_tjRiyMGq1rsFsTg8OgZSI2X_Q8KXc2DMBkRpR5oMnf9NBT3LWQNbbdZja5MeRyl-bOpfreIWXG5Gg%3Fkey%3DzOWCgs-RYSeIo6J5EF_RSGON" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh7-rt.googleusercontent.com%2Fdocsz%2FAD_4nXfOycjWdawbJskvff821tzVab9BYe-L3-tYNEb-j4hEZrwpFvXH5xWfEKse_tjRiyMGq1rsFsTg8OgZSI2X_Q8KXc2DMBkRpR5oMnf9NBT3LWQNbbdZja5MeRyl-bOpfreIWXG5Gg%3Fkey%3DzOWCgs-RYSeIo6J5EF_RSGON" alt="ParseHub LinkedIn Scraper" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h4&gt;
  
  
  ParseHub Pros
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Extract data from any website and create custom Excel files.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Smooth and user-friendly interface through a point-and-click method.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Supports cloud storage integration with popular cloud storage services like Dropbox and Amazon S3.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  ParseHub Cons
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Struggles with LinkedIn's anti-bot measures, leading to potential data gaps.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Difficulties in troubleshooting extraction failures or making necessary project adjustments.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Consumes a significant amount of system resources, particularly in the free version.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  &lt;a href="&amp;lt;https://www.parsehub.com/pricing&amp;gt;%22%20rel='nofollow'&amp;gt;ParseHub%20Pricing&amp;lt;/a&amp;gt;%0A&amp;lt;/h4&amp;gt;%0A%0A&amp;lt;table&amp;gt;&amp;lt;thead&amp;gt;%0A&amp;lt;tr&amp;gt;%0A&amp;lt;th%20style="&gt;Plans
&lt;/a&gt;&lt;th&gt;Details&lt;/th&gt;

&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;td&gt;Free Plan Available ✅&lt;br&gt;200 pages of data in 40 mins&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Basic Paid&lt;/td&gt;
&lt;td&gt;$189/mo&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;High-end Paid&lt;/td&gt;
&lt;td&gt;Customizable usage and pricing&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;h3&gt;
  
  
  31. &lt;a href="&amp;lt;https://www.import.io/&amp;gt;%22%20rel='nofollow'&amp;gt;Import.io&amp;lt;/a&amp;gt;%0A&amp;lt;/h3&amp;gt;%0A%0A&amp;lt;p&amp;gt;&amp;lt;img%20src=" alt="Import.io Landing Page"&gt;&lt;/a&gt;

&lt;/h3&gt;
&lt;/h4&gt;

&lt;p&gt;Import.io allows you to pull data from LinkedIn 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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h4&gt;
  
  
  Import.io Pros
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Supports scheduled scraping for regular data updates.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Integrates with data analysis tools like Tableau and Google Sheets.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Strong customer support for troubleshooting issues.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Import.io Cons
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Limited LinkedIn-specific workflows.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Requires manual intervention for highly dynamic LinkedIn pages.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  &lt;a href="&amp;lt;https://www.import.io/pricing&amp;gt;%22%20rel='nofollow'&amp;gt;Import.io%20Pricing&amp;lt;/a&amp;gt;%0A&amp;lt;/h4&amp;gt;%0A%0A&amp;lt;p&amp;gt;Their%20website%20has%20plans%20and%20the%20details%20outlined%20in%20their%20pricing%20page,%20but%20weirdly%20enough%20their%20corresponding%20pricing%20is%20not%20displayed.%20You%20do%20get%20a%2014%20day%20free%20trial%20upon%20signup.&amp;lt;/p&amp;gt;%0A&amp;lt;h2&amp;gt;%0A%20%20&amp;lt;a%20name="&gt;
  &lt;/a&gt;
  How do I find the best LinkedIn Scraper for me?


&lt;/h4&gt;

&lt;p&gt;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 LinkedIn scraper.&lt;/p&gt;

&lt;h3&gt;
  
  
  Technical proficiency
&lt;/h3&gt;

&lt;p&gt;If you're a developer or have a technical background, tools like &lt;a href="https://nubela.co/proxycurl/?utm_campaign=content_amplification&amp;amp;utm_source=dev.to&amp;amp;utm_medium=social&amp;amp;utm_content=post_link"&gt;Proxycurl&lt;/a&gt; or LinkedIn 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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h3&gt;
  
  
  Data depth and freshness
&lt;/h3&gt;

&lt;p&gt;If you're looking for the most recent and in-depth data, &lt;a href="https://nubela.co/proxycurl/?utm_campaign=content_amplification&amp;amp;utm_source=dev.to&amp;amp;utm_medium=social&amp;amp;utm_content=post_link"&gt;Proxycurl&lt;/a&gt; stands out. Especially with its use_cache=if-recent parameter and a &lt;a href="https://nubela.co/blog/how-fresh-are-profiles-returned-by-proxycurl-api/?utm_campaign=content_amplification&amp;amp;utm_source=dev.to&amp;amp;utm_medium=social&amp;amp;utm_content=post_link"&gt;data freshness guarantee&lt;/a&gt; for your peace of mind.&lt;/p&gt;

&lt;p&gt;For more basic data, tools like Dux-Soup and Waalxy might suffice.&lt;/p&gt;

&lt;h3&gt;
  
  
  Purpose
&lt;/h3&gt;

&lt;p&gt;Each category of LinkedIn scrapers serve a different purpose.&lt;/p&gt;

&lt;p&gt;If your focus is on data extraction and enrichment, &lt;a href="https://nubela.co/proxycurl/?utm_campaign=content_amplification&amp;amp;utm_source=dev.to&amp;amp;utm_medium=social&amp;amp;utm_content=post_link"&gt;Proxycurl&lt;/a&gt; offers a comprehensive solution.&lt;/p&gt;

&lt;p&gt;For outreach campaigns, Waalaxy and Octopus CRM are designed with this primary function in mind.&lt;/p&gt;

&lt;p&gt;If email maximization and lead generation is your game, go with Hunter.io or UpLead.&lt;/p&gt;

&lt;h3&gt;
  
  
  Budget
&lt;/h3&gt;

&lt;p&gt;If you're on a tight budget, the open-source options like LinkedIn_Scraper and LinkedIn-API are free.&lt;/p&gt;

&lt;p&gt;For those willing to invest for more features and ease of use, Proxycurl and PhantomBuster offer tiered pricing options.&lt;/p&gt;

&lt;h3&gt;
  
  
  Ease of Use
&lt;/h3&gt;

&lt;p&gt;For a straightforward, user-friendly experience, Waalaxy, Lemlist and ParseHub are designed with simplicity in mind.&lt;/p&gt;

&lt;p&gt;Tools like PhantomBuster and Coresignal might have a steeper learning curve due to their extensive features.&lt;/p&gt;

&lt;h3&gt;
  
  
  Scalability
&lt;/h3&gt;

&lt;p&gt;If you're looking for a tool that can grow with your business, &lt;a href="https://nubela.co/proxycurl/?utm_campaign=content_amplification&amp;amp;utm_source=dev.to&amp;amp;utm_medium=social&amp;amp;utm_content=post_link"&gt;Proxycurl&lt;/a&gt; offers a scalable API that can be integrated into various systems.&lt;/p&gt;

&lt;h2&gt;
  
  
  Is LinkedIn Scraping legal?
&lt;/h2&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;As per LinkedIn's policy, it is very clear that scraping isn't allowed. Using third-party software is strictly prohibited to scrape LinkedIn.&lt;/p&gt;

&lt;p&gt;So, are we working beyond the law?&lt;/p&gt;

&lt;p&gt;Absolutely not. The &lt;a href="&amp;lt;https://www.cantorcolburn.com/news-newsletters-330.html#:~:text=Sign%20Up-,Computer%20Fraud%20and%20Abuse%20Act%20%E2%80%9CScraping%E2%80%9D%20public%20data,probably%20doesn't%20violate%20CFAA&amp;amp;text=The%20U.S.%20Court%20of%20Appeals,and%20Abuse%20Act%20(CFAA)&amp;gt;.%22%20rel='nofollow'&amp;gt;CFAA%20(Computer%20Fraud%20and%20Abuse%20Act)&amp;lt;/a&amp;gt;%20clearly%20mentions,%20scraping%20publicly%20available%20data%20isn't%20considered%20hacking.%20It%20is%20&amp;lt;strong&amp;gt;LEGAL&amp;lt;/strong&amp;gt;%20to%20scrape%20publicly%20available%20data%20in%20LinkedIn,%20if%20you%20are%20doing%20it%20ethically.&amp;lt;/p&amp;gt;%0A%0A&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Bottomline:&amp;lt;/strong&amp;gt;%20Scraping%20data%20is%20against%20LinkedIn's%20terms%20of%20service,%20but%20it%20is%20NOT%20illegal.&amp;lt;/p&amp;gt;%0A%0A&amp;lt;p&amp;gt;Just%20make%20sure%20you%20operate%20under%20their%20policy%20limitations:&amp;lt;/p&amp;gt;%0A%0A&amp;lt;ul&amp;gt;%0A&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Free%20Account:%20Extract%2080%20profiles/day.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;%0A&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;LinkedIn%20Premium%20Account:%20Extract%20150%20profiles/day%20&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;%0A&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Sales%20Navigator%20Account:%20Extract%201000%20profiles/day&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;%0A&amp;lt;/ul&amp;gt;%0A%0A&amp;lt;p&amp;gt;Or%20better%20yet,%20sign%20up%20for%20a%20third%20party%20LinkedIn%20scraper%20(data%20provider%20like%20&amp;lt;a%20href="&gt;Proxycurl&lt;/a&gt;!, and transfer the liability completely.&lt;/p&gt;

&lt;h2&gt;
  
  
  My Recommendation
&lt;/h2&gt;

&lt;p&gt;I've opened the playing field up, so everything is out in the open. My personal recommendation is &lt;a href="https://proxycurl.com/?ref=nubela.co" rel="noopener noreferrer"&gt;Proxycurl&lt;/a&gt;. It stands out (yes out of all these tools) for its versatility, depth of data, and developer-friendly features.&lt;/p&gt;

&lt;p&gt;Obviously, I might be a bit biased, but I back my words with facts.&lt;/p&gt;

&lt;p&gt;With Proxycurl, you won't need any VPNs, proxies, a rotating index of LinkedIn accounts, or anything else. Zero LinkedIn scraping headaches involved!&lt;/p&gt;

&lt;p&gt;You get access to rich B2B data from more data sources than just LinkedIn. We always link it back to a LinkedIn identifier, so it may seem like our API only relies on LinkedIn, but it doesn't.&lt;/p&gt;

&lt;p&gt;That's just a part of the equation and is what often makes our data richer than our competitors.&lt;/p&gt;

&lt;p&gt;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 LinkedIn profiles, and you gain access to even richer data than you could obtain by scraping LinkedIn alone.&lt;/p&gt;

&lt;p&gt;You start off with 100 free credits upon &lt;a href="https://nubela.co/proxycurl/auth/register?ref=nubela.co?utm_campaign=content_amplification&amp;amp;utm_source=dev.to&amp;amp;utm_medium=social&amp;amp;utm_content=post_link"&gt;signup&lt;/a&gt;, so test it out, have a look around. See if I am truly biased or just talking off of facts.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;Your ideal LinkedIn scraper is there to support your purpose. With so many choices available, don't settle for anything less.&lt;/p&gt;

&lt;p&gt;Ready to opt for a scraper without compromises? Sign up with &lt;a href="https://nubela.co/proxycurl/?utm_campaign=content_amplification&amp;amp;utm_source=dev.to&amp;amp;utm_medium=social&amp;amp;utm_content=post_link"&gt;Proxycurl&lt;/a&gt; today!&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQs
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Is it possible to scrape data from LinkedIn?
&lt;/h3&gt;

&lt;p&gt;LinkedIn 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 LinkedIn.&lt;/p&gt;

&lt;h3&gt;
  
  
  How to scrape leads from LinkedIn for free?
&lt;/h3&gt;

&lt;p&gt;Go with open source LinkedIn 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.&lt;/p&gt;

&lt;h3&gt;
  
  
  What is the limit of scraping on LinkedIn?
&lt;/h3&gt;

&lt;p&gt;LinkedIn imposes the following scraping limitations:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;80 profiles/day with a free account&lt;/li&gt;
&lt;li&gt;150 profiles/day with a LinkedIn Premium account.&lt;/li&gt;
&lt;li&gt;1000 profiles/day with a LinkedIn Sales Navigator account.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  How does LinkedIn detect scrapers?
&lt;/h3&gt;

&lt;p&gt;Activities that don’t seem “human” are flagged by LinkedIn’s algorithm. Keep in mind that LinkedIn 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.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can I scrape LinkedIn data without being detected?
&lt;/h3&gt;

&lt;p&gt;Most tools implement techniques like random delays or IP rotation to reduce detection risk. However, no scraper guarantees 100% undetectability, and LinkedIn actively works to detect and block scraping.&lt;/p&gt;

&lt;h3&gt;
  
  
  What should I do if my LinkedIn account gets banned?
&lt;/h3&gt;

&lt;p&gt;If in case your account is banned, contact LinkedIn and plead for reinstatement. Be wary of LinkedIn’s Terms of use and use scrapers with moderation.&lt;/p&gt;

&lt;/strong&gt;&lt;br&gt;
&lt;/h4&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>productivity</category>
      <category>api</category>
    </item>
    <item>
      <title>I Built a Diversity App to Pull Employee Composition of Any Company</title>
      <dc:creator>Proxycurl</dc:creator>
      <pubDate>Tue, 10 Dec 2024 06:55:31 +0000</pubDate>
      <link>https://dev.to/proxycurl/i-built-a-diversity-app-to-pull-employee-composition-of-any-company-5d5</link>
      <guid>https://dev.to/proxycurl/i-built-a-diversity-app-to-pull-employee-composition-of-any-company-5d5</guid>
      <description>&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;As a developer, I spearheaded that challenge and coded a full interactive widget that takes a company's LinkedIn 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.&lt;/p&gt;

&lt;p&gt;Here's the final product:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6r2cdbr4etqb5p3lgg6d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6r2cdbr4etqb5p3lgg6d.png" alt="Employee Composition" width="800" height="632"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Note:&lt;/strong&gt;&lt;/em&gt; &lt;em&gt;Find the full code on our&lt;/em&gt; &lt;a href="https://github.com/nubelaco/use-case-examples/tree/main/employee-composition" rel="noopener noreferrer"&gt;&lt;em&gt;GitHub repo&lt;/em&gt;&lt;/a&gt;&lt;em&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;The app will display your company's employee composition based on a company's LinkedIn profile URL. Specifically,&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Composition by country&lt;/strong&gt; &lt;em&gt;(such as 85% US, 15% UK)&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Composition by job titles&lt;/strong&gt; &lt;em&gt;(such as software engineer, designer, and account executive)&lt;/em&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;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:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Use case 1: for investment teams to identify investment signals&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Let's say you're an early-stage VC firm, you can track startups with &amp;lt;10 employees and monitor for recent fast growth, which suggests that they're doing well and a potential for your investment.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Use case 2: for sales teams to identify buying signals&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  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.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Use case 3: for marketing teams to track competitors' growth strategies&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  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.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Still not convinced? Here's an app demo to give you a push.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftf06g4zb59m7e8zsrfvl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftf06g4zb59m7e8zsrfvl.png" alt="Employee composition" width="594" height="590"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;p&gt;Here's what you'll need to get started:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;A basic aptitude for coding&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Node v18+&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://nubela.co/proxycurl?utm_campaign=content_amplification&amp;amp;utm_source=dev.to&amp;amp;utm_medium=social&amp;amp;utm_content=post_link"&gt;Proxycurl API key&lt;/a&gt; - this is where we will pull the employee data based on their company LinkedIn profile URL&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Basic knowledge of React.js &amp;amp; Next.js&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Basic understanding of Tailwind CSS&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 1: Create a new Next.js project
&lt;/h2&gt;

&lt;p&gt;To start, you’ll need to create the foundation and structure of your app. Set up a new Next.js project.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npx create-next-app@latest employee-composition
cd employee-composition &amp;amp;&amp;amp; npm run dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Next, we’ll install essential UI components.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npx shadcn@latest add button card input
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now that we've set up the core framework and basic UI components, time to build from the bottom up!&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Pulling employee data via API
&lt;/h2&gt;

&lt;p&gt;We will use Proxycurl to pull the entire employee list of a company input by the user. First, sign up for &lt;a href="https://nubela.co/proxycurl/auth/register?utm_campaign=content_amplification&amp;amp;utm_source=dev.to&amp;amp;utm_medium=social&amp;amp;utm_content=post_link"&gt;Proxycurl&lt;/a&gt; and get free credits. Under your dashboard, navigate to &lt;strong&gt;Company Endpoints&lt;/strong&gt;, then find &lt;a href="https://nubela.co/proxycurl/docs#company-api-employee-listing-endpoint?utm_campaign=content_amplification&amp;amp;utm_source=dev.to&amp;amp;utm_medium=social&amp;amp;utm_content=post_link"&gt;&lt;strong&gt;Employee Listing Endpoint&lt;/strong&gt;&lt;/a&gt;. Here’s an example request:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import requests

api_key = 'YOUR_API_KEY'
headers = {'Authorization': 'Bearer ' + api_key}
api_endpoint = 'https://nubela.co/proxycurl/api/linkedin/company/employees/'
params = {
    'url': 'https://www.linkedin.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)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can also choose to automatically enrich employee profiles with other data points using the &lt;code&gt;enrich_profiles = enrich&lt;/code&gt; parameter.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: Create a Next.js API
&lt;/h2&gt;

&lt;p&gt;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 &lt;code&gt;app/api/employeeListing/route.js&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;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;&amp;amp; next_page_url !== 'undefined'
      ? `${next_page_url}&amp;amp;after=${after}&amp;amp;enrich_profiles=enrich`
      : `https://nubela.co/proxycurl/api/linkedin/company/employees/?url=${company_url}&amp;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 });
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step 4: Input company LinkedIn URL
&lt;/h2&gt;

&lt;p&gt;You need to input a LinkedIn company URL to fetch employee data. For this, we’ll use the &lt;code&gt;Input&lt;/code&gt; and &lt;code&gt;Button&lt;/code&gt; components we installed earlier.&lt;/p&gt;

&lt;p&gt;In &lt;code&gt;app/page.js&lt;/code&gt; , add the input &amp;amp; button components from shadcn.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"use client"; 
import { Input } from "@/components/ui/input";
import { Button } from "@/components/ui/button";  

const [companyUrl, setCompanyUrl] = useState("");  
const handleKeyPress = (e) =&amp;gt; {     
    if (e.key === "Enter") {       
      handleSubmit();    
      }  
};

return (   
&amp;lt;div className="mx-auto w-full max-w-2xl min-h-[100vh] flex flex-col p-4"&amp;gt;
    &amp;lt;div className="flex flex-col gap-4 mx-auto w-full sm:flex-row sm:w-auto"&amp;gt;
      &amp;lt;Input
        className="w-full sm:w-96"
        placeholder="LinkedIn Company URL"
        value={companyUrl}
        onChange={(e) =&amp;gt; setCompanyUrl(e.target.value)}
        onKeyPress={handleKeyPress}
      /&amp;gt;
      &amp;lt;Button className="w-full sm:w-auto" onClick={handleSubmit}&amp;gt;
        Submit
      &amp;lt;/Button&amp;gt;
    &amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This creates an input field and a button for submitting the LinkedIn URL. It should look something like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6otjn0gv51ndj5vshx8l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6otjn0gv51ndj5vshx8l.png" alt="Employee Composition" width="800" height="285"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Great! We are halfway there!&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 5: Fetching employee data and handling pagination
&lt;/h2&gt;

&lt;p&gt;Now let's define the &lt;code&gt;handleSubmit&lt;/code&gt; in &lt;code&gt;app/page.js&lt;/code&gt;. The &lt;code&gt;handleSubmit&lt;/code&gt; function triggers the API call. Here’s how it’s implemented in &lt;code&gt;app/page.js&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const handleSubmit = async (e) =&amp;gt; {
    e.preventDefault();
    await fetchEmployeeListing();
};
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;API call done! But what about pagination? The logic here is if there's &lt;code&gt;next_page&lt;/code&gt; URL in the response, we will call that URL until there isn't one, which is indicated by &lt;code&gt;next_page&lt;/code&gt; being &lt;code&gt;null&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;fetchEmployeeListing&lt;/code&gt; function handles API requests, including pagination. If &lt;code&gt;next_page&lt;/code&gt; exists in the response, it fetches data until all pages are retrieved.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const fetchEmployeeListing = async (next_page_url) =&amp;gt; {
    try {
      setIsLoading(true);
      const res = await fetch(
        `/api/employeeListing?company_url=${companyUrl}&amp;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) =&amp;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) =&amp;gt; {
          const country = employee.profile.country_full_name;
          countryCount[country] = (countryCount[country] || 0) + 1;
        });

        const occupationCount = {};

        employeeListing[company_id].employees.forEach((employee) =&amp;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);
    }
  };
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now, it's time to implement the functionality to store the results of the API calls in your local storage:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; const handleSaveQuery = ({ company_id, employees }) =&amp;gt; {
    const storedEmployeeListing =
      JSON.parse(localStorage.getItem("employeeListing")) || [];

    if (storedEmployeeListing[company_id]?.employees?.length &amp;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,
          },
        }),
      );
    }
  };
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step 6: Displaying the data in a pie chart
&lt;/h2&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;For this, we'll use a pie chart component from &lt;a href="https://apexcharts.com/" rel="noopener noreferrer"&gt;ApexCharts&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;First, &lt;code&gt;create app/components/Pie.jsx:&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;'use client';
import React from 'react';
import dynamic from 'next/dynamic';

const Chart = dynamic(() =&amp;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 &amp;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 (
    &amp;lt;div className="w-[500px]"&amp;gt;
      &amp;lt;Chart
        options={options}
        series={data}
        type="pie"
        width="500"
        height="500"
      /&amp;gt;
    &amp;lt;/div&amp;gt;
  );
}

export default PieChart;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;What you'll get is this beautiful pie chart displaying all the data you have, in a slick and visually-aesthetic manner.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F739qntxmpetqq33e3hbj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F739qntxmpetqq33e3hbj.png" alt="Employee Composition" width="800" height="1314"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Congratulations! You now have a working employee composition App.&lt;/p&gt;

&lt;h2&gt;
  
  
  Wrapping Up
&lt;/h2&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;Take the first step. Sign up for &lt;a href="https://nubela.co/proxycurl/auth/register?utm_campaign=content_amplification&amp;amp;utm_source=dev.to&amp;amp;utm_medium=social&amp;amp;utm_content=post_link"&gt;Proxycurl&lt;/a&gt; today!&lt;/p&gt;

&lt;h4&gt;
  
  
  What does diversity cover?
&lt;/h4&gt;

&lt;p&gt;A diverse workforce represents the &lt;strong&gt;a vast&lt;/strong&gt; &lt;strong&gt;range of people.&lt;/strong&gt; People with different nationalities, ethnicities, religions, people with disabilities, and both men and women. It also means valuing and cherishing those differences.&lt;/p&gt;

&lt;h4&gt;
  
  
  How do you align yourself with workplace diversity?
&lt;/h4&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h4&gt;
  
  
  Why do I need an employee composition app?
&lt;/h4&gt;

&lt;p&gt;A commitment to celebrate and embrace diversity is a big reason enough. But if you are looking for more practical use cases:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;For investors&lt;/strong&gt;: Track companies with rapid growth as investment signals.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;For sales teams&lt;/strong&gt;: Identify potential leads based on hiring trends.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;For marketers&lt;/strong&gt;: Monitor competitor strategies based on hiring patterns.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Can the app handle large companies with thousands of employees?&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;Yes, the app supports pagination and retrieves data in batches to manage large datasets efficiently.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>api</category>
      <category>linkedin</category>
    </item>
    <item>
      <title>This Is How I Accessed LinkedIn Sales Navigator API: A Guide</title>
      <dc:creator>Proxycurl</dc:creator>
      <pubDate>Wed, 20 Nov 2024 04:20:43 +0000</pubDate>
      <link>https://dev.to/proxycurl/this-is-how-i-accessed-linkedin-sales-navigator-api-a-guide-19o6</link>
      <guid>https://dev.to/proxycurl/this-is-how-i-accessed-linkedin-sales-navigator-api-a-guide-19o6</guid>
      <description>&lt;p&gt;So you want to rank up your lead generation game. Cut through the noise towards prospects and ideal candidates. Well, LinkedIn Sales Navigator API does just that, and much more.&lt;/p&gt;

&lt;p&gt;Today, I will share how I accessed the LinkedIn 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.&lt;/p&gt;

&lt;p&gt;I'll kick this off with a quick demo on how you can start pulling sales data using LinkedIn Sales Navigator API.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;

&lt;span class="n"&gt;headers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Authorization&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Bearer your_access_token&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;https://api.linkedin.com/v2/salesNavigatorData&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;By the end of this article, you will be able to leverage LinkedIn's professional network (like I did!) and discover a new game changing tool, Proxycurl.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is the LinkedIn Sales Navigator API?
&lt;/h2&gt;

&lt;p&gt;In a sentence, LinkedIn Sales Navigator API is an advanced tool that grants access to LinkedIn's network and professional data. Tapping into that data means you get valuable insights for sales intelligence, lead generation, and market research.&lt;/p&gt;

&lt;p&gt;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 LinkedIn 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.&lt;/p&gt;

&lt;p&gt;With this API, you can:&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Fetch detailed personal and company data&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Personally, this was the reason why I tried the LinkedIn Sales Navigator API. The API allows you to fetch personal and company data from LinkedIn 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.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Data Recency and Sync&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;LinkedIn Sales Navigator API allows you to &lt;a href="https://www.linkedin.com/help/sales-navigator/answer/a106005sync" rel="nofollow noopener noreferrer"&gt;sync&lt;/a&gt; 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.&lt;/p&gt;

&lt;p&gt;What's better, using the real-time data sync feature of LinkedIn Sales Navigator API and synchronizing data directly from search queries, you can always pull the most current and accurate information on your platform.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Advanced Search Option&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;With LinkedIn 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.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Access LinkedIn Sales Navigator API
&lt;/h2&gt;

&lt;p&gt;Accessing the LinkedIn 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.&lt;/p&gt;

&lt;p&gt;Follow these steps to access the tool:&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Step 1: Get the Sales Navigator Subscription&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;The first step is to have an active Sales Navigator subscription. Head on over to &lt;a href="&amp;lt;https://business.linkedin.com/sales-solutions/compare-plans&amp;gt;%22%20rel=%22nofollow%22&amp;gt;Sales%20Navigator%20Subscriptions&amp;lt;/a&amp;gt;%20and%20choose%20one%20of%20their%20paid%20plans.%20You%20need%20to%20pay%20your%20way%20to%20a%20premium%20plan%20for%20access%20advanced%20features%20for%20lead%20generation,%20prospecting,%20and%20sales%20engagement.&amp;lt;/p&amp;gt;%0A&amp;lt;h3&amp;gt;%0A%20%20&amp;lt;a%20name="&gt;
  &lt;/a&gt;
  &lt;strong&gt;Step 2: Apply for API Access&lt;/strong&gt;


&lt;/p&gt;
&lt;p&gt;With a Sales Navigator subscription, you can now apply for API access through LinkedIn's &lt;a href="&amp;lt;https://developer.linkedin.com/&amp;gt;%22%20rel=%22nofollow%22&amp;gt;developer%20platform&amp;lt;/a&amp;gt;.%20Here,%20you%20must%20provide%20a%20detailed%20explanation%20of%20your%20use%20case%20and%20how%20you%20plan%20to%20utilize%20the%20API.&amp;lt;/p&amp;gt;%0A&amp;lt;h3&amp;gt;%0A%20%20&amp;lt;a%20name="&gt;
  &lt;/a&gt;
  &lt;strong&gt;Step 3: Wait for the Approval Process&lt;/strong&gt;


&lt;/p&gt;
&lt;p&gt;Once you have applied for the access, it goes through an approval process. LinkedIn 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.&lt;/p&gt;
&lt;h2&gt;
  
  
  How to Authenticate with LinkedIn Sales Navigator API
&lt;/h2&gt;

&lt;p&gt;Here's how to authenticate with the Sales Navigator API.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;

&lt;span class="c1"&gt;#Function to authenticate and get access token\
&lt;/span&gt;&lt;span class="k"&gt;def&lt;/span&gt;  &lt;span class="nf"&gt;get_access_token&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;client_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;client_secret&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;redirect_uri&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;auth_code&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;\
&lt;span class="n"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://www.linkedin.com/oauth/v2/accessToken&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;\
&lt;span class="n"&gt;params&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;\
 &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;grant_type&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;authorization_code&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;\
 &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;code&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;auth_code&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;\
 &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;redirect_uri&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;redirect_uri&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;\
 &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;client_id&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;client_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;\
 &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;client_secret&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;client_secret&lt;/span&gt;\
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;post&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;\
&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="c1"&gt;# Example usage\
&lt;/span&gt;&lt;span class="n"&gt;client_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;your_client_id&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;\
&lt;span class="n"&gt;client_secret&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;your_client_secret&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;\
&lt;span class="n"&gt;redirect_uri&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;your_redirect_uri&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;\
&lt;span class="n"&gt;auth_code&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;your_auth_code&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;

&lt;span class="n"&gt;access_token&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;get_access_token&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;client_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;client_secret&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;redirect_uri&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;auth_code&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;\
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;access_token&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Pulling Data from LinkedIn Sales Navigator API - A Guide
&lt;/h2&gt;

&lt;p&gt;Due to the access restrictions and limitations, fetching data directly from LinkedIn 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.&lt;/p&gt;

&lt;p&gt;Take a look at this instance, a snippet for retrieving a person profile.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;linkedin_sales_navigator&lt;/span&gt; &lt;span class="c1"&gt;# Assuming a library exists for the API
&lt;/span&gt;
&lt;span class="c1"&gt;#Replace with your access token and person ID\
&lt;/span&gt;&lt;span class="n"&gt;access_token&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;your_linkedin_sales_navigator_access_token&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;\
&lt;span class="n"&gt;person_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;john-doe-123456&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;

&lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;linkedin_sales_navigator&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Client&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;access_token&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;\
&lt;span class="n"&gt;profile_data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get_profile&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;person_id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Returned data may include limited fields based on your access level\
&lt;/span&gt;&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;profile_data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;# This might only contain basic information like name, headline, etc.
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;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:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;name&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;John Doe&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;headline&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Senior Software Engineer at TechCorp&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;linkedin_url&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://linkedin.com/in/john-doe-123456/&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;profile_picture_url&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://media.licdn.com/profile-pic.jpg&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;current_position&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;title&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Senior Software Engineer&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;company_name&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;TechCorp&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;start_date&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;2019-06&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;location&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;San Francisco Bay Area&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;connections_count&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;500&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;summary&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Passionate software engineer with over 7 years of experience in building scalable web applications and AI solutions.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;skills&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Java&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Spring Boot&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Cloud Computing&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Machine Learning&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;But that's not all. Here are a few major things to keep in mind while trying to pull data using LinkedIn Sales Navigator API:&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Define the Scope&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;API Documentation&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Help yourself to the &lt;a href="[https://www.linkedin.com/help/sales-navigator/answer/a526048" rel="nofollow"&gt;LinkedIn Sales Navigator API documentation&lt;/a&gt; to understand the API structure, endpoints, parameters, and best practices.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Rate Limits&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Be mindful of the &lt;a href="https://learn.microsoft.com/en-us/linkedin/shared/api-guide/concepts/rate-limits" rel="nofollow noopener noreferrer"&gt;API rate limits&lt;/a&gt;. 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.&lt;/p&gt;

&lt;h2&gt;
  
  
  Is LinkedIn Sales Navigator API Free?
&lt;/h2&gt;

&lt;p&gt;Just to be clear, LinkedIn 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 LinkedIn's &lt;a href="&amp;lt;https://developer.linkedin.com/&amp;gt;%22%20rel=%22nofollow%22&amp;gt;developer%20support&amp;lt;/a&amp;gt;%20or%20reviewing%20their%20&amp;lt;a%20href=%20"&gt;" rel="nofollow"&amp;gt;API documentation&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Difficulty in Using LinkedIn Sales Navigator API
&lt;/h2&gt;

&lt;p&gt;There are a lot of problems that come with using LinkedIn Sales Navigator API. Some I expected, and some I faced along the way.&lt;/p&gt;

&lt;p&gt;Here are some problems you should look out for:&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Access Restrictions&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;As I stated before, the approval process is a lengthy one. It depends on your application as much as it depends on LinkedIn'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 LinkedIn 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 &lt;a href="&amp;lt;https://developer.linkedin.com/&amp;gt;%22%20rel=%22nofollow%22&amp;gt;API%20access&amp;lt;/a&amp;gt;%20in%20LinkedIn%20for%20more%20information.&amp;lt;/p&amp;gt;%0A&amp;lt;h3&amp;gt;%0A%20%20&amp;lt;a%20name="&gt;
  &lt;/a&gt;
  &lt;strong&gt;API Rate Limits&lt;/strong&gt;


&lt;/p&gt;
&lt;p&gt;I went overboard with my API calls and LinkedIn temporarily shut down my app. There are strict &lt;a href="https://learn.microsoft.com/en-us/linkedin/shared/api-guide/concepts/rate-limits" rel="nofollow noopener noreferrer"&gt;rate limits&lt;/a&gt; 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!&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;
&lt;h3&gt;
  
  
  &lt;strong&gt;Cost&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;You'll need an active &lt;a href="https://business.linkedin.com/sales-solutions/compare-plans" rel="nofollow noopener noreferrer"&gt;Sales Navigator subscription&lt;/a&gt; to access the API. It does not come cheap and so it can be very hard for startups or small businesses.&lt;/p&gt;
&lt;h3&gt;
  
  
  &lt;strong&gt;Technical Complexity and Steep Learning Curve&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Integrating the LinkedIn 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.&lt;/p&gt;
&lt;h2&gt;
  
  
  Enter Proxycurl- The Better Alternative to LinkedIn Sales Navigator API
&lt;/h2&gt;

&lt;p&gt;LinkedIn 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.&lt;/p&gt;

&lt;p&gt;This is where &lt;strong&gt;Proxycurl&lt;/strong&gt; steps in as a superior alternative API solution.&lt;/p&gt;
&lt;h2&gt;
  
  
  What is Proxycurl?
&lt;/h2&gt;

&lt;p&gt;Proxycurl is an API product that allows businesses and developers to pull and enrich professional profile and company data from LinkedIn. 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 LinkedIn Sales Navigator API.&lt;/p&gt;
&lt;h2&gt;
  
  
  Why is Proxycurl better than LinkedIn Sales Navigator API?
&lt;/h2&gt;

&lt;p&gt;Proxycurl is BETTER than LinkedIn Sales Navigator API. Believe me. Let me prove it to you.&lt;/p&gt;
&lt;h3&gt;
  
  
  &lt;strong&gt;No Approval Process&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;You don't have to cast your application and hope you get approved while you're dangling for weeks on end. And LinkedIn'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 &lt;a href="https://nubela.co/proxycurl/auth/register" rel="noopener noreferrer"&gt;signing up&lt;/a&gt; or subscribe to one of the available plans and get your data.&lt;/p&gt;
&lt;h3&gt;
  
  
  &lt;strong&gt;High API Rate Limits&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;In comparison, Proxycurl offers significantly higher rate limits than LinkedIn Sales Navigator API. Pair that up with a high degree of scalability, and you have got yourself a tool that grows alongside you.&lt;/p&gt;
&lt;h3&gt;
  
  
  &lt;strong&gt;Customizable Data Output&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;
&lt;h3&gt;
  
  
  &lt;strong&gt;Transparent Pricing Plans&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Proxycurl's &lt;a href="https://nubela.co/proxycurl/pricing?utm_campaign=content_amplification&amp;amp;utm_source=dev.to&amp;amp;utm_medium=social&amp;amp;utm_content=post_link"&gt;pricing plans&lt;/a&gt; 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 LinkedIn Sales Navigator.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Plans&lt;/th&gt;
&lt;th&gt;LinkedIn Sales Navigator&lt;/th&gt;
&lt;th&gt;Proxycurl&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;td&gt;N/A&lt;/td&gt;
&lt;td&gt;100 free credits upon signup&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Basic Paid&lt;/td&gt;
&lt;td&gt;Core (for individuals)&lt;br&gt;$99/mo&lt;/td&gt;
&lt;td&gt;Starter &lt;br&gt;$49/mo&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;High-end Paid&lt;/td&gt;
&lt;td&gt;Advanced plus (for teams)&lt;br&gt;$1,600 per person/year&lt;/td&gt;
&lt;td&gt;Enterprise &lt;br&gt;&amp;lt;$2,000/year&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;h2&gt;
  
  
  How to pull data using Proxycurl (The Easy Way)
&lt;/h2&gt;

&lt;p&gt;Fetching data with Proxycurl is super simple. All you need is an API key and the target URL.&lt;/p&gt;

&lt;p&gt;Here's a snippet using Proxycurl, doing the same thing as I did with the LinkedIn API, pulling a person profile.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;

&lt;span class="c1"&gt;#Replace with your Proxycurl API key\
&lt;/span&gt;&lt;span class="n"&gt;api_key&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;your_proxycurl_api_key&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;\
&lt;span class="n"&gt;person_linkedin_url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;https://linkedin.com/in/john-doe-123456/&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;

&lt;span class="n"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;https://nubela.co/proxycurl/api/v2/linkedin?url=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;person_linkedin_url&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;\
&lt;span class="n"&gt;headers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Authorization&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Bearer &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;status_code&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;\
&lt;span class="n"&gt;profile_data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;\
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;profile_data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;# This could include richer data depending on Proxycurl's capabilities\
&lt;/span&gt;&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;\
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Error: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;status_code&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And that's it. Here’s what the output from Proxycurl looks like.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;name&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;John Doe&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;headline&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Senior Software Engineer at TechCorp&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;profile_picture_url&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://example.com/profile-pic.jpg&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;linkedin_url&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://linkedin.com/in/john-doe-123456/&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;current_company&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;name&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;TechCorp&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;position&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Senior Software Engineer&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;url&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://linkedin.com/company/techcorp&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;start_date&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;2019-06-01&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;past_companies&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;name&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;WebInnovators&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;position&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Software Engineer&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;start_date&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;2016-08-01&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;end_date&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;2019-05-31&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;],&lt;/span&gt;
  &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;location&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;San Francisco, California, USA&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;education&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;institution&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Stanford University&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;degree&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Master&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;s in Computer Science&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;start_date&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;2012-09-01&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;end_date&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;2014-06-01&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;],&lt;/span&gt;
  &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;skills&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Python&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Java&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;AWS&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Machine Learning&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
  &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;contact_info&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;email&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;john.doe@example.com&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;phone&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;+1-234-567-8901&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;last_activity&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;date&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;2023-10-15&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Excited to announce the launch of our new AI-powered platform at TechCorp!&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;remaining_data&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;null&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;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.&lt;/p&gt;

&lt;h2&gt;
  
  
  Proxycurl API vs LinkedIn Sales Navigator API- A Summary
&lt;/h2&gt;

&lt;p&gt;Let's bring these two API solutions head-to-head and see the difference.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Feature&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;LinkedIn Sales Navigator API&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Proxycurl API&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Access&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Lengthy approval process required&lt;/td&gt;
&lt;td&gt;Instant access with API key&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;API Rate Limits&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Limited number of API calls per day&lt;/td&gt;
&lt;td&gt;High API rate limits for large-scale data pulling&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Customization&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Limited customization for data fields&lt;/td&gt;
&lt;td&gt;Flexible and customizable data output&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Pricing&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Expensive, tiered pricing model&lt;/td&gt;
&lt;td&gt;Transparent, affordable pricing&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Real-Time Data&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Data may not always be up-to-date&lt;/td&gt;
&lt;td&gt;Accurate, real-time data&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Ease of Use&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Requires complex setup and management&lt;/td&gt;
&lt;td&gt;Easy to use with simple API calls&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Customer Support&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Limited customer support&lt;/td&gt;
&lt;td&gt;Responsive and developer-friendly support&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;The LinkedIn Sales Navigator API is a powerful tool that allows you to harness LinkedIn's vast pool of professional data. Follow along with the steps and you will get your data in no time using LinkedIn 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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;No compromises, just fast and reliable data. Try &lt;a href="https://nubela.co/proxycurl/auth/register" rel="noopener noreferrer"&gt;Proxycurl&lt;/a&gt; today!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>tutorial</category>
      <category>learning</category>
      <category>api</category>
    </item>
    <item>
      <title>The LinkedIn API Pricing Guide You Need And How To Get Access</title>
      <dc:creator>Proxycurl</dc:creator>
      <pubDate>Thu, 31 Oct 2024 04:44:12 +0000</pubDate>
      <link>https://dev.to/proxycurl/the-linkedin-api-pricing-guide-you-need-and-how-to-get-access-1a75</link>
      <guid>https://dev.to/proxycurl/the-linkedin-api-pricing-guide-you-need-and-how-to-get-access-1a75</guid>
      <description>&lt;p&gt;If you're utilizing LinkedIn's professional data for profiles, business information, or job listings, you've undoubtedly encountered the same difficulties that many developers do. LinkedIn APIs come with hefty prices and stringent access limitations, making them a tough nut to crack.&lt;/p&gt;

&lt;p&gt;Having worked in AI training, data processing, and content management, I've seen how these blockers can frustrate even the most data-driven organizations. LinkedIn offers APIs at several pricing points. &lt;strong&gt;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&lt;/strong&gt;. 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 &lt;a href="https://developer.linkedin.com/content/developer/global/en_us/index/partner-programs/apply" rel="noopener noreferrer"&gt;LinkedIn Partner program&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Don’t just hear from me, &lt;a href="https://www.reddit.com/r/SaaS/comments/12xwjft/linkedin_api_access/" rel="noopener noreferrer"&gt;see what some Redditors say too&lt;/a&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Definitely a waste of time. Its almost impossible to get access to their api, unless you are a well stablished business...even then… &lt;em&gt;(Working-Finish-5560)&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;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. &lt;em&gt;(Ian_SalesLynk)&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here’s a quick comparison of the different APIs pricing structure:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;LinkedIn API&lt;/th&gt;
&lt;th&gt;Pricing&lt;/th&gt;
&lt;th&gt;Uses&lt;/th&gt;
&lt;th&gt;Access&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;People Profile API&lt;/td&gt;
&lt;td&gt;(custom plans)&lt;/td&gt;
&lt;td&gt;Retrieve individual LinkedIn profiles, work experiences, skills, etc.&lt;/td&gt;
&lt;td&gt;Requires application and LinkedIn partnership&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Company Profile API&lt;/td&gt;
&lt;td&gt;(custom plans)&lt;/td&gt;
&lt;td&gt;Retrieve company info such as size, industry, employee count&lt;/td&gt;
&lt;td&gt;Requires LinkedIn partnership approval&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Jobs API&lt;/td&gt;
&lt;td&gt;Variable, based on usage volume&lt;/td&gt;
&lt;td&gt;Extract job listings, search for relevant job postings&lt;/td&gt;
&lt;td&gt;Limited to LinkedIn partner integrations&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sales Navigator API&lt;/td&gt;
&lt;td&gt;$99.99 - $149.99 per month (per user)&lt;/td&gt;
&lt;td&gt;Access to advanced search and insights for sales outreach&lt;/td&gt;
&lt;td&gt;Via Sales Navigator subscription&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;But here’s the thing—while LinkedIn APIs can get the job done, their complex pricing and access requirements can be a real headache. That’s where &lt;a href="https://proxycurl.com" rel="noopener noreferrer"&gt;Proxycurl&lt;/a&gt; steps in as a smarter, more affordable alternative. In this article, we’ll dive into the various LinkedIn API pricing tiers, access challenges, and how to set up. &lt;/p&gt;

&lt;h2&gt;
  
  
  Types of LinkedIn APIs/Tiers
&lt;/h2&gt;

&lt;p&gt;Having worked on projects that require precise data handling and integration, I’ve had my fair share of navigating different APIs, including LinkedIn’s. There’s no one-size-fits-all solution here—LinkedIn 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 LinkedIn’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 LinkedIn’s API landscape, so you can see what best fits your needs.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. API for LinkedIn People Profiles
&lt;/h3&gt;

&lt;p&gt;If you need detailed personal data from LinkedIn 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, LinkedIn doesn’t make it simple. To use this API, you’ll need to be part of LinkedIn’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.&lt;/p&gt;

&lt;p&gt;Important information provided:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Name and URL of the profile&lt;/li&gt;
&lt;li&gt;Experience at work and title currently held&lt;/li&gt;
&lt;li&gt;Competencies and recommendations&lt;/li&gt;
&lt;li&gt;History of education&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. API for LinkedIn Company Profiles
&lt;/h3&gt;

&lt;p&gt;The LinkedIn 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 LinkedIn's ecosystem.&lt;/p&gt;

&lt;p&gt;Important information provided:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Name of the company and URL&lt;/li&gt;
&lt;li&gt;Size and Industry&lt;/li&gt;
&lt;li&gt;Trends in employee growth&lt;/li&gt;
&lt;li&gt;Headquarters location&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. API for LinkedIn Jobs
&lt;/h3&gt;

&lt;p&gt;Another valuable resource in LinkedIn’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 LinkedIn’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 LinkedIn, which can be a challenge in itself.&lt;/p&gt;

&lt;p&gt;Important information provided:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Job description and title&lt;/li&gt;
&lt;li&gt;Employer details&lt;/li&gt;
&lt;li&gt;Location and kind of job&lt;/li&gt;
&lt;li&gt;Dates of posting and expiration&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Large corporations may find LinkedIn's Jobs API useful, but smaller companies or developers may find the cost and complexity of integration to be prohibitive.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. API for LinkedIn Marketing
&lt;/h3&gt;

&lt;p&gt;For advertising campaigns, LinkedIn’s Marketing API is your go-to tool. It allows businesses to create, manage, and track the performance of their LinkedIn 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 LinkedIn’s Marketing API isn't as simple as signing up—you need to be a LinkedIn Marketing Partner. Pricing is dynamic, too, often requiring a significant investment to unlock advanced targeting features, especially when aiming for detailed audience segmentation.&lt;/p&gt;

&lt;p&gt;Important information provided:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Developing and overseeing campaigns&lt;/li&gt;
&lt;li&gt;Metrics measuring ad performance (clicks, impressions, etc.)&lt;/li&gt;
&lt;li&gt;Targeting audiences according to industry, job titles, and other factors&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Although this API is necessary for major advertisers, smaller businesses may find it less desirable due to its high cost and limited access. &lt;br&gt;
Individuals looking for more flexible options might face blockers here. &lt;/p&gt;
&lt;h3&gt;
  
  
  5. API for LinkedIn Learning
&lt;/h3&gt;

&lt;p&gt;LinkedIn’s Learning API is designed for those who want to integrate LinkedIn Learning into their own platforms. This is a great tool for companies or educational institutions that want to offer LinkedIn 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 LinkedIn 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.&lt;/p&gt;

&lt;p&gt;Important information provided:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Course descriptions and titles&lt;/li&gt;
&lt;li&gt;Status of enrollment&lt;/li&gt;
&lt;li&gt;Tracking completion&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Although corporate learning platforms and educational institutions generally use this API, its cost and access restrictions make it a niche offering.&lt;/p&gt;
&lt;h2&gt;
  
  
  Details of Each LinkedIn API: Pricing, Uses, Access, and Setup
&lt;/h2&gt;

&lt;p&gt;In this section, we’ll dive deeper into LinkedIn’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.&lt;/p&gt;
&lt;h3&gt;
  
  
  1. LinkedIn People Profile API
&lt;/h3&gt;
&lt;h3&gt;
  
  
  Pricing of this LinkedIn API
&lt;/h3&gt;

&lt;p&gt;The cost of the LinkedIn People Profile API is high. Companies who want access must be a part of LinkedIn'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.&lt;/p&gt;
&lt;h4&gt;
  
  
  Applications:
&lt;/h4&gt;

&lt;p&gt;This API offers comprehensive LinkedIn profile information, such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Complete name&lt;/li&gt;
&lt;li&gt;Position names&lt;/li&gt;
&lt;li&gt;Work experience&lt;/li&gt;
&lt;li&gt;Qualifications and certifications&lt;/li&gt;
&lt;li&gt;Background in education&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Businesses who need detailed information about experts and are concentrating on B2B services, sales prospecting, or talent acquisition should find it suitable.&lt;/p&gt;
&lt;h4&gt;
  
  
  How to Get Access:
&lt;/h4&gt;

&lt;p&gt;Gaining access to the People Profile API is not as straightforward as signing up. You must first apply and be approved as a LinkedIn partner. This process can take several months, and LinkedIn typically selects companies based on their influence and alignment with LinkedIn’s business goals.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Apply to the LinkedIn Marketing Developer Program.&lt;/li&gt;
&lt;li&gt;Await approval from LinkedIn.&lt;/li&gt;
&lt;li&gt;Once approved, you will receive your API key.&lt;/li&gt;
&lt;/ol&gt;
&lt;h4&gt;
  
  
  How to Set Up:
&lt;/h4&gt;

&lt;p&gt;Here’s a simple example of how you’d typically access data via LinkedIn’s People Profile API:&lt;/p&gt;

&lt;p&gt;LinkedIn People Profile API Example (Hypothetical):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;

&lt;span class="n"&gt;API_KEY&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;your_linkedin_api_key&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="n"&gt;person_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;person_profile_id&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;

&lt;span class="n"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://api.linkedin.com/v2/people/&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;person_id&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;

&lt;span class="n"&gt;headers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Authorization&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Bearer &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;API_KEY&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Content-Type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;application/json&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;status_code&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Failed to retrieve profile: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;status_code&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;However, the complex approval process and the expensive pricing make it tough to access the official LinkedIn People Profile API.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. LinkedIn Company Profile API
&lt;/h3&gt;

&lt;h3&gt;
  
  
  Pricing of this LinkedIn API
&lt;/h3&gt;

&lt;p&gt;The Company Profile API is priced higher, starting from $699 per month for basic access, making it one of the most expensive LinkedIn API tiers.&lt;/p&gt;

&lt;h4&gt;
  
  
  Uses:
&lt;/h4&gt;

&lt;p&gt;The Company Profile API allows you to pull detailed information about companies, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Company name&lt;/li&gt;
&lt;li&gt;Industry classification&lt;/li&gt;
&lt;li&gt;Number of employees&lt;/li&gt;
&lt;li&gt;Revenue estimates&lt;/li&gt;
&lt;li&gt;Growth trends&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This API is particularly useful for B2B marketing, sales prospecting, and competitive analysis.&lt;/p&gt;

&lt;h4&gt;
  
  
  How to Get Access:
&lt;/h4&gt;

&lt;p&gt;Similar to the People Profile API, getting access to the Company Profile API requires an application to LinkedIn’s Partner Program. Only approved partners will receive access, and the approval process may take several months.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Apply to the LinkedIn Partner Program.&lt;/li&gt;
&lt;li&gt;Upon approval, LinkedIn will provide your API credentials.&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;
  
  
  How to Set Up:
&lt;/h4&gt;

&lt;p&gt;Below is an example of how to set up the Company Profile API to fetch company data.&lt;/p&gt;

&lt;p&gt;LinkedIn Company Profile API Example (Hypothetical):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;

&lt;span class="n"&gt;API_KEY&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;your_linkedin_api_key&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="n"&gt;company_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;company_profile_id&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;

&lt;span class="n"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://api.linkedin.com/v2/companies/&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;company_id&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;

&lt;span class="n"&gt;headers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Authorization&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Bearer &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;API_KEY&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Content-Type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;application/json&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;status_code&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;company_data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;company_data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Failed to retrieve company profile: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;status_code&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The high price and lengthy access process make Proxycurl’s Company Profile API a more attractive choice for many users.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. LinkedIn Jobs API
&lt;/h3&gt;

&lt;h3&gt;
  
  
  Pricing of this LinkedIn API
&lt;/h3&gt;

&lt;p&gt;LinkedIn's Jobs API pricing varies widely, depending on the number of job listings you’re pulling and whether you’re an approved LinkedIn 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.&lt;/p&gt;

&lt;h4&gt;
  
  
  Uses:
&lt;/h4&gt;

&lt;p&gt;This API is used to fetch job listings, which include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Job titles&lt;/li&gt;
&lt;li&gt;Company details&lt;/li&gt;
&lt;li&gt;Location&lt;/li&gt;
&lt;li&gt;Employment type (full-time, part-time, remote, etc.)&lt;/li&gt;
&lt;li&gt;Posted and expiration dates&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is particularly useful for companies looking to aggregate job data or build job boards.&lt;/p&gt;

&lt;h4&gt;
  
  
  How to Get Access:
&lt;/h4&gt;

&lt;p&gt;Access to the LinkedIn Jobs API also requires becoming part of the Partner Program. This includes signing partner agreements and meeting LinkedIn’s approval criteria.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Apply to LinkedIn’s Partner Program for jobs data.&lt;/li&gt;
&lt;li&gt;Secure approval to receive your API key.&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;
  
  
  How to Set Up:
&lt;/h4&gt;

&lt;p&gt;Here’s how you’d typically set up a connection to LinkedIn’s Jobs API.&lt;/p&gt;

&lt;p&gt;LinkedIn Jobs API Example (Hypothetical):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;

&lt;span class="n"&gt;API_KEY&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;your_linkedin_api_key&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="n"&gt;job_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;job_listing_id&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;

&lt;span class="n"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://api.linkedin.com/v2/jobs/&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;job_id&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;

&lt;span class="n"&gt;headers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Authorization&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Bearer &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;API_KEY&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Content-Type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;application/json&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;status_code&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;job_data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;job_data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Failed to retrieve job listing: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;status_code&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Cons of using the official LinkedIn APIs
&lt;/h2&gt;

&lt;p&gt;While LinkedIn'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 LinkedIn APIs:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Pricing is high
&lt;/h3&gt;

&lt;p&gt;One of the most prominent downsides to using LinkedIn’s APIs is the prohibitive pricing structure. Here’s a breakdown:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;People Profile API: Starting at over $59 per month, this is approximate.&lt;/li&gt;
&lt;li&gt;Company Profile API: Costs upwards of $699 per month, but this is approximate.&lt;/li&gt;
&lt;li&gt;Jobs API: Prices are highly variable, but large enterprises can expect to pay several thousand dollars annually.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For small to mid-sized businesses, or startups with tight budgets, LinkedIn’s API costs can be a significant barrier to entry. &lt;/p&gt;

&lt;h3&gt;
  
  
  2. Restricted Access
&lt;/h3&gt;

&lt;p&gt;Gaining access to LinkedIn’s APIs isn’t as simple as signing up. You need to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Apply to be a LinkedIn partner and get approved, a process that can take months.&lt;/li&gt;
&lt;li&gt;Meet LinkedIn's strict criteria, including alignment with their business goals.&lt;/li&gt;
&lt;li&gt;Partner agreements are required, which adds legal and bureaucratic hurdles.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This makes it difficult for most businesses to even gain access to LinkedIn’s data, slowing down their operations and delaying projects.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Limited Flexibility
&lt;/h3&gt;

&lt;p&gt;LinkedIn’s APIs come with restrictions on data usage:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;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.&lt;/li&gt;
&lt;li&gt;If your business model requires a broader range of data, LinkedIn’s restrictions may limit how much value you can extract from their APIs.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4. Complicated Setup and Integration
&lt;/h3&gt;

&lt;p&gt;Unlike more user-friendly APIs, LinkedIn’s APIs involve complex setups and integrations:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Technical hurdles: Their documentation can be dense and is designed for developers who already have experience with complex API setups.&lt;/li&gt;
&lt;li&gt;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.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For many businesses, this complexity can slow down implementation, adding unnecessary friction to projects.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Long Approval Times
&lt;/h3&gt;

&lt;p&gt;One of the biggest pain points for companies trying to use LinkedIn’s APIs is the long approval process. Gaining access as a LinkedIn 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.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Data Availability &amp;amp; Permissions
&lt;/h3&gt;

&lt;p&gt;LinkedIn’s API restricts access to certain user data based on the platform’s privacy policies and user settings:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You can only retrieve data from users who have allowed API access to their profiles.&lt;/li&gt;
&lt;li&gt;This limits the dataset size, making LinkedIn’s data less useful for large-scale business operations requiring comprehensive data coverage.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  In summary
&lt;/h2&gt;

&lt;p&gt;LinkedIn'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.&lt;/p&gt;

&lt;h2&gt;
  
  
  Proxycurl: the superior alternative
&lt;/h2&gt;

&lt;p&gt;At this point, it’s clear that LinkedIn’s APIs are powerful, but they come at a cost—both in terms of price and access restrictions. Fortunately, there’s &lt;a href="https://proxycurl.com" rel="noopener noreferrer"&gt;Proxycurl&lt;/a&gt;, 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.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Proxycurl stands out
&lt;/h2&gt;

&lt;p&gt;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 LinkedIn’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.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. &lt;a href="https://nubela.co/proxycurl/people-api?utm_campaign=content_amplification&amp;amp;utm_source=dev.to&amp;amp;utm_medium=social&amp;amp;utm_content=post"&gt;Person Profile API&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;LinkedIn’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.&lt;/p&gt;

&lt;p&gt;Proxycurl Person Profile API Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;

&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://nubela.co/proxycurl/api/v2/linkedin&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;url&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://www.linkedin.com/in/xyz&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Authorization&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Bearer &amp;lt;your_api_key&amp;gt;&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With Proxycurl, you simply input the LinkedIn URL, add your API key, and you're done—no cumbersome approval processes or expensive fees.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. &lt;a href="https://nubela.co/proxycurl/linkedin/company?utm_campaign=content_amplification&amp;amp;utm_source=dev.to&amp;amp;utm_medium=social&amp;amp;utm_content=post"&gt;Company Profile API&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;LinkedIn’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 LinkedIn presence—at a fraction of the price. This makes it a more practical solution for businesses looking to gain insights without breaking the bank.&lt;/p&gt;

&lt;p&gt;Proxycurl Company Profile API Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;

&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://nubela.co/proxycurl/api/v2/company&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;domain&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;company.com&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Authorization&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Bearer &amp;lt;your_api_key&amp;gt;&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With just one API call, Proxycurl offers immediate access to the company data you need, without any hidden costs or complicated integrations.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. &lt;a href="https://nubela.co/proxycurl/jobs-api?utm_campaign=content_amplification&amp;amp;utm_source=dev.to&amp;amp;utm_medium=social&amp;amp;utm_content=post"&gt;Jobs API&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;LinkedIn 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 LinkedIn partnership.&lt;/p&gt;

&lt;p&gt;Proxycurl Jobs API Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;

&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://nubela.co/proxycurl/api/v2/job_listing&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;company_domain&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;company.com&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Authorization&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Bearer &amp;lt;your_api_key&amp;gt;&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No hidden fees, no access restrictions—just straightforward, clear job data that you can start using right away.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. &lt;a href="https://nubela.co/proxycurl/contact-api?utm_campaign=content_amplification&amp;amp;utm_source=dev.to&amp;amp;utm_medium=social&amp;amp;utm_content=post"&gt;Contact API&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Need to extract contact details? LinkedIn 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.&lt;/p&gt;

&lt;h2&gt;
  
  
  Proxycurl LinkedIn API pricing
&lt;/h2&gt;

&lt;p&gt;Proxycurl’s pricing is transparent, simply refer to &lt;a href="https://nubela.co/proxycurl/pricing?utm_campaign=content_amplification&amp;amp;utm_source=dev.to&amp;amp;utm_medium=social&amp;amp;utm_content=post"&gt;this pricing page&lt;/a&gt; and you’ll see. It is transparent not just compared to LinkedIn API, but even among &lt;a href="https://nubela.co/blog/reviewing-top-linkedin-scraping-api-services/?utm_campaign=content_amplification&amp;amp;utm_source=dev.to&amp;amp;utm_medium=social&amp;amp;utm_content=post"&gt;other alternatives&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;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 &lt;a href="https://nubela.co/proxycurl/docs#proxycurl-overview?utm_campaign=content_amplification&amp;amp;utm_source=dev.to&amp;amp;utm_medium=social&amp;amp;utm_content=post"&gt;API docs&lt;/a&gt; too.&lt;/p&gt;

&lt;h2&gt;
  
  
  Proxycurl vs. LinkedIn: why choose Proxycurl?
&lt;/h2&gt;

&lt;p&gt;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 LinkedIn’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.&lt;/p&gt;

&lt;p&gt;Ready to stop overpaying and start gathering data efficiently? Try Proxycurl today!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>data</category>
      <category>api</category>
      <category>programming</category>
    </item>
    <item>
      <title>Ultimate Guide To Linkedin Company API, With Full Python Code Samples</title>
      <dc:creator>Proxycurl</dc:creator>
      <pubDate>Wed, 30 Oct 2024 05:39:05 +0000</pubDate>
      <link>https://dev.to/proxycurl/ultimate-guide-to-linkedin-company-api-with-full-python-code-samples-4e4c</link>
      <guid>https://dev.to/proxycurl/ultimate-guide-to-linkedin-company-api-with-full-python-code-samples-4e4c</guid>
      <description>&lt;p&gt;Ever felt like you're navigating a complex maze when working with the &lt;a href="https://learn.microsoft.com/en-us/linkedin/marketing/community-management/organizations/company-search" rel="noopener noreferrer"&gt;LinkedIn Company API&lt;/a&gt;? 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.&lt;/p&gt;

&lt;p&gt;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 LinkedIn data goldmine.&lt;/p&gt;

&lt;p&gt;In this no-BS guide, we're going to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Demystify the LinkedIn Company API (because who doesn't love a good mystery?)
&lt;/li&gt;
&lt;li&gt;Show you how to squeeze every last drop of value from this world's largest B2B platform
&lt;/li&gt;
&lt;li&gt;Introduce you to a game-changing alternative (&lt;a href="https://nubela.co/proxycurl/linkedin/company?utm_campaign=content_amplification&amp;amp;utm_source=dev.to&amp;amp;utm_medium=social&amp;amp;utm_content=post"&gt;Proxycurl Company API&lt;/a&gt;) that'll make you question everything you thought you knew about LinkedIn data access (spoiler alert: it's good)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;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 &lt;a href="https://nubela.co/proxycurl/docs?shell#company-api?utm_campaign=content_amplification&amp;amp;utm_source=dev.to&amp;amp;utm_medium=social&amp;amp;utm_content=post"&gt;lines of code&lt;/a&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;-G&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer demo-bearer-token"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="s1"&gt;'https://nubela.co/proxycurl/api/linkedin/company'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;--data-urlencode&lt;/span&gt; &lt;span class="s1"&gt;'url=https://www.linkedin.com/company/google/'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;--data-urlencode&lt;/span&gt; &lt;span class="s1"&gt;'categories=include'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;--data-urlencode&lt;/span&gt; &lt;span class="s1"&gt;'funding_data=include'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;--data-urlencode&lt;/span&gt; &lt;span class="s1"&gt;'exit_data=include'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;--data-urlencode&lt;/span&gt; &lt;span class="s1"&gt;'acquisitions=include'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;--data-urlencode&lt;/span&gt; &lt;span class="s1"&gt;'extra=include'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;--data-urlencode&lt;/span&gt; &lt;span class="s1"&gt;'use_cache=if-present'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;--data-urlencode&lt;/span&gt; &lt;span class="s1"&gt;'fallback_to_cache=on-error'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Impressed? That's just the appetizer. This snippet showcases the power of a &lt;a href="https://nubela.co/proxycurl?utm_campaign=content_amplification&amp;amp;utm_source=dev.to&amp;amp;utm_medium=social&amp;amp;utm_content=post"&gt;third-party LinkedIn API&lt;/a&gt; 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.&lt;/p&gt;

&lt;p&gt;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 &lt;strong&gt;official LinkedIn Company API&lt;/strong&gt; and &lt;strong&gt;3rd-party APIs like Proxycurl Company API&lt;/strong&gt; and make you, the developer, the API hero your company deserves! Let’s get started!&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Why trust our expertise?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;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 &lt;a href="https://nubela.co/proxycurl?utm_campaign=content_amplification&amp;amp;utm_source=dev.to&amp;amp;utm_medium=social&amp;amp;utm_content=post"&gt;Proxycurl&lt;/a&gt;, we've spent years wrangling with APIs, decoding data structures, and pushing the boundaries of what's possible with LinkedIn data. We're talking about a platform that boasts &lt;a href="https://www.linkedin.com/pulse/important-linkedin-statistics-data-trends-oleksii-bondar-pqlie/" rel="noopener noreferrer"&gt;900+ million users and 58.4+ million companies&lt;/a&gt; - that's the scale of data we're dealing with. Here's why you can trust us:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Battle-tested experience and continuous innovation:&lt;/strong&gt; We didn't stop at understanding LinkedIn's API. When we hit roadblocks, we innovated. &lt;a href="https://nubela.co/proxycurl/team?utm_campaign=content_amplification&amp;amp;utm_source=dev.to&amp;amp;utm_medium=social&amp;amp;utm_content=post"&gt;Our team&lt;/a&gt; has developed cutting-edge solutions to extract, process, and analyze LinkedIn data at scale. This drive for innovation led to the creation of our own Proxycurl API products, which now serves as a &lt;a href="https://nubela.co/blog/top-5-alternatives-to-people-data-labs-in-2023-and-the-one-we-think-is-best/?utm_campaign=content_amplification&amp;amp;utm_source=dev.to&amp;amp;utm_medium=social&amp;amp;utm_content=post"&gt;powerful alternative to LinkedIn's official offerings&lt;/a&gt;.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deep understanding of business needs:&lt;/strong&gt; Our expertise isn't limited to the technical side. We've worked closely with businesses across various industries – from &lt;a href="https://nubela.co/blog/growth-startups-get-leads-receive-funding-hire-talents-scale-fast/?utm_campaign=content_amplification&amp;amp;utm_source=dev.to&amp;amp;utm_medium=social&amp;amp;utm_content=post"&gt;nimble startups&lt;/a&gt; to Fortune 500 giants. This has given us unique insights into how LinkedIn company data can drive real business value, whether it's for lead generation, market analysis, or HR tech solutions.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But don't just take my word for it. Here's a quick success story:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;A game-changer in the HR tech domain:&lt;/strong&gt; An HR tech startup struggled with LinkedIn's API limitations for their AI-driven recruitment platform. After switching to &lt;a href="https://nubela.co/proxycurl/linkedin?utm_campaign=content_amplification&amp;amp;utm_source=dev.to&amp;amp;utm_medium=social&amp;amp;utm_content=post"&gt;Proxycurl's API&lt;/a&gt;, they got:

&lt;ul&gt;
&lt;li&gt;Access to rich company profiles, including detailed information on company size, industry, and recent hires
&lt;/li&gt;
&lt;li&gt;40% increase in successful placements
&lt;/li&gt;
&lt;li&gt;60% reduction in data acquisition costs
&lt;/li&gt;
&lt;li&gt;Significantly more accurate candidate-company matches&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;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).&lt;/p&gt;

&lt;p&gt;So, as we dive deeper into the world of LinkedIn 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.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Two types of LinkedIn Company APIs&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Before we dive in, let's set the scene. In the realm of LinkedIn Company APIs, there are two distinct territories:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;The Official LinkedIn Company API&lt;/strong&gt;: The gated community, where only the chosen few (LinkedIn Partners) get to play.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;3rd-party LinkedIn Company APIs&lt;/strong&gt;: The wild west, where alternative solutions like &lt;a href="https://nubela.co/proxycurl" rel="noopener noreferrer"&gt;Proxycurl&lt;/a&gt; roam free for those locked out of the official party. Want to cut to the chase and skip to the good part? &lt;a href="https://nubela.co/blog/ultimate-guide-to-linkedin-company-api/#enter-proxycurl-a-game-changing-alternative-to-the-official-linkedin-company-api?utm_campaign=content_amplification&amp;amp;utm_source=dev.to&amp;amp;utm_medium=social&amp;amp;utm_content=post"&gt;Click here to jump to the Proxycurl's LinkedIn Company API section&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;The official LinkedIn Company API&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Alright, fellow data enthusiasts, it's time to pull back the curtain on the official LinkedIn 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!&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;What is the official LinkedIn Company API?&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;In simple terms, the official LinkedIn Company API is a set of programmatic interfaces that allow developers to &lt;strong&gt;access and retrieve data about companies listed on LinkedIn&lt;/strong&gt;. It's like having a direct line to LinkedIn's vast database of corporate information, but with some rules and limitations (we'll get to those later, don't worry).&lt;/p&gt;

&lt;h3&gt;
  
  
  Five key features of the LinkedIn Company API
&lt;/h3&gt;

&lt;p&gt;Now, what can you actually do with this API? Let's break it down:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Company profile retrieval:&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Basic company information (name, website, industry, etc.)
&lt;/li&gt;
&lt;li&gt;Company size and employee count
&lt;/li&gt;
&lt;li&gt;Headquarters location and other office locations
&lt;/li&gt;
&lt;li&gt;Founded year and company type
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Follower statistics:&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total follower count
&lt;/li&gt;
&lt;li&gt;Follower demographics (limited)
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Updates and content:&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Recent company updates
&lt;/li&gt;
&lt;li&gt;Shared content statistics
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Job postings:&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Current job openings (with limitations)
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Insights (for select partners):&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Page analytics
&lt;/li&gt;
&lt;li&gt;Follower gains&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;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. LinkedIn 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).&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Who can benefit and how? Six quick use cases&lt;/strong&gt;
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;User Group&lt;/th&gt;
&lt;th&gt;Use Cases&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Developers and software engineers&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;- Building company research tools &lt;br&gt;- Integrating LinkedIn data into existing applications &lt;br&gt;- Creating custom dashboards for business intelligence&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Data scientists&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;- Analyzing company growth trends &lt;br&gt;- Performing industry-wide comparisons &lt;br&gt;- Building predictive models for business performance&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;HR and recruitment professionals&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;- Enhancing applicant tracking systems with company data &lt;br&gt;- Researching potential employers for candidates &lt;br&gt;- &lt;a href="https://nubela.co/blog/the-proxycurl-success-story-hiring-a-marketing-manager-through-automated-recruitment-and-executive-search/?utm_campaign=content_amplification&amp;amp;utm_source=dev.to&amp;amp;utm_medium=social&amp;amp;utm_content=post"&gt;Identifying companies with recent growth for targeted recruiting&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Sales and marketing teams&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;- &lt;a href="https://nubela.co/blog/crm-data-enrichment-the-easiest-way-to-increase-your-sales-conversion-rates/?utm_campaign=content_amplification&amp;amp;utm_source=dev.to&amp;amp;utm_medium=social&amp;amp;utm_content=post"&gt;Enriching CRM data with up-to-date company information&lt;/a&gt; &lt;br&gt;- Identifying potential leads based on company characteristics &lt;br&gt;- Creating targeted marketing campaigns based on company insights&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Business strategists and consultants&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;- Conducting competitive analysis &lt;br&gt;- Identifying potential partners or acquisition targets &lt;br&gt;- &lt;a href="https://nubela.co/proxycurl/solutions/alternative-data-for-investment-firms?utm_campaign=content_amplification&amp;amp;utm_source=dev.to&amp;amp;utm_medium=social&amp;amp;utm_content=post"&gt;Tracking industry trends and company movements&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Entrepreneurs and startup founders&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;- Researching potential competitors or partners &lt;br&gt;- Understanding industry landscapes &lt;br&gt;- &lt;a href="https://nubela.co/blog/growth-startups-get-leads-receive-funding-hire-talents-scale-fast/?utm_campaign=content_amplification&amp;amp;utm_source=dev.to&amp;amp;utm_medium=social&amp;amp;utm_content=post"&gt;Identifying gaps in the market based on company data&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;For a real-world example, let's say you're a developer, and your company is building a B2B sales intelligence platform. With the LinkedIn Company API, you could:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Pull basic company profiles for your leads
&lt;/li&gt;
&lt;li&gt;Track follower growth as a proxy for company popularity or market position
&lt;/li&gt;
&lt;li&gt;Monitor job postings to identify companies in growth phases
&lt;/li&gt;
&lt;li&gt;Analyze recent updates to gauge company activity and focus areas&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Sounds great, right? But here's where it gets tricky. While the LinkedIn 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."&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h3&gt;
  
  
  Four things to know before getting access to the official LinkedIn Company API
&lt;/h3&gt;

&lt;p&gt;Alright, let's talk more about the elephant in the room - actually getting access to the official LinkedIn API. It's like the coolest club in town, but getting past the bouncer? That's where things get very tricky:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Access Restrictions&lt;/strong&gt;: This isn't your average "open to all" API. Nope, it's exclusive to LinkedIn Partners. Think of it as the API world's VIP lounge.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Approval Process&lt;/strong&gt;: 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 &lt;strong&gt;&lt;em&gt;weeks&lt;/em&gt;&lt;/strong&gt; of administrative hurdles and scrutiny.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Competitive Clause&lt;/strong&gt;: Here's the kicker - LinkedIn won't let you in if you're building something that could steal their thunder. Competing with LinkedIn products? Sorry, you're not on the list.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pricing and Cost Consideration&lt;/strong&gt;: LinkedIn 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.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;So, you still want in?&lt;/p&gt;

&lt;h2&gt;
  
  
  1. First, apply to become a LinkedIn Partner
&lt;/h2&gt;

&lt;p&gt;Alright, you brave soul, here are the &lt;strong&gt;3 steps&lt;/strong&gt; on how to get that coveted LinkedIn Partner status to get access to the LinkedIn Company API:&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Step 1: Determining your category&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Talent Solutions&lt;/strong&gt;: For the HR tech wizards out there that integrate with LinkedIn’s hiring and talent acquisition tools.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Marketing Solutions&lt;/strong&gt;: Marketing automation gurus, this one's for you. I mean marketing automation platforms or tools that integrate LinkedIn Ads or company page analytics.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sales Navigator Application Development&lt;/strong&gt;: Sales tech innovators, step right up. Companies building on top of LinkedIn’s sales and business development tools (Sales Navigator).
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;LinkedIn Learning Integration&lt;/strong&gt;: E-learning enthusiasts and professional development platforms that might integrate with LinkedIn Learning, come on down!&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Step 2: Preparing your application&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Time to put on your best suit and practice your elevator pitch:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Be crystal clear about how you'll use LinkedIn's data. Vague ideas won't cut it here.
&lt;/li&gt;
&lt;li&gt;Show how you're adding to LinkedIn's ecosystem, not trying to outshine it.
&lt;/li&gt;
&lt;li&gt;Prepare to dazzle them with the value you'll bring to the LinkedIn universe.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Step 3: Submitting your application&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Now, it’s time to head over to the &lt;a href="https://developer.linkedin.com/content/developer/global/en_us/index/partner-programs/apply" rel="noopener noreferrer"&gt;LinkedIn Partner Program page&lt;/a&gt; and lay it all out:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuf7jkbm2e82959wj17sg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuf7jkbm2e82959wj17sg.png" alt="LinkedIn’s Partner Program page showing the partner categories for a new application" width="800" height="561"&gt;&lt;/a&gt;&lt;br&gt;
LinkedIn’s Partner Program page showing the partner categories for a new application&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Choose your category (remember &lt;a href="https://nubela.co/blog/ultimate-guide-to-linkedin-company-api/#step-1-determining-your-category?utm_campaign=content_amplification&amp;amp;utm_source=dev.to&amp;amp;utm_medium=social&amp;amp;utm_content=post"&gt;Step 1&lt;/a&gt;?)
&lt;/li&gt;
&lt;li&gt;Spill the beans about you, your company and your products &lt;/li&gt;
&lt;li&gt;Fill out the application form in detail (remember to paint a vivid picture of your partnership use case)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now, the waiting game begins. And by game, I mean weeks of nail-biting anticipation. Stay on your toes - LinkedIn might come back asking for more info.&lt;/p&gt;

&lt;p&gt;But wait, there's more…&lt;/p&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;2. While waiting, get access to the "Lite" version&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;While you're twiddling your thumbs waiting weeks (or months) for that coveted LinkedIn 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.&lt;/p&gt;

&lt;p&gt;Here are it's &lt;strong&gt;5 steps&lt;/strong&gt;:&lt;/p&gt;
&lt;h3&gt;
  
  
  &lt;strong&gt;Step 1: Creating a LinkedIn Developer account&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Mosey on over to &lt;a href="https://developer.linkedin.com/" rel="noopener noreferrer"&gt;https://developer.linkedin.com/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Sign in or whip up a new account&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  &lt;strong&gt;Step 2: Creating your LinkedIn application&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;After signing in, on the page, click "Create app":&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmfcj2ld3ldvpj56z36m0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmfcj2ld3ldvpj56z36m0.png" alt="Start creating your app here" width="800" height="381"&gt;&lt;/a&gt;&lt;br&gt;
Start creating your app here&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fill in the blanks about your app (make it good!)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Pro Tip:&lt;/strong&gt; Be specific about your use case. LinkedIn 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!&lt;/p&gt;
&lt;h3&gt;
  
  
  &lt;strong&gt;Step 3: Verifying your app&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;After submitting your use case, you need to verify that the app is truly associated with the selected company (your company)
&lt;/li&gt;
&lt;li&gt;Navigate to the "Settings" tab and click on the "Verify" button&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsxxan9ys4rx5294l871i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsxxan9ys4rx5294l871i.png" alt="Verifying your app" width="800" height="509"&gt;&lt;/a&gt;&lt;br&gt;
Verifying your app&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Follow the instructions that come afterward. It's like proving you're really you but for your app!&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  &lt;strong&gt;Step 4: Requesting API access&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;After the verification, you can now proceed with requesting API access
&lt;/li&gt;
&lt;li&gt;Navigate to the "Products" tab
&lt;/li&gt;
&lt;li&gt;Read through the API Terms of Use (yes, actually read it - we know, it's boring, but important!)
&lt;/li&gt;
&lt;li&gt;Finally, select the "Request access" button.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqkxva1mlh8pxfy3jfs5p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqkxva1mlh8pxfy3jfs5p.png" alt="Here you can request to get access to the API" width="800" height="523"&gt;&lt;/a&gt;&lt;br&gt;
Here you can request to get access to the API&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fingers crossed!&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  &lt;strong&gt;Step 5: Getting your API credentials&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Once approved, in the dashboard, you'll get your Client ID and Client Secret:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7e3pxa5r9pxg15tul3or.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7e3pxa5r9pxg15tul3or.png" alt="Finally, you gotten access to the keys" width="800" height="446"&gt;&lt;/a&gt;&lt;br&gt;
Finally, you gotten access to the keys&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;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.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Remember, my friend, while this guide is comprehensive, the official LinkedIn API world is as changeable as a chameleon on a disco floor. Always double-check the &lt;a href="https://learn.microsoft.com/en-us/linkedin/" rel="noopener noreferrer"&gt;official LinkedIn docs&lt;/a&gt; for the latest info. It's like checking the weather before a picnic - better safe than sorry!&lt;/p&gt;
&lt;h2&gt;
  
  
  3. Finally approved, start using the official LinkedIn Company API with Python!
&lt;/h2&gt;

&lt;p&gt;Congratulations! If you're reading this, you've somehow managed to scale the fortress walls of accessing a LinkedIn'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. &lt;strong&gt;Let’s turn that hard-earned access into pure data gold!&lt;/strong&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  &lt;strong&gt;The technical landscape&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Before we dive into the code, let's get our hands dirty with some technical details. After all, knowing is half the battle!&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://learn.microsoft.com/en-us/linkedin/marketing/community-management/organizations/company-search?view=li-lms-2024-09&amp;amp;tabs=http" rel="noopener noreferrer"&gt;&lt;strong&gt;Company Search API&lt;/strong&gt;&lt;/a&gt;: This is your go-to for finding companies using keywords, industry, location, and other criteria. Think of it as LinkedIn's corporate search engine on steroids:

&lt;ul&gt;
&lt;li&gt;Returns a collection of matching companies
&lt;/li&gt;
&lt;li&gt;Each entry can contain an entity field represented by an organization URN (Uniform Resource Name)
&lt;/li&gt;
&lt;li&gt;Supports filters similar to LinkedIn's Search results page
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://oauth.net/2/" rel="noopener noreferrer"&gt;&lt;strong&gt;OAuth 2.0 authentication&lt;/strong&gt;&lt;/a&gt;: LinkedIn's bouncer at the door. Before you can party with the data, you need to get past this guy:

&lt;ul&gt;
&lt;li&gt;Required for member (user) authorization and API authentication
&lt;/li&gt;
&lt;li&gt;Essential for fetching data or accessing member information
&lt;/li&gt;
&lt;li&gt;Most permissions require explicit approval from LinkedIn
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://learn.microsoft.com/en-us/linkedin/shared/authentication/getting-access#open-permissions-consumer" rel="noopener noreferrer"&gt;&lt;strong&gt;Permissions and partner programs&lt;/strong&gt;&lt;/a&gt;:

&lt;ul&gt;
&lt;li&gt;Open Permissions: The public library of LinkedIn APIs - available to all developers without special approval
&lt;/li&gt;
&lt;li&gt;Restricted Permissions: The special collections - require LinkedIn's explicit nod&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Now that we've got the lay of the land, let's roll up our sleeves and dive into the code!&lt;/p&gt;
&lt;h3&gt;
  
  
  &lt;strong&gt;Step 1: Getting your access token function&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;In the API world, access tokens are like VIP passes to an exclusive club. LinkedIn’s Company API uses the &lt;a href="https://learn.microsoft.com/en-us/linkedin/shared/authentication/client-credentials-flow?context=linkedin%2Fcontext&amp;amp;tabs=cURL1" rel="noopener noreferrer"&gt;Client Credential Flow&lt;/a&gt; (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:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;

&lt;span class="c1"&gt;# Your LinkedIn App's Client ID and Client Secret
&lt;/span&gt;&lt;span class="n"&gt;LINKEDIN_CLIENT_ID&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;your_client_id&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;
&lt;span class="n"&gt;LINKEDIN_CLIENT_SECRET&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;your_client_secret&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;get_access_token&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;
    Exchanges LinkedIn app&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;s client credentials for an access token.
    &lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;
    &lt;span class="n"&gt;token_url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;https://www.linkedin.com/oauth/v2/accessToken&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;

    &lt;span class="n"&gt;params&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;grant_type&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;client_credentials&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;client_id&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;LINKEDIN_CLIENT_ID&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;client_secret&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;LINKEDIN_CLIENT_SECRET&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="n"&gt;headers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Content-Type&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;application/x-www-form-urlencoded&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;post&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;token_url&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;status_code&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;access_token&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;access_token&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;access_token&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Access Token acquired: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;access_token&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;access_token&lt;/span&gt;
        &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Access token not found in the response.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;
    &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Error &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;status_code&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;

&lt;span class="c1"&gt;# Get the access token
&lt;/span&gt;&lt;span class="n"&gt;access_token&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;get_access_token&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Pro Tip:&lt;/strong&gt; 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!&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Step 2: Making your API call function&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;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:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;search_companies&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;access_token&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;search_query&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;LinkedIn Corporation&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;filters&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;None&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;
    Search for companies on LinkedIn using the provided access token, query, and optional filters.
    &lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;
    &lt;span class="n"&gt;base_url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;https://api.linkedin.com/v2/companySearch&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;
    &lt;span class="n"&gt;params&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;q&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;search&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;query&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;search_query&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;projection&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;(elements*(entity~(id,name,localizedName,vanityName,logoV2,locations)),paging)&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="c1"&gt;# Add filters if provided
&lt;/span&gt;    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;filters&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;key&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;value&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;filters&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;items&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
            &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="nf"&gt;isinstance&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;list&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
                &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;v&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;enumerate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
                    &lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;filter.&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;key&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;[&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;]&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;v&lt;/span&gt;
            &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
                &lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;filter.&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;key&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;value&lt;/span&gt;

    &lt;span class="n"&gt;headers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Authorization&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Bearer &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;access_token&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;X-Restli-Protocol-Version&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;2.0.0&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="n"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;base_url&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;?&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nf"&gt;urlencode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
    &lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;status_code&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Data successfully retrieved!&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Error &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;status_code&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This &lt;code&gt;search_companies&lt;/code&gt; function will allow us to zoom in on the corporate landscape. Here's what makes it tick:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Query power&lt;/strong&gt;: The &lt;code&gt;search_query&lt;/code&gt; parameter defines the search term. It's like whispering a company name or industry keyword into the API's ear.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Filter finesse&lt;/strong&gt;: The &lt;code&gt;filters&lt;/code&gt; parameter lets us refine our search. Want only tech giants? Or perhaps cozy startups? These filters are our corporate matchmakers.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data projection&lt;/strong&gt;: We're asking for specific company details like &lt;em&gt;name&lt;/em&gt;, &lt;em&gt;vanity name&lt;/em&gt;, &lt;em&gt;logo&lt;/em&gt;, and &lt;em&gt;locations&lt;/em&gt;. It's like customizing our corporate baseball cards.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Error handling&lt;/strong&gt;: We've built in some safeguards. If something goes wrong, the function will let us know, rather than leaving us in the dark.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Flexibility&lt;/strong&gt;: We can easily modify the search query or filters to suit our various needs.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Step 3: Putting it all together&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;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 LinkedIn company search:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;search_companies&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;access_token&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;search_query&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;LinkedIn Corporation&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;filters&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;None&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;
    Search for companies on LinkedIn using the provided access token, query, and optional filters.
    &lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;
    &lt;span class="n"&gt;base_url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;https://api.linkedin.com/v2/companySearch&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;
    &lt;span class="n"&gt;params&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;q&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;search&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;query&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;search_query&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;projection&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;(elements*(entity~(id,name,localizedName,vanityName,logoV2,locations)),paging)&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="c1"&gt;# Add filters if provided
&lt;/span&gt;    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;filters&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;key&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;value&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;filters&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;items&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
            &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="nf"&gt;isinstance&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;list&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
                &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;v&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;enumerate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
                    &lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;filter.&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;key&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;[&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;]&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;v&lt;/span&gt;
            &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
                &lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;filter.&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;key&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;value&lt;/span&gt;

    &lt;span class="n"&gt;headers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Authorization&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Bearer &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;access_token&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;X-Restli-Protocol-Version&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;2.0.0&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="n"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;base_url&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;?&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nf"&gt;urlencode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
    &lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;status_code&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Data successfully retrieved!&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Error &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;status_code&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here, we use the &lt;code&gt;query&lt;/code&gt; parameter to search for companies by keyword. In this case, we're searching for "LinkedIn 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, &lt;a href="https://learn.microsoft.com/en-us/linkedin/marketing/community-management/organizations/company-search?view=li-lms-unversioned&amp;amp;tabs=curl#search-by-filters" rel="noopener noreferrer"&gt;add or remove filters&lt;/a&gt;, and experiment with different &lt;a href="https://learn.microsoft.com/en-us/linkedin/marketing/community-management/organizations/company-search?view=li-lms-unversioned&amp;amp;tabs=curl#parameters" rel="noopener noreferrer"&gt;parameters&lt;/a&gt; to refine your results. Don't be afraid to tweak the code and see what kind of company data you can uncover.&lt;/p&gt;

&lt;p&gt;Remember, when using this API:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;All input is case-insensitive
&lt;/li&gt;
&lt;li&gt;Wildcards and Boolean logic are not supported
&lt;/li&gt;
&lt;li&gt;You should search for only a single company at a time (be aware of &lt;a href="https://learn.microsoft.com/en-us/linkedin/shared/api-guide/concepts/rate-limits" rel="noopener noreferrer"&gt;LinkedIn's API usage limits&lt;/a&gt; and respect them in your code)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For the &lt;a href="https://learn.microsoft.com/en-us/linkedin/marketing/community-management/organizations/company-search?view=li-lms-unversioned&amp;amp;tabs=curl#search-response" rel="noopener noreferrer"&gt;output&lt;/a&gt;, 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!&lt;/p&gt;

&lt;p&gt;And there you have it! You've just made your first call to the LinkedIn Company API. Feel that rush? That's the power of data at your fingertips!&lt;/p&gt;

&lt;p&gt;But wait, there's a plot twist...&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Limitations of this LinkedIn Company API&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;If you’re using this official LinkedIn 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 LinkedIn is notorious with the limitations they placed.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Limitation #1: Rate limits&lt;/strong&gt;
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Daily limits:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;LinkedIn typically caps API calls at around 100,000 per day.
&lt;/li&gt;
&lt;li&gt;Sounds like a lot? Not when you're dealing with big data or building a scalable application.
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Endpoint-specific limits:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Some endpoints are more restricted than others.
&lt;/li&gt;
&lt;li&gt;For example, company lookups might be limited to a mere 100 calls per day per company.
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Unpredictable throttling:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;LinkedIn may decide to throttle your requests if they think you're being too eager.
&lt;/li&gt;
&lt;li&gt;It's like playing data roulette – you never know when you'll hit the "too many requests" jackpot.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Imagine you're building a sales intelligence tool. You want to enrich your CRM with fresh LinkedIn 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!&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Limitation #2: Data restriction&lt;/strong&gt;
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Limited company information:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Basic company profiles? Sure.
&lt;/li&gt;
&lt;li&gt;Detailed employee information or comprehensive company updates? Not so fast.
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Historical data constraints:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Want to analyze a company's growth over the past year? Good luck to you and yours.
&lt;/li&gt;
&lt;li&gt;LinkedIn often restricts access to historical data, leaving you with a snapshot rather than a movie.
&lt;/li&gt;
&lt;li&gt;But here's some good news: We recently launched a historical data feature at Proxycurl. &lt;a href="https://nubela.co/blog/historical-employee-growth-with-employee-count-endpoint/?utm_campaign=content_amplification&amp;amp;utm_source=dev.to&amp;amp;utm_medium=social&amp;amp;utm_content=post"&gt;Check out our article on historical employee growth&lt;/a&gt; to see how you can get that movie after all!
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Follower insights:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;You can see follower counts, but detailed follower demographics? That's behind a velvet rope.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Limitation #3: When LinkedIn says "No"&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;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... LinkedIn's terms of service &lt;a href="https://nubela.co/blog/is-linkedin-scraping-legal/#the-case-that-cemented-the-arguments-around-web-scrapinghiq-v-linkedin?utm_campaign=content_amplification&amp;amp;utm_source=dev.to&amp;amp;utm_medium=social&amp;amp;utm_content=post"&gt;bring your dreams crashing down&lt;/a&gt;.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Competitive features:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;If your application competes with LinkedIn's core offerings, you might be shown the door.
&lt;/li&gt;
&lt;li&gt;Building a recruiting platform? LinkedIn might view you as a competition and restrict your API access.
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data usage restrictions:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;LinkedIn is very particular about how you can use their data.
&lt;/li&gt;
&lt;li&gt;Want to combine LinkedIn data with other sources for a comprehensive business intelligence tool? You might be walking on thin ice.
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Display guidelines:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;There are strict rules about how you can display LinkedIn data in your application.
&lt;/li&gt;
&lt;li&gt;It's like being told exactly how to arrange furniture in a house you thought you owned.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Imagine you've built an AI-powered career advisory tool that uses LinkedIn’s corporate data to suggest optimal career paths. You're ready to launch, but LinkedIn 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.&lt;/p&gt;

&lt;p&gt;Wait a minute. Don't get me wrong - the official LinkedIn Company API is powerful. But it's like a temperamental sports car: high-performance but high-maintenance, too.&lt;/p&gt;

&lt;p&gt;The plot thickens...&lt;/p&gt;

&lt;p&gt;Now, imagine accessing comprehensive LinkedIn 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?&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Enter Proxycurl: a game-changing alternative to the official LinkedIn Company API&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Alright, folks, it's time to introduce you to the superhero of our entire story. Remember all those official LinkedIn 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."&lt;/p&gt;

&lt;p&gt;Ladies and gentlemen, I welcome you to &lt;a href="https://nubela.co/proxycurl/company-api?utm_campaign=content_amplification&amp;amp;utm_source=dev.to&amp;amp;utm_medium=social&amp;amp;utm_content=post"&gt;Proxycurl&lt;/a&gt; – your new best friend in the world of LinkedIn data.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Why Proxycurl Company API? Four key features and advantages&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Let's break down why Proxycurl is the Robin Hood of LinkedIn data, democratizing access for developers and associated companies everywhere:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Generous rate limits:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Say goodbye to those pesky &lt;em&gt;"Too Many Requests"&lt;/em&gt; errors
&lt;/li&gt;
&lt;li&gt;Proxycurl offers &lt;a href="https://nubela.co/proxycurl/pricing?utm_campaign=content_amplification&amp;amp;utm_source=dev.to&amp;amp;utm_medium=social&amp;amp;utm_content=post"&gt;plans with credits&lt;/a&gt; with up to millions of API calls per month
&lt;/li&gt;
&lt;li&gt;It's like going from a garden hose to a fire hydrant of data
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Comprehensive data access:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://nubela.co/proxycurl/docs#company-api?utm_campaign=content_amplification&amp;amp;utm_source=dev.to&amp;amp;utm_medium=social&amp;amp;utm_content=post"&gt;Full company profiles&lt;/a&gt;, including employee counts, funding info, and more
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://nubela.co/blog/historical-employee-growth-with-employee-count-endpoint/?utm_campaign=content_amplification&amp;amp;utm_source=dev.to&amp;amp;utm_medium=social&amp;amp;utm_content=post"&gt;Historical data&lt;/a&gt; that lets you analyze trends over time
&lt;/li&gt;
&lt;li&gt;It's not just a snapshot; it's the whole movie of a company's LinkedIn presence
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Flexible use cases:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Build that revolutionary app without fear of suddenly losing access
&lt;/li&gt;
&lt;li&gt;Combine LinkedIn data with other sources for powerful business intelligence
&lt;/li&gt;
&lt;li&gt;Your imagination is the limit, not some restrictive terms of service &lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Simple integration:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://blog.postman.com/rest-api-examples/" rel="noopener noreferrer"&gt;RESTful API&lt;/a&gt; that plays nice with most programming languages
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://nubela.co/proxycurl/docs?utm_campaign=content_amplification&amp;amp;utm_source=dev.to&amp;amp;utm_medium=social&amp;amp;utm_content=post"&gt;Clear documentation&lt;/a&gt; that doesn't require a PhD to understand
&lt;/li&gt;
&lt;li&gt;It's so easy, you'll wonder why you ever wrestled with LinkedIn's API&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;But don't just take my word for it. Let's see the Proxycurl Company API in action!&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Seamless transition from the official LinkedIn Company API to Proxycurl Company API&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Remember that company search through the official LinkedIn Company API we wrestled with earlier? Well, prepare to have your mind blown. Here's how easy it is with &lt;a href="https://nubela.co/proxycurl/linkedin/company?utm_campaign=content_amplification&amp;amp;utm_source=dev.to&amp;amp;utm_medium=social&amp;amp;utm_content=post"&gt;Proxycurl Company API&lt;/a&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;fetch_company_data&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;company_url&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;use_cache&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;if-present&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;fallback_to_cache&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;on-error&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;
    Fetch company data using Proxycurl API with cache control
    &lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;
    &lt;span class="n"&gt;api_endpoint&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;https://nubela.co/proxycurl/api/linkedin/company&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;
    &lt;span class="n"&gt;headers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Authorization&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Bearer &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="n"&gt;params&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;url&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;company_url&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;categories&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;include&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;funding_data&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;include&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;exit_data&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;include&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;acquisitions&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;include&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;extra&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;include&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;use_cache&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;use_cache&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;fallback_to_cache&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;fallback_to_cache&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;api_endpoint&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;timeout&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;status_code&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Oops! Something went wrong. Status code: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;status_code&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;

&lt;span class="c1"&gt;# Example usage
&lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;__name__&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;__main__&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;api_key&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;YOUR_API_KEY&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;
    &lt;span class="n"&gt;company_url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;https://www.linkedin.com/company/google/&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;

    &lt;span class="c1"&gt;# Fetch data with default cache settings
&lt;/span&gt;    &lt;span class="n"&gt;company_data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;fetch_company_data&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;company_url&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="c1"&gt;# Or, fetch only recent data
&lt;/span&gt;    &lt;span class="c1"&gt;# company_data = fetch_company_data(api_key, company_url, use_cache='if-recent')
&lt;/span&gt;
    &lt;span class="c1"&gt;# Or, never fallback to cache
&lt;/span&gt;    &lt;span class="c1"&gt;# company_data = fetch_company_data(api_key, company_url, fallback_to_cache='never')
&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;company_data&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Company Name: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;company_data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;name&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;N/A&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Industry: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;company_data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;industry&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;N/A&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Company Size: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;company_data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;company_size&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;N/A&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Follower Count: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;company_data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;follower_count&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;N/A&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;And lots more corporate secrets!&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Look at that! Clean, simple, and powerful. Here's what makes our function shine:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;API key magic&lt;/strong&gt;: Your API key is the magic wand that grants you access to Proxycurl's treasure trove of data.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Flexible fetching&lt;/strong&gt;: By tweaking the &lt;code&gt;params&lt;/code&gt; dictionary, we can adjust what kind of corporate intel we're after. Want funding data? Acquisitions? It's all at your fingertips!
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Error handling&lt;/strong&gt;: If something goes awry in our data-summoning ritual, the function will let us know. No silent failures here!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Thought we were done? Nah…&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Cache-control&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;With the &lt;em&gt;&lt;code&gt;use_cache&lt;/code&gt;&lt;/em&gt; parameter, you're now the master of time (well, data freshness, at least):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;&lt;code&gt;if-present&lt;/code&gt;&lt;/em&gt; (default): "Give me what you've got, old or new!"
&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;&lt;code&gt;if-recent&lt;/code&gt;&lt;/em&gt;: "I want the fresh stuff, no older than 29 days please!"&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Fallback strategy&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;The &lt;code&gt;fallback_to_cache&lt;/code&gt; parameter lets you decide what to do if fetching fresh data hits a snag:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;&lt;code&gt;on-error&lt;/code&gt;&lt;/em&gt; (default): "If something goes wrong, let's see what's in the cache."
&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;&lt;code&gt;never&lt;/code&gt;&lt;/em&gt;: "I'd rather have no data than old data!"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Getting started with Proxycurl API: 7 things to note&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;I know you’re ready to dive into the world of Proxycurl API and unleash the full potential of LinkedIn data, but before you jump in, let's cover some essential points to ensure you hit the ground running.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Sign Up and get your API key:&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Head over to &lt;a href="https://nubela.co/proxycurl/auth/register?utm_campaign=content_amplification&amp;amp;utm_source=dev.to&amp;amp;utm_medium=social&amp;amp;utm_content=post"&gt;Proxycurl's registration page&lt;/a&gt;.
&lt;/li&gt;
&lt;li&gt;Fill in your details and create an account.
&lt;/li&gt;
&lt;li&gt;Once logged in, navigate to the API section in your dashboard.
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;There, you'll find your randomly generated secret key. Guard this with everything you’ve got!&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Authentication:&lt;/strong&gt;  &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Proxycurl API uses bearer tokens for &lt;a href="https://nubela.co/proxycurl/docs?ref=nubela.co#proxycurl-overview-authentication" rel="noopener noreferrer"&gt;authentication&lt;/a&gt;.  &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Simply include your API key in the &lt;em&gt;&lt;code&gt;Authorization&lt;/code&gt;&lt;/em&gt; header, as we did in the code above.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Rate limits:&lt;/strong&gt; Hold onto your hats because this is where things get exciting:  &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Up to 300 requests per minute  &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Burst up to 1500 requests every 5 minutes&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Pro Tip:&lt;/strong&gt; Handle 429 errors (&lt;a href="https://nubela.co/proxycurl/docs?ref=nubela.co#proxycurl-overview-rate-limit" rel="noopener noreferrer"&gt;rate limit&lt;/a&gt;) with exponential backoff. It's like doing a polite knock on the API's door instead of banging on it repeatedly.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Credits:&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Each &lt;a href="https://nubela.co/proxycurl/docs?ref=nubela.co#proxycurl-overview-credits" rel="noopener noreferrer"&gt;successful request&lt;/a&gt; (even a 404) consumes at least 1 credit.
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;No charge for errors (except 404s, which aren't really errors).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;API Response Time:&lt;/strong&gt;  &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The average &lt;a href="https://nubela.co/proxycurl/docs?ref=nubela.co#proxycurl-overview-timeouts-and-api-response-time" rel="noopener noreferrer"&gt;response time&lt;/a&gt; is about 2 seconds. Faster than you can say "professional networking"!&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Pro Tip:&lt;/strong&gt; Make &lt;a href="https://nubela.co/blog/how-to-maximize-throughput-on-proxycurl/" rel="noopener noreferrer"&gt;concurrent requests&lt;/a&gt; to maximize throughput. It's like opening multiple checkout lines at a supermarket.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Errors:&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Proxycurl API provides clear &lt;a href="https://nubela.co/proxycurl/docs?python#proxycurl-overview-errors" rel="noopener noreferrer"&gt;error codes and messages&lt;/a&gt;. No more cryptic errors that make you question your entire career choice!&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Backward compatibility:&lt;/strong&gt;  &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;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 &lt;a href="https://nubela.co/proxycurl/docs?ref=nubela.co#proxycurl-overview-backward-compatibility-guarantee" rel="noopener noreferrer"&gt;a promise&lt;/a&gt; from us to you and yours!&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Proxycurl Company API: 6 powerful endpoints to supercharge your data game&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Ladies and gentlemen, we've seen a basic code snippet of what the &lt;a href="https://nubela.co/proxycurl/docs?ref=nubela.co#company-api" rel="noopener noreferrer"&gt;Proxycurl Company API&lt;/a&gt; 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.&lt;/p&gt;

&lt;p&gt;Let's dive into 6 endpoints of the Proxycurl Company API that'll make you feel like a data wizard.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Endpoint #1: Company Profile Endpoint&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Think of the &lt;a href="https://nubela.co/proxycurl/docs?python#company-api-company-profile-endpoint" rel="noopener noreferrer"&gt;Company Profile Endpoint&lt;/a&gt; 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!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pro Tip:&lt;/strong&gt; 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!&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Endpoint #2: Employee Listing Endpoint&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Want to know who's who in a company? The &lt;a href="https://nubela.co/proxycurl/docs?python#company-api-employee-listing-endpoint" rel="noopener noreferrer"&gt;Employee Listing Endpoint&lt;/a&gt; has got you covered. At 3 credits per employee returned, you get access to a goldmine of employee data. It's powered by &lt;a href="https://nubela.co/proxycurl/linkdb" rel="noopener noreferrer"&gt;LinkDB&lt;/a&gt;, Proxycurl's comprehensive dataset of close to 500 million people and company profiles.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pro Tip:&lt;/strong&gt; Use this for competitive analysis or to identify key decision-makers in target companies. It's like having an org chart on steroids!&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Endpoint #3: Employee Count Endpoint&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Sometimes, size does matter – especially when it comes to company data. This &lt;a href="https://nubela.co/proxycurl/docs?python#company-api-employee-count-endpoint" rel="noopener noreferrer"&gt;Employee Count Endpoint&lt;/a&gt; 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!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pro Tip:&lt;/strong&gt; Great for market segmentation or identifying companies in specific growth stages. Watch those numbers grow!&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Endpoint #4: Company Profile Picture Endpoint&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;They say a picture is worth a thousand words. Well, the &lt;a href="https://nubela.co/proxycurl/docs?python#company-api-company-profile-picture-endpoint" rel="noopener noreferrer"&gt;Company Profile Picture Endpoint&lt;/a&gt; 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.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pro Tip:&lt;/strong&gt; Use this to enhance the UI of your company directories or business intelligence dashboards. Make your data look as good as it performs!&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Endpoint #5: Company Lookup Endpoint&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Playing detective with company data? The &lt;a href="https://nubela.co/proxycurl/docs?python#company-api-company-lookup-endpoint" rel="noopener noreferrer"&gt;Company Lookup Endpoint&lt;/a&gt; is your magnifying glass. For 2 credits per successful request, you can resolve a company's LinkedIn profile from just a name, domain, or location. It's like turning a business card into a full LinkedIn profile!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pro Tip:&lt;/strong&gt; Perfect for verifying company information or enriching lead data in your sales processes. Sherlock Holmes, eat your heart out!&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Endpoint #6: Employee Search Endpoint&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Last but not least, this &lt;a href="https://nubela.co/proxycurl/docs?python#company-api-employee-search-endpoint" rel="noopener noreferrer"&gt;employee search endpoint&lt;/a&gt; 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!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pro Tip:&lt;/strong&gt; 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!&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Putting it all together: The Proxycurl Company API advantage&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Now, I know what you're thinking: "This sounds great, but what sets these endpoints apart from the official LinkedIn 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:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Lead generation on steroids&lt;/strong&gt;: Use the Company Profile Endpoint to get detailed info on target companies. You'll have a trawling net for leads in your target industry!
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Competitor analysis made easy&lt;/strong&gt;: 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!
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Growth tracking in real-time&lt;/strong&gt;: Use the Employee Count Endpoint to track company growth over time. Spot emerging players and industry trends before they hit the mainstream!
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Visual appeal for your data&lt;/strong&gt;: Spice up your UI with the Company Profile Picture Endpoint. Because who said data can't be pretty?
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data enrichment on demand&lt;/strong&gt;: Use the Company Lookup Endpoint to enrich your existing data. Turn business cards into comprehensive company profiles!
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Talent scouting reinvented&lt;/strong&gt;: 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!&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;And the best part? You get all this with &lt;a href="https://nubela.co/proxycurl/pricing" rel="noopener noreferrer"&gt;flexible pricing&lt;/a&gt;, 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!&lt;/p&gt;

&lt;p&gt;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 LinkedIn data.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;LinkedIn Company API vs. Proxycurl Company API: 9 key differences&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Now, it's time for the main event! In the red corner, we have the reigning champion, the official LinkedIn 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.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;LinkedIn API&lt;/th&gt;
&lt;th&gt;Proxycurl API&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Rate Limits&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Strict (e.g., 100,000/day)&lt;/td&gt;
&lt;td&gt;Flexible credit system&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Data Completeness&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Limited fields&lt;/td&gt;
&lt;td&gt;Comprehensive data fields&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Historical Data&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Limited access&lt;/td&gt;
&lt;td&gt;Extensive historical data&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Use Case Flexibility&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Restricted by LinkedIn's TOS&lt;/td&gt;
&lt;td&gt;Flexible for various applications&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Integration Complexity&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Complex OAuth process&lt;/td&gt;
&lt;td&gt;Simple API key authentication&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Pricing Model&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Opaque, negotiation-based&lt;/td&gt;
&lt;td&gt;Transparent, credit-based system&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Support&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Limited, often automated&lt;/td&gt;
&lt;td&gt;&lt;a href="//mailto:hello@nubela.co"&gt;Dedicated human support&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Data Compliance&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Strict usage guidelines&lt;/td&gt;
&lt;td&gt;Ethical collection, flexible usage&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;While the official LinkedIn 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 (&lt;em&gt;ahem&lt;/em&gt; it's Proxycurl).&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;But what about legality and data compliance?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;Here are some resources that dive deep into the legal aspects:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Wondering about the legality of LinkedIn scraping in general? Check out &lt;a href="https://nubela.co/blog/is-linkedin-scraping-legal/" rel="noopener noreferrer"&gt;"Is LinkedIn Scraping Legal?"&lt;/a&gt;. Spoiler alert: It's more nuanced than you might think!
&lt;/li&gt;
&lt;li&gt;Concerned about GDPR compliance? The article &lt;a href="https://nubela.co/blog/is-linkedin-scraping-gdpr-compliant/" rel="noopener noreferrer"&gt;"Is LinkedIn Scraping GDPR compliant?"&lt;/a&gt; breaks it down in detail.
&lt;/li&gt;
&lt;li&gt;Want to know specifically about Proxycurl's GDPR compliance? We've got you covered with &lt;a href="https://nubela.co/blog/is-proxycurl-compliant-with-gdpr/" rel="noopener noreferrer"&gt;"Is Proxycurl Compliant with GDPR?"&lt;/a&gt;.
&lt;/li&gt;
&lt;li&gt;For those in California, you'll want to check out &lt;a href="https://nubela.co/blog/what-is-proxycurls-ccpa-policy/" rel="noopener noreferrer"&gt;"What is Proxycurl's CCPA Policy?"&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These articles provide in-depth analyses of the legal landscape surrounding LinkedIn data collection and data usage generally. They're not just reassuring - they're educational!&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Beyond Company API: 6 other Proxycurl’s API solutions&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Product&lt;/th&gt;
&lt;th&gt;Use Cases&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;&lt;a href="https://nubela.co/proxycurl/people-api" rel="noopener noreferrer"&gt;People API&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Talent sourcing, sales lead generation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;&lt;a href="https://nubela.co/proxycurl/search-api" rel="noopener noreferrer"&gt;Search API&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Market research, competitor analysis&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;&lt;a href="https://nubela.co/proxycurl/contact-api" rel="noopener noreferrer"&gt;Contact API&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Direct outreach, email marketing&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;&lt;a href="https://nubela.co/proxycurl/school-api" rel="noopener noreferrer"&gt;School API&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Education sector analysis, alumni networking&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;&lt;a href="https://nubela.co/proxycurl/jobs-api" rel="noopener noreferrer"&gt;Jobs API&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Job market trends, recruitment strategies&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;&lt;a href="https://nubela.co/proxycurl/customer-api" rel="noopener noreferrer"&gt;Customer API&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Customer insights, retention strategies&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Thought we were done? There's more! Proxycurl offers even more solutions to supercharge your B2B data game:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://nubela.co/proxycurl/linkdb" rel="noopener noreferrer"&gt;&lt;strong&gt;LinkDB&lt;/strong&gt;&lt;/a&gt;: An enterprise-level comprehensive data set with over 472 million public LinkedIn\ profiles &lt;em&gt;(and growing)&lt;/em&gt;. Perfect for building lead lists, identifying talent, or discovering investment opportunities. It's like having the entire professional world at your fingertips!
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://sapiengraph.com/" rel="noopener noreferrer"&gt;&lt;strong&gt;Sapiengraph&lt;/strong&gt;&lt;/a&gt;: 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!&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;Oh, and if you're hungry for more data-driven insights, check out our deep dive into &lt;a href="https://nubela.co/blog/crm-data-enrichment-the-easiest-way-to-increase-your-sales-conversion-rates/" rel="noopener noreferrer"&gt;CRM data enrichment&lt;/a&gt;. It's juicier than a gossip magazine and way more useful!&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Supercharge your applications with LinkedIn Company API&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Whew, what a day! We've journeyed through the landscape of LinkedIn data, from the challenges of the official LinkedIn Company API to the liberating possibilities of Proxycurl. As we wrap up, let's recap the most important points.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Key Takeaways: 5 Things to Remember&lt;/strong&gt;
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;LinkedIn's official API is like a strict librarian - lots of rules, limited access, and a tendency to shush your enthusiasm.
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://nubela.co/proxycurl" rel="noopener noreferrer"&gt;Proxycurl&lt;/a&gt;, on the other hand, is the cool librarian who legally sneaks you the restricted books and teaches you how to speed read.
&lt;/li&gt;
&lt;li&gt;With &lt;a href="https://nubela.co/proxycurl/linkedin/company" rel="noopener noreferrer"&gt;Proxycurl's Company API&lt;/a&gt;, you're not just getting company profiles; you're getting the corporate equivalent of a tell-all memoir.
&lt;/li&gt;
&lt;li&gt;Ethical data collection isn't just good karma; it's good business. Always keep it clean, folks!
&lt;/li&gt;
&lt;li&gt;Proxycurl isn't a one-trick pony - from &lt;a href="https://nubela.co/proxycurl/products" rel="noopener noreferrer"&gt;People API to LinkDB to others&lt;/a&gt;, we offer a suite of complementary products beyond the Company API.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;So there you have it, my friend! We've demystified the process of accessing LinkedIn company data without the need for a secret handshake or sacrificing your firstborn to the API gods. &lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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 LinkedIn's vast data ecosystem.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://nubela.co/proxycurl/auth/register" rel="noopener noreferrer"&gt;Sign up for a Proxycurl account today&lt;/a&gt; and unlock the full potential of B2B data at your fingertips. You get &lt;strong&gt;100 free credits&lt;/strong&gt; if you register with a work email, &lt;strong&gt;10 free credits&lt;/strong&gt; if you use a personal email.&lt;/p&gt;

&lt;p&gt;Whatever your next step, remember that we’re always here at &lt;a href="//mailto:hello@nubela.co"&gt;hello@nubela.co&lt;/a&gt; to support you on your data journey.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>python</category>
      <category>api</category>
      <category>programming</category>
    </item>
    <item>
      <title>How to Automate Sales Prospecting &amp; Outreach with AI Agents</title>
      <dc:creator>Proxycurl</dc:creator>
      <pubDate>Tue, 22 Oct 2024 05:14:41 +0000</pubDate>
      <link>https://dev.to/proxycurl/how-to-automate-sales-prospecting-outreach-with-ai-agents-1a46</link>
      <guid>https://dev.to/proxycurl/how-to-automate-sales-prospecting-outreach-with-ai-agents-1a46</guid>
      <description>&lt;p&gt;Ever since LLMs like ChatGPT have hit the scene, they've been all the rage and have fundamentally changed how many things are done—&lt;a href="https://nubela.co/blog/how-cold-emailing-grew-my-b2b-startup-to-100k-mrr/?utm_campaign=content_amplification&amp;amp;utm_source=dev.to&amp;amp;utm_medium=social&amp;amp;utm_content=post"&gt;sales prospecting and outreach&lt;/a&gt; included.&lt;/p&gt;

&lt;p&gt;But the ultimate question is: how can you practically implement LLMs to improve your workflow, rather than just being something fun to play with? &lt;/p&gt;

&lt;p&gt;You know, at what point does "AI" become something like we originally imagined it being—something that can complete entire tasks for you?&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;That's what this article will be all about. &lt;/p&gt;

&lt;p&gt;First things first:&lt;/p&gt;

&lt;h2&gt;
  
  
  What is an AI agent?
&lt;/h2&gt;

&lt;p&gt;Good question. It'll have a slightly different answer depending on who you ask.&lt;/p&gt;

&lt;p&gt;For example, &lt;a href="https://www.ibm.com/think/topics/ai-agents" rel="noopener noreferrer"&gt;IBM&lt;/a&gt; describes an AI agent as:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;a system or program that &lt;strong&gt;autonomously performs tasks for a user&lt;/strong&gt; or another system by designing its workflow and utilizing available tools.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;On the other hand, &lt;a href="https://aws.amazon.com/what-is/ai-agents/" rel="noopener noreferrer"&gt;Amazon&lt;/a&gt; defines an AI agent as:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;software that interacts with its environment, collects data, and uses it to &lt;strong&gt;perform self-determined tasks&lt;/strong&gt; to meet goals set by humans.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Then &lt;a href="https://techcrunch.com/2024/07/13/what-exactly-is-an-ai-agent/" rel="noopener noreferrer"&gt;TechCrunch&lt;/a&gt; describes an AI agent as:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;AI-driven software that &lt;strong&gt;performs tasks traditionally done by humans&lt;/strong&gt;, potentially crossing multiple systems and handling various jobs beyond just answering questions.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;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. &lt;/p&gt;

&lt;h2&gt;
  
  
  How can AI agents benefit sales prospecting?
&lt;/h2&gt;

&lt;p&gt;For sales prospecting, an AI agent can accomplish three main things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Lead identification and ranking:&lt;/strong&gt; An AI agent can search for leads that fit your Ideal Customer Profile (ICP), identify and rank them, and prospect on your behalf.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Automated outreach:&lt;/strong&gt; The agent can automatically reach out to ideal prospects and &lt;a href="https://nubela.co/blog/how-salesforge-integrates-rich-prospecting-data-with-chatgpt-to-automatically-personalize-emails/?utm_campaign=content_amplification&amp;amp;utm_source=dev.to&amp;amp;utm_medium=social&amp;amp;utm_content=post"&gt;write a series of outreach messages&lt;/a&gt; tailored to their interests and needs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Inbox management:&lt;/strong&gt; The AI agent can monitor your email inbox, automatically replying to interested leads and pushing them to book a call with you directly.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h2&gt;
  
  
  The first step to any AI agent is data
&lt;/h2&gt;

&lt;p&gt;To get an LLM to do anything useful, it needs an appropriate amount of data for the task at hand. &lt;/p&gt;

&lt;p&gt;For example, if you're automating sales prospecting, the AI agent would need access to relevant prospecting data, such as &lt;a href="https://nubela.co/proxycurl/contact-api?utm_campaign=content_amplification&amp;amp;utm_source=dev.to&amp;amp;utm_medium=social&amp;amp;utm_content=post"&gt;email addresses&lt;/a&gt;, &lt;a href="https://nubela.co/proxycurl/linkedin/company?utm_campaign=content_amplification&amp;amp;utm_source=dev.to&amp;amp;utm_medium=social&amp;amp;utm_content=post"&gt;company information&lt;/a&gt;, and so on.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to programmatically access B2B data
&lt;/h2&gt;

&lt;p&gt;Luckily since you're on the &lt;a href="https://nubela.co/proxycurl?utm_campaign=content_amplification&amp;amp;utm_source=dev.to&amp;amp;utm_medium=social&amp;amp;utm_content=post"&gt;Proxycurl&lt;/a&gt; blog, you'll have programmatic access to just about all of the B2B data you could ever possibly need. &lt;/p&gt;

&lt;p&gt;We have millions of data points on people, jobs, companies, and more, and we provide acccess to it all via a REST API. &lt;/p&gt;

&lt;p&gt;In this case, two very useful endpoints would be our &lt;a href="https://nubela.co/proxycurl/docs#search-api-person-search-endpoint" rel="noopener noreferrer"&gt;Person Search Endpoint&lt;/a&gt;, and our &lt;a href="https://nubela.co/proxycurl/docs#contact-api-personal-email-lookup-endpoint" rel="noopener noreferrer"&gt;Personal Email Lookup Endpoint&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Searching for prospects
&lt;/h3&gt;

&lt;p&gt;So, for example, to search for prospects via our Person Search Endpoint, you could do so via a simple cURL command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;-G&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer &lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;YOUR_API_KEY&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="s1"&gt;'https://nubela.co/proxycurl/api/v2/search/person'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;--data-urlencode&lt;/span&gt; &lt;span class="s1"&gt;'country=US'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;--data-urlencode&lt;/span&gt; &lt;span class="s1"&gt;'current_role_title=founder'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;--data-urlencode&lt;/span&gt; &lt;span class="s1"&gt;'industries=Computer Software'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;--data-urlencode&lt;/span&gt; &lt;span class="s1"&gt;'page_size=10'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;--data-urlencode&lt;/span&gt; &lt;span class="s1"&gt;'enrich_profiles=enrich'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That would return you 10 "enriched" (more information) founders working in the computer software industry. &lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h3&gt;
  
  
  Enriching prospects with emails
&lt;/h3&gt;

&lt;p&gt;Here's how:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;-G&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer &lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;YOUR_API_KEY&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="s1"&gt;'https://nubela.co/proxycurl/api/contact-api/personal-email'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;--data-urlencode&lt;/span&gt; &lt;span class="s1"&gt;'linkedin_profile_url=https://www.linkedin.com/in/exampleprofile/'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That would take the given LinkedIn URL from the Person Search Endpoint, and return you their personal email if available.&lt;/p&gt;

&lt;h3&gt;
  
  
  Generating large lead lists to act as a dataset for your AI agent
&lt;/h3&gt;

&lt;p&gt;Now let's say you want to generate a large lead list to use as a dataset for your AI agent. &lt;/p&gt;

&lt;p&gt;We could use a little bit of &lt;a href="https://www.python.org/" rel="noopener noreferrer"&gt;Python&lt;/a&gt; to help us accomplish this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;csv&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;time&lt;/span&gt;

&lt;span class="n"&gt;CSV_FILE_PATH&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;./exported_data.csv&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="n"&gt;API_KEY&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Your_API_KEY_Here&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;


&lt;span class="c1"&gt;# Function to search for people and handle pagination
&lt;/span&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;search_person&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;max_results&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://nubela.co/proxycurl/api/v2/search/person&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
    &lt;span class="n"&gt;headers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Authorization&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Bearer &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="n"&gt;params&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;country&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;US&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;current_role_title&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;founder&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;industries&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Computer Software&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;page_size&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;10&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;enrich_profiles&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;enrich&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="n"&gt;results&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;
    &lt;span class="k"&gt;try&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;results&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;max_results&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

            &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;status_code&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;429&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
                &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Rate limit hit, sleeping for a while...&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
                &lt;span class="n"&gt;time&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sleep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
                &lt;span class="k"&gt;continue&lt;/span&gt;

            &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;raise_for_status&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
            &lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

            &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;results&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
                &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;No more results to fetch.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
                &lt;span class="k"&gt;break&lt;/span&gt;

            &lt;span class="n"&gt;results&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;extend&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;results&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;[]))&lt;/span&gt;
            &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Fetched &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;results&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; results so far.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

            &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;next_page&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;results&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;max_results&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
                &lt;span class="n"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;next_page&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
            &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
                &lt;span class="k"&gt;break&lt;/span&gt;

        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;results&lt;/span&gt;&lt;span class="p"&gt;[:&lt;/span&gt;&lt;span class="n"&gt;max_results&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="k"&gt;except&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;exceptions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;RequestException&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Error in search_person: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;


&lt;span class="c1"&gt;# Lookup personal email function
&lt;/span&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;lookup_personal_email&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;linkedin_url&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;https://nubela.co/proxycurl/api/contact-api/personal-email&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;
    &lt;span class="n"&gt;headers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Authorization&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Bearer &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="n"&gt;params&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;linkedin_profile_url&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;linkedin_url&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="k"&gt;try&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;raise_for_status&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
        &lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;, &lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;emails&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;[]))&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;N/A&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;
    &lt;span class="k"&gt;except&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;exceptions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;RequestException&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Error fetching personal email for &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;linkedin_url&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;N/A&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;


&lt;span class="c1"&gt;# Create new CSV if needed
&lt;/span&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;create_new_csv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;file_name&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="nf"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;file_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;mode&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;w&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;newline&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;''&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;encoding&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;utf-8&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nb"&gt;file&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;writer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;csv&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;writer&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;file&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;writer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;writerow&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;First Name&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Last Name&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;LinkedIn URL&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Occupation&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Summary&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Current Company&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Current Company Description&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Company URL&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Experiences&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Personal Email&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
        &lt;span class="p"&gt;])&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;New CSV file created: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;file_name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;


&lt;span class="c1"&gt;# Export data to CSV with handling for missing profile data
&lt;/span&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;export_to_csv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;file_name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;CSV_FILE_PATH&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Starting export to CSV: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;file_name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;exists&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;file_name&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="nf"&gt;create_new_csv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;file_name&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="k"&gt;try&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="nf"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;file_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;mode&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;a&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;newline&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;''&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;encoding&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;utf-8&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nb"&gt;file&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="n"&gt;writer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;csv&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;writer&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;file&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

            &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;person&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
                &lt;span class="n"&gt;linkedin_url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;person&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;linkedin_profile_url&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;N/A&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
                &lt;span class="n"&gt;profile&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;person&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;profile&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{})&lt;/span&gt;

                &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="n"&gt;profile&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
                    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Profile missing for &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;linkedin_url&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;, skipping...&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
                    &lt;span class="k"&gt;continue&lt;/span&gt;

                &lt;span class="n"&gt;first_name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;profile&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;first_name&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;N/A&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
                &lt;span class="n"&gt;last_name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;profile&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;last_name&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;N/A&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
                &lt;span class="n"&gt;occupation&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;profile&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;occupation&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;N/A&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
                &lt;span class="n"&gt;summary&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;profile&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;summary&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;N/A&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

                &lt;span class="n"&gt;experiences&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;profile&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;experiences&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;[])&lt;/span&gt;
                &lt;span class="n"&gt;experiences_list&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;
                &lt;span class="n"&gt;current_company&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;N/A&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
                &lt;span class="n"&gt;current_company_description&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;N/A&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
                &lt;span class="n"&gt;company_url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;N/A&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;

                &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;experiences&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="nf"&gt;isinstance&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;experiences&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;list&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
                    &lt;span class="n"&gt;first_experience&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;experiences&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;experiences&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{}&lt;/span&gt;
                    &lt;span class="n"&gt;current_company&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;first_experience&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;company&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;N/A&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
                    &lt;span class="n"&gt;current_company_description&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;first_experience&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;description&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;N/A&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
                    &lt;span class="n"&gt;company_url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;first_experience&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;company_linkedin_profile_url&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;N/A&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

                    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;exp&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;experiences&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
                        &lt;span class="n"&gt;company_name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;exp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;company&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;N/A&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
                        &lt;span class="n"&gt;title&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;exp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;title&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;N/A&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
                        &lt;span class="n"&gt;description&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;exp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;description&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;N/A&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
                        &lt;span class="n"&gt;start_date&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;exp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;starts_at&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{}).&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;year&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;N/A&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;exp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;starts_at&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;N/A&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
                        &lt;span class="n"&gt;end_date&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;exp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ends_at&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{}).&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;year&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;N/A&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;exp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ends_at&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;N/A&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
                        &lt;span class="n"&gt;exp_string&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Company: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;company_name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;, Title: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;title&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;, Description: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;description&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;, Start: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;start_date&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;, End: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;end_date&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
                        &lt;span class="n"&gt;experiences_list&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;exp_string&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
                    &lt;span class="n"&gt;experiences_str&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt; | &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;experiences_list&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
                &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
                    &lt;span class="n"&gt;experiences_str&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;N/A&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;

                &lt;span class="n"&gt;personal_email&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;lookup_personal_email&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;API_KEY&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;linkedin_url&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

                &lt;span class="n"&gt;writer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;writerow&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;
                    &lt;span class="n"&gt;first_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;last_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;linkedin_url&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;occupation&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;summary&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                    &lt;span class="n"&gt;current_company&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;current_company_description&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;company_url&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                    &lt;span class="n"&gt;experiences_str&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;personal_email&lt;/span&gt;
                &lt;span class="p"&gt;])&lt;/span&gt;
                &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Added row for &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;first_name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;last_name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Data successfully exported to &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;file_name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;except&lt;/span&gt; &lt;span class="nb"&gt;Exception&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Error in export_to_csv: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;


&lt;span class="c1"&gt;# Start the process of fetching and exporting data
&lt;/span&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;start_process&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;max_results&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;try&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;search_results&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;search_person&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;API_KEY&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;max_results&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="n"&gt;search_results&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;No results found.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt;
        &lt;span class="nf"&gt;export_to_csv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;search_results&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;except&lt;/span&gt; &lt;span class="nb"&gt;Exception&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Error in start_process: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;


&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;__name__&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;__main__&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;start_process&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;max_results&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;500&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  How to use the script
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;1.&lt;/strong&gt; Make sure you have Python installed.&lt;/p&gt;

&lt;p&gt;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 &lt;a href="https://www.jetbrains.com/pycharm/" rel="noopener noreferrer"&gt;PyCharm&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Also, install the &lt;code&gt;requests&lt;/code&gt; module if you haven’t already using Python's package manager.&lt;/p&gt;

&lt;p&gt;Just run the following command from your terminal or command prompt:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip3 &lt;span class="nb"&gt;install &lt;/span&gt;requests
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;2.&lt;/strong&gt; Replace &lt;code&gt;Your_API_Key_Here&lt;/code&gt; with your actual &lt;a href="https://nubela.co/proxycurl/dashboard/proxycurl-api/api-key/" rel="noopener noreferrer"&gt;Proxycurl API key&lt;/a&gt; in the script.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3.&lt;/strong&gt; Execute the script:&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;&lt;code&gt;python3 your_script_name.py&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4.&lt;/strong&gt; After running the above Python script, it would return you a &lt;code&gt;.CSV&lt;/code&gt; list of &lt;strong&gt;500 founders of computer software companies&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F65dh1h99ikturo7atjrj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F65dh1h99ikturo7atjrj.png" alt="An example of the CSV returned" width="800" height="400"&gt;&lt;/a&gt;&lt;br&gt;
An example of the CSV returned&lt;/p&gt;

&lt;p&gt;The data points it includes are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;First name&lt;/li&gt;
&lt;li&gt;Last name&lt;/li&gt;
&lt;li&gt;LinkedIn profile URL&lt;/li&gt;
&lt;li&gt;Occupation&lt;/li&gt;
&lt;li&gt;Summary (a brief overview of the individual's profile)&lt;/li&gt;
&lt;li&gt;Current company name&lt;/li&gt;
&lt;li&gt;Current company description&lt;/li&gt;
&lt;li&gt;Current company LinkedIn URL&lt;/li&gt;
&lt;li&gt;Experiences (a summary of job experiences, including company names, job titles, descriptions, start and end dates)&lt;/li&gt;
&lt;li&gt;Personal email (if available)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For all prospects, and can return even more if you want to add more of the results available on our Person Search Endpoint, which &lt;a href="https://nubela.co/proxycurl/docs#search-api-person-search-endpoint" rel="noopener noreferrer"&gt;you can view on our documentation here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Note that this can consume quite a bit of credits, so you might want to &lt;a href="https://nubela.co/proxycurl/pricing?utm_campaign=content_amplification&amp;amp;utm_source=dev.to&amp;amp;utm_medium=social&amp;amp;utm_content=post"&gt;review our pricing here&lt;/a&gt; first and lower the amount of results returned by the Python script by changing &lt;code&gt;max_results&lt;/code&gt;.&lt;/p&gt;
&lt;h3&gt;
  
  
  Modifying the filtering for the script
&lt;/h3&gt;

&lt;p&gt;You can adjust the search parameters in the params dictionary inside the &lt;code&gt;search_person&lt;/code&gt; function. &lt;/p&gt;

&lt;p&gt;For example, if you want to search for &lt;strong&gt;marketing managers in the UK&lt;/strong&gt; instead of founders in the US, you can update the parameters like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;params&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;country&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;GB&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;current_role_title&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;marketing manager&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;industries&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Marketing and Advertising&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;page_size&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;10&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;enrich_profiles&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;enrich&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;But that's far from it when it comes to filtering and search options. &lt;a href="https://nubela.co/proxycurl/docs#search-api-person-search-endpoint" rel="noopener noreferrer"&gt;You can view the available search parameters here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Feel free to modify the parameters to match your Ideal Customer Profile (ICP) based on job titles, industries, locations, or other available filters.&lt;/p&gt;

&lt;h2&gt;
  
  
  Creating AI agents with Zapier Central
&lt;/h2&gt;

&lt;p&gt;Cool. Now we have a dataset to work with. &lt;/p&gt;

&lt;p&gt;For the next step, in order to bring this all together, we'll be using &lt;a href="https://zapier.com/central" rel="noopener noreferrer"&gt;Zapier Central&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2jpdrt7b5vde8ifffirb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2jpdrt7b5vde8ifffirb.png" alt="Zapier's AI assistants" width="800" height="432"&gt;&lt;/a&gt;&lt;br&gt;
Zapier's AI assistants&lt;/p&gt;

&lt;p&gt;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. &lt;/p&gt;

&lt;p&gt;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 &lt;a href="https://zapier.com/l/central-pricing" rel="noopener noreferrer"&gt;for free&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;After creating your Zapier account, &lt;a href="https://central.zapier.com" rel="noopener noreferrer"&gt;you can access Zapier Central right here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;You'll then see a dashboard similar to below:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6tnzgw15y3qez57pe7fn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6tnzgw15y3qez57pe7fn.png" alt="Zapier Central's dashboard" width="800" height="422"&gt;&lt;/a&gt;&lt;br&gt;
Zapier Central's dashboard&lt;/p&gt;

&lt;p&gt;Click the "Plus" icon to create a new AI agent:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fshwwdmmblvvyfr6llh4m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fshwwdmmblvvyfr6llh4m.png" alt="Creating a new AI agent" width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
Creating a new AI agent&lt;/p&gt;
&lt;h2&gt;
  
  
  AI agents for lead identification and ranking
&lt;/h2&gt;

&lt;p&gt;Next up you'll need a name and description, which is whatever you'd like. Then the instructions which will apply to every conversation.&lt;/p&gt;

&lt;p&gt;In this case, we can use something like, &lt;em&gt;"your job is to be a member of my sales team and help me prospect plus close sales."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzu8ymyle599qnsl69iue.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzu8ymyle599qnsl69iue.png" alt="Configuring your AI agent" width="800" height="530"&gt;&lt;/a&gt;&lt;br&gt;
Configuring your AI agent&lt;/p&gt;

&lt;p&gt;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. &lt;/p&gt;

&lt;p&gt;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 &lt;em&gt;too&lt;/em&gt; expensive. &lt;/p&gt;

&lt;p&gt;Anyway, you'll want to authenticate Zapier with your Google account and you'll be able to directly sync. &lt;/p&gt;

&lt;p&gt;Then for your actions:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd0p7eh3xytydc33hfy24.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd0p7eh3xytydc33hfy24.png" alt="Zapier's AI actions" width="800" height="561"&gt;&lt;/a&gt;&lt;br&gt;
Zapier's AI actions&lt;/p&gt;

&lt;p&gt;Select Gmail "Create draft," and Google Docs "Create document from text."&lt;/p&gt;

&lt;p&gt;Then upload the &lt;a href="//google.com"&gt;&lt;code&gt;.CSV&lt;/code&gt; full of prospects&lt;/a&gt; we generated earlier with Proxycurl as the data source:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxndybxz8czomkmp5xkn4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxndybxz8czomkmp5xkn4.png" alt="Adding your data source for your AI agent" width="800" height="624"&gt;&lt;/a&gt;&lt;br&gt;
Adding your data source for your AI agent&lt;/p&gt;

&lt;p&gt;It should look similar to this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg516r1dia9bgvp81ro4m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg516r1dia9bgvp81ro4m.png" alt="Everything configured" width="800" height="542"&gt;&lt;/a&gt;&lt;br&gt;
Everything configured&lt;/p&gt;

&lt;p&gt;Then click "Save" and "Create assistant."&lt;/p&gt;

&lt;p&gt;Next, open your assitant, and you'll see a page such as this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdl5j0wk3aue05rkyip56.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdl5j0wk3aue05rkyip56.png" alt="Your new AI assistant" width="800" height="447"&gt;&lt;/a&gt;&lt;br&gt;
Your new AI assistant&lt;/p&gt;

&lt;p&gt;Click on "Behaviors" in the middle and then "Create behavior":&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fagb9hq3by1dbx8y8p5pd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fagb9hq3by1dbx8y8p5pd.png" alt="Creating your AI agents behaviors" width="800" height="452"&gt;&lt;/a&gt;&lt;br&gt;
Creating your AI agents behaviors&lt;/p&gt;

&lt;p&gt;For the trigger, there are a couple of different options you can choose:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fisy4r2mb548yfohp28k1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fisy4r2mb548yfohp28k1.png" alt="Triggering your AI agent" width="800" height="599"&gt;&lt;/a&gt;&lt;br&gt;
Triggering your AI agent&lt;/p&gt;

&lt;p&gt;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."&lt;/p&gt;

&lt;p&gt;Next up you'll need to fill out the instructions to follow (prompt) section.&lt;/p&gt;

&lt;p&gt;So, for mine, here's what I used:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;I work for Proxycurl, a B2B data provider &amp;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]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Of course you'll want to slightly alter it your liking and what fits you and your business.&lt;/p&gt;

&lt;p&gt;Then click on the "Test behavior" button:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpwsx335ygubs28dvl3m5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpwsx335ygubs28dvl3m5.png" alt="Seeing how your AI agent will behave based on your instructions" width="800" height="454"&gt;&lt;/a&gt;&lt;br&gt;
Seeing how your AI agent will behave based on your instructions&lt;/p&gt;

&lt;p&gt;It will display the following response, showing you step-by-step what it will be doing and the logic behind it: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F546elmofjuwi1nydb9ng.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F546elmofjuwi1nydb9ng.png" alt="First, analyzing the .CSV file" width="800" height="586"&gt;&lt;/a&gt;&lt;br&gt;
First, analyzing the .CSV file&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F69k5e3bqatcpvybgkbws.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F69k5e3bqatcpvybgkbws.png" alt="Then, save the prospects in a document" width="800" height="726"&gt;&lt;/a&gt;&lt;br&gt;
Then, save the prospects in a document&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F57phgkb9kl04gpf1b6u7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F57phgkb9kl04gpf1b6u7.png" alt="The preview of the prospects" width="800" height="643"&gt;&lt;/a&gt;&lt;br&gt;
The preview of the prospects&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb6b0ck692j4b360ntjud.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb6b0ck692j4b360ntjud.png" alt="Done" width="800" height="461"&gt;&lt;/a&gt;&lt;br&gt;
Done&lt;/p&gt;

&lt;p&gt;You can tell the AI agent to tweak it to your specific needs.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F18htv8m2ee02e9gxcw4x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F18htv8m2ee02e9gxcw4x.png" alt="Give it specific instructions" width="800" height="614"&gt;&lt;/a&gt;&lt;br&gt;
Give it specific instructions&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6bxu2mzupvf0v4bt3nww.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6bxu2mzupvf0v4bt3nww.png" alt="The email draft created" width="800" height="545"&gt;&lt;/a&gt;&lt;br&gt;
The email draft created&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fseulsna7x6wxvuh0zhqv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fseulsna7x6wxvuh0zhqv.png" alt="Done, do you want to further scale the actions?" width="800" height="376"&gt;&lt;/a&gt;&lt;br&gt;
Done, do you want to further scale the actions?&lt;/p&gt;

&lt;p&gt;Gmail draft result:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fek4zz07bxz09f1fftb5i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fek4zz07bxz09f1fftb5i.png" alt="Actual draft in Gmail" width="800" height="818"&gt;&lt;/a&gt;&lt;br&gt;
Actual draft in Gmail&lt;/p&gt;

&lt;p&gt;Google document result:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzkb5qc4hgob2h5fvvz3k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzkb5qc4hgob2h5fvvz3k.png" alt="The results automatically saved in Google Docs" width="800" height="440"&gt;&lt;/a&gt;&lt;br&gt;
The results automatically saved in Google Docs&lt;/p&gt;

&lt;h2&gt;
  
  
  Give your AI agents quality data &amp;amp; clear instructions, and you're all set
&lt;/h2&gt;

&lt;p&gt;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. &lt;/p&gt;

&lt;p&gt;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!&lt;/p&gt;

&lt;p&gt;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. &lt;/p&gt;

&lt;p&gt;At &lt;a href="https://nubela.co/proxycurl?utm_campaign=content_amplification&amp;amp;utm_source=dev.to&amp;amp;utm_medium=social&amp;amp;utm_content=post"&gt;Proxycurl&lt;/a&gt;, we have a full suite of API products and a &lt;a href="https://nubela.co/proxycurl/linkdb/pricing?utm_campaign=content_amplification&amp;amp;utm_source=dev.to&amp;amp;utm_medium=social&amp;amp;utm_content=post"&gt;LinkDB database&lt;/a&gt; product consisting of close to 500 million profiles that powers many, many amazing applications and use cases, like AI agents. &lt;br&gt;
&lt;a href="https://nubela.co/proxycurl/auth/register" rel="noopener noreferrer"&gt;Sign up for an account&lt;/a&gt; and get started now!&lt;/p&gt;

</description>
      <category>automation</category>
      <category>prospecting</category>
      <category>ai</category>
      <category>webdev</category>
    </item>
    <item>
      <title>How To Build A Crunchbase Scraper In 2025 - With Code Demo</title>
      <dc:creator>Proxycurl</dc:creator>
      <pubDate>Fri, 18 Oct 2024 03:37:35 +0000</pubDate>
      <link>https://dev.to/proxycurl/how-to-build-a-crunchbase-scraper-in-2025-with-code-demo-1f98</link>
      <guid>https://dev.to/proxycurl/how-to-build-a-crunchbase-scraper-in-2025-with-code-demo-1f98</guid>
      <description>&lt;p&gt;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). &lt;/p&gt;

&lt;p&gt;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. &lt;/p&gt;

&lt;p&gt;Here’s a sneak peak at a basic Crunchbase scraper using Python to extract company name and headquarter city from the website.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;bs4&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;BeautifulSoup&lt;/span&gt;

&lt;span class="n"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;https://www.crunchbase.com/organization/apple&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;
&lt;span class="n"&gt;headers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;User-Agent&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Mozilla/5.0&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;soup&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;BeautifulSoup&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;content&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;html.parser&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;name_section&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;soup&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;find&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;h1&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;class_&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;profile-name&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;company_name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;name_section&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get_text&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;strip&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;name_section&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;N/A&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;

&lt;span class="n"&gt;headquarters_section&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;soup&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;find&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;span&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;class_&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;component--field-formatter field_type_text&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;headquarters_city&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;headquarters_section&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get_text&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;strip&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;headquarters_section&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;N/A&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Company Name: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;company_name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Headquarters City: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;headquarters_city&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;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.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;

&lt;span class="n"&gt;api_key&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;YOUR_API_KEY&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;
&lt;span class="n"&gt;headers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Authorization&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Bearer &lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="n"&gt;api_endpoint&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;https://nubela.co/proxycurl/api/linkedin/company&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;
&lt;span class="n"&gt;params&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;url&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;https://www.linkedin.com/company/apple/&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;api_endpoint&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Company Name: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;company_name&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Company Headquarter: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;hq&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;city&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;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. &lt;/p&gt;

&lt;h2&gt;
  
  
  Building your Crunchbase Scraper from scratch
&lt;/h2&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;First, we will need to define a function to extract the company description. The &lt;code&gt;get_company_description()&lt;/code&gt; function searches for the &lt;code&gt;span&lt;/code&gt; HTML element that contains the company’s description. It then extracts the text and returns it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;get_company_description&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;raw_html&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;description_section&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;raw_html&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;find&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;span&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;class&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;description&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;description_section&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get_text&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;strip&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;description_section&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Description not found&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;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:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;bs4&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;BeautifulSoup&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;get_company_description&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;raw_html&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="c1"&gt;# Locate the description section in the HTML
&lt;/span&gt;    &lt;span class="n"&gt;description_section&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;raw_html&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;find&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;span&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;class&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;description&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;

    &lt;span class="c1"&gt;# Return the text if found, else return a default message
&lt;/span&gt;    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;description_section&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get_text&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;strip&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;description_section&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Description not found&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;

&lt;span class="c1"&gt;# URL of the Crunchbase profile to scrape
&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://www.crunchbase.com/organization/apple&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="c1"&gt;# Set the User-Agent header to simulate a browser request
&lt;/span&gt;&lt;span class="n"&gt;headers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;User-Agent&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Mozilla/5.0&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;# Send a GET request to the specified URL
&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Check if the request was successful (status code 200)
&lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;status_code&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="c1"&gt;# Parse the HTML content of the response using BeautifulSoup
&lt;/span&gt;    &lt;span class="n"&gt;soup&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;BeautifulSoup&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;content&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;html.parser&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="c1"&gt;# Call the function to get the company description
&lt;/span&gt;    &lt;span class="n"&gt;company_description&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;get_company_description&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;soup&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="c1"&gt;# Print the retrieved company description
&lt;/span&gt;    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Company Description: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;company_description&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="c1"&gt;# Print an error message if the request failed
&lt;/span&gt;    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Failed to retrieve data. Status Code: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;status_code&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;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:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Perform this action for every single field you’re interested in.
&lt;/li&gt;
&lt;li&gt;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. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;**Note&lt;/em&gt;&lt;em&gt;: Check the website’s terms of service and &lt;code&gt;robots.txt&lt;/code&gt; file to ensure you're scraping responsibly and within legal limits.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why is building a Crunchbase Scraper challenging?
&lt;/h2&gt;

&lt;p&gt;Building your own Crunchbase scraper is a viable option, but before you go Gung-ho, be aware of what challenges await you. &lt;/p&gt;

&lt;h3&gt;
  
  
  Accuracy and completeness
&lt;/h3&gt;

&lt;p&gt;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. &lt;/p&gt;

&lt;h3&gt;
  
  
  Crunchbase's structure and changes
&lt;/h3&gt;

&lt;p&gt;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. &lt;/p&gt;

&lt;h3&gt;
  
  
  Handling authwalls and anti-scraping mechanisms
&lt;/h3&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h2&gt;
  
  
  The hassle-free way to set up a Crunchbase Scraper
&lt;/h2&gt;

&lt;p&gt;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 &lt;a href="https://nubela.co/proxycurl?utm_campaign=content_amplification&amp;amp;utm_source=dev.to&amp;amp;utm_medium=social&amp;amp;utm_content=post"&gt;Proxycurl&lt;/a&gt; exists! &lt;/p&gt;

&lt;p&gt;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. &lt;/p&gt;

&lt;p&gt;Proxycurl provides you with a list of standard fields under the &lt;a href="https://nubela.co/proxycurl/docs#company-api" rel="noopener noreferrer"&gt;Company Profile Endpoint&lt;/a&gt;. 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: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;categories&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;funding_data&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;exit_data&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;acquisitions&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;extra&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;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!&lt;/p&gt;

&lt;p&gt;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. &lt;/p&gt;

&lt;h2&gt;
  
  
  Crunchbase scraping with Proxycurl via Postman
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step 1: Set up your account and get your API key
&lt;/h3&gt;

&lt;p&gt;Create an account with &lt;a href="https://nubela.co/proxycurl/auth/register" rel="noopener noreferrer"&gt;Proxycurl&lt;/a&gt; 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 &lt;strong&gt;100 credits&lt;/strong&gt; if you signed up with your work email, &lt;strong&gt;10 credits&lt;/strong&gt; if you used personal email. Then you can start experimenting immediately! Here’s what your dashboard should look like.  &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffft0og9acj16tvgmix2e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffft0og9acj16tvgmix2e.png" alt="Image description" width="800" height="452"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;From here, you can scroll down and choose to work with &lt;a href="https://nubela.co/proxycurl/people-api?utm_campaign=content_amplification&amp;amp;utm_source=dev.to&amp;amp;utm_medium=social&amp;amp;utm_content=post"&gt;Person Profile Endpoint&lt;/a&gt; or the &lt;a href="https://nubela.co/proxycurl/linkedin/company?utm_campaign=content_amplification&amp;amp;utm_source=dev.to&amp;amp;utm_medium=social&amp;amp;utm_content=post"&gt;Company Profile Endpoint&lt;/a&gt;. The Person Profile Endpoint is a useful tool if you're looking to scrape LinkedIn. Check out &lt;a href="https://nubela.co/blog/how-to-build-a-linkedin-data-scraper/?utm_campaign=content_amplification&amp;amp;utm_source=dev.to&amp;amp;utm_medium=social&amp;amp;utm_content=post"&gt;How to Build a LinkedIn Data Scraper&lt;/a&gt; for further details.&lt;br&gt;&lt;br&gt;
For this use case, we’ll just be working with the Company Profile Endpoint.&lt;/p&gt;
&lt;h3&gt;
  
  
  Step 2: Run Postman and set your bearer token
&lt;/h3&gt;

&lt;p&gt;Go to &lt;a href="https://pxlcl.co/proxycurl-postman-collection" rel="noopener noreferrer"&gt;Proxycurl's collection in Postman&lt;/a&gt;, 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 &lt;a href="https://nubela.co/blog/tutorial-to-test-proxycurl-apis-with-postman-beginners-guide/?utm_campaign=content_amplification&amp;amp;utm_source=dev.to&amp;amp;utm_medium=social&amp;amp;utm_content=post"&gt;how to set up Proxycurl API in Postman&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd9sjq4x1fftrviar8oga.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd9sjq4x1fftrviar8oga.png" alt="Setting up Proxycurl API in Postman" width="800" height="452"&gt;&lt;/a&gt;&lt;br&gt;
Setting up Proxycurl API in Postman&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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. &lt;em&gt;Remember to click Save!!&lt;/em&gt; Your page should look like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxxy7yrdjxb17nb460uuy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxxy7yrdjxb17nb460uuy.png" alt="Add Bearer Token as the Authorization type" width="800" height="185"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Step 3: Navigate to your workspace
&lt;/h3&gt;

&lt;p&gt;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:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://nubela.co/proxycurl/linkedin/company?utm_campaign=content_amplification&amp;amp;utm_source=dev.to&amp;amp;utm_medium=social&amp;amp;utm_content=post"&gt;Company Profile Endpoint&lt;/a&gt;: Enriches company profile with Crunchbase data like funding, acquisitions, etc. You will need to use the company’s LinkedIn profile URL as input parameter to the API.
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://nubela.co/proxycurl/docs#company-api-company-lookup-endpoint" rel="noopener noreferrer"&gt;Company Lookup Endpoint&lt;/a&gt;: Input a company’s website and get its LinkedIn URL.
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://nubela.co/proxycurl/docs#search-api-company-search-endpoint" rel="noopener noreferrer"&gt;Company Search Endpoint&lt;/a&gt;: Input various search parameters and find a list of companies that matches that search criteria, and then pull Crunchbase data for these companies.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fucbyq7pzltcc7x6n04ge.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fucbyq7pzltcc7x6n04ge.png" alt="The various company-related endpoints" width="744" height="676"&gt;&lt;/a&gt;&lt;br&gt;
The various company-related endpoints&lt;/p&gt;
&lt;h3&gt;
  
  
  Step 4: Edit your params and send!
&lt;/h3&gt;

&lt;p&gt;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 &lt;code&gt;use_cache&lt;/code&gt; from &lt;code&gt;if-present&lt;/code&gt; to &lt;code&gt;if-recent&lt;/code&gt; to get the most up-to-date info, but maybe you don't need the acquisitions information this time.  &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fafrx6a42gofqflj39sn4.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fafrx6a42gofqflj39sn4.gif" alt="Choose the relevant fields that you need. Some cost extra credits." width="600" height="188"&gt;&lt;/a&gt;&lt;br&gt;
Choose the relevant fields that you need. Some cost extra credits.&lt;/p&gt;

&lt;p&gt;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. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvv87h36x032bspy2u2l3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvv87h36x032bspy2u2l3.png" alt="Output from Proxycurl's Company Profile Endpoint" width="800" height="444"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;
&lt;h2&gt;
  
  
  Crunchbase scraping with Proxycurl via Python
&lt;/h2&gt;

&lt;p&gt;Now let’s try and do the same with Python. In the Proxycurl docs under &lt;a href="https://nubela.co/proxycurl/docs#company-api-company-profile-endpoint" rel="noopener noreferrer"&gt;Company Profile Endpoint&lt;/a&gt;, 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.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp6qy4wdgytdfytbar35t.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp6qy4wdgytdfytbar35t.gif" alt="Toggle between shell and Python" width="600" height="628"&gt;&lt;/a&gt;&lt;br&gt;
Toggle between shell and Python&lt;/p&gt;

&lt;p&gt;Now, we can paste in our API key where it says &lt;code&gt;YOUR_API_KEY&lt;/code&gt;. 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:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;

&lt;span class="n"&gt;api_key&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;YOUR_API_KEY&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;
&lt;span class="n"&gt;headers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Authorization&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Bearer &lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="n"&gt;api_endpoint&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;https://nubela.co/proxycurl/api/linkedin/company&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;
&lt;span class="n"&gt;params&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;url&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;https://www.linkedin.com/company/apple/&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;categories&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;include&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;funding_data&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;include&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;exit_data&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;include&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;acquisitions&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;include&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;extra&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;include&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;use_cache&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;if-present&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;fallback_to_cache&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;on-error&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;api_endpoint&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now, what you get is a structured JSON response that includes all the fields that you have specified. Something like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;linkedin_internal_id&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;162479&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
   &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;description&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;We&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;re a diverse collective of thinkers and doers, continually reimagining what&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;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&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;s lives. Including your own.&lt;/span&gt;&lt;span class="se"&gt;\n\n&lt;/span&gt;&lt;span class="s"&gt;Apple is an equal opportunity employer that is committed to inclusion and diversity. Visit apple.com/careers to learn more.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
   &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;website&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;http://www.apple.com/careers&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
   &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;industry&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Computers and Electronics Manufacturing&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
   &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;company_size&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
       &lt;span class="mi"&gt;10001&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
       &lt;span class="n"&gt;null&lt;/span&gt;
   &lt;span class="p"&gt;],&lt;/span&gt;
   &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;company_size_on_linkedin&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;166869&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
   &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;hq&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
       &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;country&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;US&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
       &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;city&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Cupertino&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
       &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;postal_code&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;95014&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
       &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;line_1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;1 Apple Park Way&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
       &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;is_hq&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
       &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;state&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;California&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
   &lt;span class="p"&gt;},&lt;/span&gt;
   &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;company_type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;PUBLIC_COMPANY&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
   &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;founded_year&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1976&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
   &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;specialities&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
       &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Innovative Product Development&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
       &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;World-Class Operations&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
       &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Retail&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
       &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Telephone Support&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
   &lt;span class="p"&gt;],&lt;/span&gt;
   &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;locations&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
       &lt;span class="p"&gt;{&lt;/span&gt;
           &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;country&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;US&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
           &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;city&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Cupertino&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
           &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;postal_code&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;95014&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
           &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;line_1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;1 Apple Park Way&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
           &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;is_hq&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
           &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;state&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;California&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
                 &lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="p"&gt;......&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="n"&gt;Remaining&lt;/span&gt; &lt;span class="n"&gt;Data&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Great! Congratulations on your journey from zero to data! &lt;/p&gt;

&lt;h2&gt;
  
  
  Is any of this legal?
&lt;/h2&gt;

&lt;p&gt;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 &lt;strong&gt;publicly available data&lt;/strong&gt; within these boundaries. Since Crunchbase only houses public data, it is absolutely legal to scrape by operating within the &lt;a href="https://about.crunchbase.com/terms-of-service/" rel="noopener noreferrer"&gt;Crunchbase Terms of Service&lt;/a&gt;. &lt;/p&gt;

&lt;h2&gt;
  
  
  Final thoughts
&lt;/h2&gt;

&lt;p&gt;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. &lt;/p&gt;

&lt;p&gt;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! &lt;/p&gt;

&lt;p&gt;We'd love to hear from you! If you build something cool with our API, let us know at &lt;a href="//mailto:hello@nubela.co"&gt;hello@nubela.co&lt;/a&gt;! And if you found this guide useful, there's more where it came from - sign up for our newsletter!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>programming</category>
      <category>api</category>
    </item>
    <item>
      <title>Build a Lusha Sales Prospecting Clone with NextJS, Tailwind &amp; Proxycurl</title>
      <dc:creator>Proxycurl</dc:creator>
      <pubDate>Wed, 09 Oct 2024 09:43:34 +0000</pubDate>
      <link>https://dev.to/proxycurl/build-a-lusha-sales-prospecting-clone-with-nextjs-tailwind-proxycurl-4hhc</link>
      <guid>https://dev.to/proxycurl/build-a-lusha-sales-prospecting-clone-with-nextjs-tailwind-proxycurl-4hhc</guid>
      <description>&lt;p&gt;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:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Where to get the data for the clone&lt;/li&gt;
&lt;li&gt;  Build the search &amp;amp; filter functions based on various person's parameters&lt;/li&gt;
&lt;li&gt;  Cache past searches&lt;/li&gt;
&lt;li&gt;  How to build the UI&lt;/li&gt;
&lt;li&gt;  And more&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;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 &lt;a href="https://nubela.co/blog/i-cold-emailed-our-way-to-1m-arr-in-18-months-heres-the-story/?utm_campaign=content_amplification&amp;amp;utm_source=dev.to&amp;amp;utm_medium=social&amp;amp;utm_content=post"&gt;$1M ARR in 18 months&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Enough talking, let's get to it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://lusha-clone-by-procxycurl.vercel.app/" rel="noopener noreferrer"&gt;Access the demo clone here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;How it will look like with a list of profiles returned:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fixychgtbc9jpmzixvyy2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fixychgtbc9jpmzixvyy2.png" alt="A list of CFOs based on search input on the left" width="800" height="461"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You get a list of CFOs based on your search input on the left&lt;/p&gt;

&lt;p&gt;Here is a quick sneak peek of the whole thing:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2For0xvu6cuja52fbwvmio.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2For0xvu6cuja52fbwvmio.gif" alt="The full GIF tour of Lusha sales prospecting clone by Proxycurl" width="500" height="327"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A close-to fully functioning prospector with filters based on location, role and company&lt;/p&gt;

&lt;h2&gt;
  
  
  Features of the Lusha sales prospecting clone
&lt;/h2&gt;

&lt;p&gt;This is the feature of Lusha that I cloned, their prospect search feature:  &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F24429efoqdmvtovwrtxh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F24429efoqdmvtovwrtxh.png" alt="Lusha's sales prospect search image on homepage" width="800" height="499"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is the Lusha's prospect search feature I'm cloning. Source: Lusha homepage&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;The app will have the following features&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Search LinkedIn profiles with country, job title and company&lt;/li&gt;
&lt;li&gt;  Export LinkedIn profiles to CSV&lt;/li&gt;
&lt;li&gt;  Save last 10 queries to recent searches in local storage&lt;/li&gt;
&lt;li&gt;  Save API key to local storage&lt;/li&gt;
&lt;li&gt;  View details modal to display person experiences &amp;amp; education&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;p&gt;You'll need these to get started:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Node v18+&lt;/li&gt;
&lt;li&gt;  A Proxycurl account - this is where you'll get the data to populate the app&lt;/li&gt;
&lt;li&gt;  Basic knowledge of React.js &amp;amp; Next.js&lt;/li&gt;
&lt;li&gt;  Basic knowledge of Tailwind CSS&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now, let's get building.&lt;/p&gt;

&lt;h2&gt;
  
  
  Register for a Proxycurl account
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://proxycurl.com/" rel="noopener noreferrer"&gt;Proxycurl&lt;/a&gt; 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.&lt;/p&gt;

&lt;p&gt;For the same reasons, it is the data enrichment tool that I'm using to feed into the Lusha sales prospecting clone &lt;strong&gt;(and of course the fact that I'm from Proxycurl)&lt;/strong&gt;.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;a href="https://nubela.co/proxycurl/auth/register" rel="noopener noreferrer"&gt;Register for an account here&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt; Get *&lt;strong&gt;&lt;em&gt;100 free credits&lt;/em&gt;&lt;/strong&gt;* if you sign up with a work email, or *&lt;strong&gt;&lt;em&gt;10 credits&lt;/em&gt;&lt;/strong&gt;* for personal email&lt;/li&gt;
&lt;li&gt; &lt;a href="https://nubela.co/proxycurl/dashboard/proxycurl-api/api-key/" rel="noopener noreferrer"&gt;Get your API key in the dashbord here&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Create a new Next.js project
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx create-next-app@latest hursa
&lt;span class="nb"&gt;cd &lt;/span&gt;hursa &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; npm run dev

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Make sure to enable Tailwind CSS, the rest of the Next.js options is up to your preference.&lt;/p&gt;

&lt;p&gt;Let's start by building the tabs, to save time I'll use &lt;a href="https://ui.shadcn.com/docs/components/tabs" rel="noopener noreferrer"&gt;shadcn components, here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;And for the icons let's use React Icons.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx shadcn@latest add tabs button input accordion checkbox dialog
npm &lt;span class="nb"&gt;install &lt;/span&gt;react-icons &lt;span class="nt"&gt;--save&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then modify &lt;code&gt;app/page.js&lt;/code&gt; to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;use client&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;Tabs&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;TabsList&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;TabsTrigger&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;TabsContent&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@/components/ui/tabs&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;BsPeopleFill&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;BsBuildingsFill&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;react-icons/bs&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;Button&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@/components/ui/button&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;PeopleFilter&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@/components/PeopleFilter&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;useState&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;react&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;Home&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;peoplePayload&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setPeoplePayload&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useState&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;country&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;""&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;current_role&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;""&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;current_company_name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;""&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"p-8 bg-gray-200 min-h-full"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Tabs&lt;/span&gt; &lt;span class="na"&gt;defaultValue&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"people"&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"max-w-7xl mx-auto relative"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;TabsList&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;TabsTrigger&lt;/span&gt;
            &lt;span class="na"&gt;value&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"people"&lt;/span&gt;
            &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"flex items-center gap-2 flex-grow-0"&lt;/span&gt;
          &lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;BsPeopleFill&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
            People
          &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;TabsTrigger&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;TabsTrigger&lt;/span&gt;
            &lt;span class="na"&gt;value&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"company"&lt;/span&gt;
            &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"flex items-center gap-2 flex-grow-0"&lt;/span&gt;
          &lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;BsBuildingsFill&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
            Companies
          &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;TabsTrigger&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;TabsList&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"absolute right-0 top-0 flex gap-6"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Button&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"flex items-center gap-2 bg-blue-600 text-white px-4 rounded-md py-2 disabled:opacity-50 font-semibold"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
            Settings
          &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;Button&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Button&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"flex items-center gap-2 bg-white text-blue-600 px-4 rounded-md py-2 disabled:opacity-50 font-semibold"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
            Recent Searches
          &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;Button&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Button&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"flex items-center gap-2 bg-blue-600 text-white px-4 rounded-md py-2 disabled:opacity-50 font-semibold"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
            Export to CSV
          &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;Button&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;

        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;TabsContent&lt;/span&gt; &lt;span class="na"&gt;value&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"people"&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"w-full mt-6 min-h-56"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"flex gap-6"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"w-1/4 bg-white rounded-lg p-4"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
              &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;h3&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"font-bold"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Filters&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;h3&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"w-3/4 bg-white rounded-lg p-4"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
              &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;h3&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"font-bold"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;People profiles results&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;h3&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;TabsContent&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;TabsContent&lt;/span&gt; &lt;span class="na"&gt;value&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"company"&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"w-full mt-6"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"flex gap-6"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"w-1/4 bg-white rounded-lg p-4"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
              &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;h3&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"font-bold"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Filters&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;h3&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"w-3/4 bg-white rounded-lg p-4"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
              &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;h3&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"font-bold"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Company profiles results&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;h3&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;TabsContent&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;Tabs&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You should now be able to see:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7zno063a2hxpfsx76ask.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7zno063a2hxpfsx76ask.png" alt="Building the necessary modals of the sales prospecting Lusha clone" width="800" height="297"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;First step down.&lt;/p&gt;

&lt;h2&gt;
  
  
  Building filters for people prospector
&lt;/h2&gt;

&lt;p&gt;Instead of &lt;a href="https://nubela.co/blog/build-a-lusha-sales-prospecting-clone-with-nextjs-tailwind-proxycurl/?utm_campaign=content_amplification&amp;amp;utm_source=dev.to&amp;amp;utm_medium=social&amp;amp;utm_content=post"&gt;building a full Lusha app&lt;/a&gt; with all possible filters, for this clone I'm using only these 3 parameters for now:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;code&gt;country&lt;/code&gt;, which we will label as &lt;code&gt;Location&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt; &lt;code&gt;current_role_title&lt;/code&gt;, which we will label as &lt;code&gt;Job title&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt; &lt;code&gt;current_company_name&lt;/code&gt;, which we will label as &lt;code&gt;Current Company&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;These are parameters available with &lt;a href="https://nubela.co/proxycurl/search-api?utm_campaign=content_amplification&amp;amp;utm_source=dev.to&amp;amp;utm_medium=social&amp;amp;utm_content=post"&gt;Proxycurl's Person Search API&lt;/a&gt;, which we're using to build the search function for the clone. The Person Search API has other parameters too, such as &lt;code&gt;linkedin_groups&lt;/code&gt;, &lt;code&gt;skills&lt;/code&gt;, &lt;code&gt;past_company_name&lt;/code&gt; and many more. You can read more about it &lt;a href="https://nubela.co/proxycurl/docs#search-api-person-search-endpoint" rel="noopener noreferrer"&gt;in the docs here&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Implementing people filter component
&lt;/h3&gt;

&lt;p&gt;To make filter UI cleaner we will use accordion instead of multiple input field displayed at once.&lt;/p&gt;

&lt;p&gt;Create &lt;code&gt;components/PeopleFilter.jsx&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;react&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;Accordion&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;AccordionContent&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;AccordionItem&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;AccordionTrigger&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@/components/ui/accordion&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;IoMdBriefcase&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;react-icons/io&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;FaBuilding&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;react-icons/fa&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;IoLocationSharp&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;react-icons/io5&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;Button&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@/components/ui/button&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;Input&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@/components/ui/input&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;PeopleFilter&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;payload&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setPayload&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;h3&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"font-bold"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Filters&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;h3&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Accordion&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"single"&lt;/span&gt; &lt;span class="na"&gt;collapsible&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;AccordionItem&lt;/span&gt; &lt;span class="na"&gt;value&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"country"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;AccordionTrigger&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"flex justify-start gap-2"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;IoLocationSharp&lt;/span&gt;
              &lt;span class="na"&gt;style&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;rotate(0deg)&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
              &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"h-5 w-5  text-blue-600 inline-block"&lt;/span&gt;
            &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;span&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"text-lg font-bold"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Location&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;span&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;AccordionTrigger&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;AccordionContent&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="cm"&gt;/* Autocomplete component here */&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
          &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;AccordionContent&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;AccordionItem&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;

        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;AccordionItem&lt;/span&gt; &lt;span class="na"&gt;value&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"current-role"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;AccordionTrigger&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"flex justify-start gap-2"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;IoMdBriefcase&lt;/span&gt;
              &lt;span class="na"&gt;style&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;rotate(0deg)&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
              &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"h-5 w-5  text-blue-600 inline-block"&lt;/span&gt;
            &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;span&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"text-lg font-bold"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Job Title&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;span&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;AccordionTrigger&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;AccordionContent&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Input&lt;/span&gt;
              &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"text"&lt;/span&gt;
              &lt;span class="na"&gt;placeholder&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"Software Engineer"&lt;/span&gt;
              &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"border border-gray-300 rounded-md p-2"&lt;/span&gt;
              &lt;span class="na"&gt;value&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;payload&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;current_role_title&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
              &lt;span class="na"&gt;onChange&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;
                &lt;span class="nf"&gt;setPayload&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="p"&gt;...&lt;/span&gt;&lt;span class="nx"&gt;payload&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;current_role_title&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;target&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt;
              &lt;span class="si"&gt;}&lt;/span&gt;
            &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
          &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;AccordionContent&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;AccordionItem&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;

        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;AccordionItem&lt;/span&gt; &lt;span class="na"&gt;value&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"current-company"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;AccordionTrigger&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"flex justify-start gap-2"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;FaBuilding&lt;/span&gt;
              &lt;span class="na"&gt;style&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;rotate(0deg)&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
              &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"h-5 w-5  text-blue-600 inline-block"&lt;/span&gt;
            &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;span&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"text-lg font-bold"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Current Company&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;span&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;AccordionTrigger&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;AccordionContent&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Input&lt;/span&gt;
              &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"text"&lt;/span&gt;
              &lt;span class="na"&gt;placeholder&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"Current Company"&lt;/span&gt;
              &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"border border-gray-300 rounded-md p-2"&lt;/span&gt;
              &lt;span class="na"&gt;value&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;payload&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;current_company_name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
              &lt;span class="na"&gt;onChange&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;
                &lt;span class="nf"&gt;setPayload&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="p"&gt;...&lt;/span&gt;&lt;span class="nx"&gt;payload&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;current_company_name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;target&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt;
              &lt;span class="si"&gt;}&lt;/span&gt;
            &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
          &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;AccordionContent&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;AccordionItem&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;

        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"flex justify-center"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Button&lt;/span&gt;
            &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"w-full mt-4 bg-blue-600 text-white text-md font-semibold"&lt;/span&gt;
          &lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
            Apply
          &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;Button&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;Accordion&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nx"&gt;PeopleFilter&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And then in &lt;code&gt;app/page.js&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;PeopleFilter&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@/components/PeopleFilter&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;useState&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;react&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;peoplePayload&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setPeoplePayload&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useState&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;country&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;""&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;current_role&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;""&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;current_company_name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;""&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;peopleResults&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setPeopleResults&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useState&lt;/span&gt;&lt;span class="p"&gt;([]);&lt;/span&gt;

&lt;span class="c1"&gt;// and then inside people tab&lt;/span&gt;
&lt;span class="c1"&gt;// replace &amp;lt;h3 className="font-bold"&amp;gt;Filters&amp;lt;/h3&amp;gt; with&lt;/span&gt;
&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;PeopleFilter&lt;/span&gt; &lt;span class="na"&gt;payload&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;peoplePayload&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="na"&gt;setPayload&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;setPeoplePayload&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now you have the filters built:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2alqhssvf3ma3ie5wz0o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2alqhssvf3ma3ie5wz0o.png" alt="Filters built for the Lusha's sales prospecting clone" width="800" height="300"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Filters - done.&lt;/p&gt;

&lt;h3&gt;
  
  
  Country ISO Autocomplete component
&lt;/h3&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;First we need this json for the option &lt;code&gt;lib/countryISO.json&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"value"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"AD"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"label"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Andorra"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"value"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"AE"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"label"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"United Arab Emirates"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"value"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"AF"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"label"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Afghanistan"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Rest of the json is available here &lt;a href="https://github.com/nubelaco/use-case-examples/blob/main/people-prospector/lib/countryISO.json" rel="noopener noreferrer"&gt;on our GitHub repo&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Create &lt;code&gt;components/Autocomplete.jsx&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;useState&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;useRef&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;useEffect&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;react&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;options&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;../lib/countryISO.json&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;Input&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@/components/ui/input&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;AutoComplete&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;setSelectedOption&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;inputValue&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setInputValue&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useState&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;''&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;filteredOptions&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setFilteredOptions&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useState&lt;/span&gt;&lt;span class="p"&gt;([]);;&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;dropdownRef&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useRef&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; 

    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;handleChange&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;value&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;target&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="nf"&gt;setInputValue&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="nf"&gt;setFilteredOptions&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;options&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;filter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;option&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;option&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;label&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;toLowerCase&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;includes&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;toLowerCase&lt;/span&gt;&lt;span class="p"&gt;())));&lt;/span&gt;
    &lt;span class="p"&gt;};&lt;/span&gt;

    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;handleSelect&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;option&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nf"&gt;setSelectedOption&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;option&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;label&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="nf"&gt;setInputValue&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;option&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;label&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="nf"&gt;setFilteredOptions&lt;/span&gt;&lt;span class="p"&gt;([]);&lt;/span&gt;
    &lt;span class="p"&gt;};&lt;/span&gt;

    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;handleClickOutside&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;dropdownRef&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;current&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;dropdownRef&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;current&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;contains&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;target&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="nf"&gt;setFilteredOptions&lt;/span&gt;&lt;span class="p"&gt;([]);&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;};&lt;/span&gt;

    &lt;span class="nf"&gt;useEffect&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;addEventListener&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;mousedown&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;handleClickOutside&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;removeEventListener&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;mousedown&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;handleClickOutside&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="p"&gt;};&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="p"&gt;[]);&lt;/span&gt;

    &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"relative"&lt;/span&gt; &lt;span class="na"&gt;ref&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;dropdownRef&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Input&lt;/span&gt;
                &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"text"&lt;/span&gt; 
                &lt;span class="na"&gt;value&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;inputValue&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; 
                &lt;span class="na"&gt;onChange&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;handleChange&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; 
                &lt;span class="na"&gt;placeholder&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"United States"&lt;/span&gt; 
                &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"border border-gray-300 rounded p-2 w-full mt-6"&lt;/span&gt;
            &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;filteredOptions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
                &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;ul&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"relative bg-white border border-gray-300 rounded mt-1 w-full z-10  max-h-40 overflow-y-auto"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; 
                    &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;filteredOptions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;map&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;option&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;index&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
                        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;li&lt;/span&gt; 
                            &lt;span class="na"&gt;key&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;index&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; 
                            &lt;span class="na"&gt;onClick&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;handleSelect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;option&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; 
                            &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"p-2 hover:bg-gray-200 cursor-pointer z-50"&lt;/span&gt;
                        &lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
                            &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;option&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;label&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; 
                        &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;li&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
                    &lt;span class="p"&gt;))&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
                &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;ul&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nx"&gt;AutoComplete&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And then import it into the &lt;code&gt;components/PeopleFilter.jsx&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;AutoComplete&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;./AutoComplete&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="c1"&gt;// ...existing code&lt;/span&gt;
&lt;span class="c1"&gt;// replace  {/* Autocomplete component here */}&lt;/span&gt;
&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;AutoComplete&lt;/span&gt; &lt;span class="na"&gt;setSelectedOption&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;setPayload&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="p"&gt;...&lt;/span&gt;&lt;span class="nx"&gt;payload&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;country&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;value&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now there'll be a dropdown list of countries relevant to what the users are inputting. A much better UX:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqi1zpmw6tljxxrf5zj6r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqi1zpmw6tljxxrf5zj6r.png" alt="Countries dropdown for the filter of Lusha's sales prospecting clone" width="800" height="554"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We don't just build things that work, we build things that are nice to use too.&lt;/p&gt;

&lt;h2&gt;
  
  
  Building the people result component
&lt;/h2&gt;

&lt;p&gt;Let's mock the result from and call it &lt;code&gt;personSearchMock.json&lt;/code&gt; in &lt;code&gt;lib/&lt;/code&gt; directory so we can start building the UI.&lt;/p&gt;

&lt;p&gt;You can get it from the sample response in our &lt;a href="https://nubela.co/proxycurl/docs#search-api-person-search-endpoint" rel="noopener noreferrer"&gt;Person Search Endpoint docs&lt;/a&gt; or &lt;a href="https://github.com/nubelaco" rel="noopener noreferrer"&gt;from our GitHub repo&lt;/a&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;mockPersonSearch&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@/lib/personSearchMock.json&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;peopleResults&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setPeopleResults&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useState&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;mockPersonSearch&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;results&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;// ...rest of code and then replace &lt;/span&gt;
&lt;span class="c1"&gt;//  &amp;lt;h3 className="font-bold"&amp;gt;People profiles results&amp;lt;/h3&amp;gt; with&lt;/span&gt;
 &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;PeopleResult&lt;/span&gt; &lt;span class="na"&gt;results&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;peopleResults&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now create &lt;code&gt;components/PeopleResult.jsx&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;react&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;FaLinkedin&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;react-icons/fa&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;IoLocationSharp&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;react-icons/io5&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;Checkbox&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@radix-ui/react-checkbox&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;Link&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;next/link&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;Button&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@/components/ui/button&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;PeopleResult&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;results&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;selectedPeople&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setSelectedPeople&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;results&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;map&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;person&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
          &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;
            &lt;span class="na"&gt;key&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;person&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;profile&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;public_identifier&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
            &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"flex border-b-2 border-gray-200 py-4"&lt;/span&gt;
          &lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Checkbox&lt;/span&gt;
              &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"mr-6 self-center"&lt;/span&gt;
              &lt;span class="na"&gt;checked&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;selectedPeople&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;includes&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;person&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
              &lt;span class="na"&gt;onCheckedChange&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;checked&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;checked&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                  &lt;span class="nf"&gt;setSelectedPeople&lt;/span&gt;&lt;span class="p"&gt;([...&lt;/span&gt;&lt;span class="nx"&gt;selectedPeople&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;person&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;
                &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                  &lt;span class="nf"&gt;setSelectedPeople&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
                    &lt;span class="nx"&gt;selectedPeople&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;filter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
                      &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;p&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;
                        &lt;span class="nx"&gt;p&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;profile&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;public_identifier&lt;/span&gt; &lt;span class="o"&gt;!==&lt;/span&gt;
                        &lt;span class="nx"&gt;person&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;profile&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;public_identifier&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                    &lt;span class="p"&gt;),&lt;/span&gt;
                  &lt;span class="p"&gt;);&lt;/span&gt;
                &lt;span class="p"&gt;}&lt;/span&gt;
              &lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
            &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"flex flex-col border-r-2 border-gray-200 w-[400px] truncate pr-4"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
              &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"flex items-center gap-2 flex-0"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;a&lt;/span&gt;
                  &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"text-black block text-md font-semibold"&lt;/span&gt;
                  &lt;span class="na"&gt;href&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;person&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;linkedin_profile_url&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
                  &lt;span class="na"&gt;target&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"_blank"&lt;/span&gt;
                  &lt;span class="na"&gt;rel&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"noopener noreferrer"&lt;/span&gt;
                &lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
                  &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;person&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;profile&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;full_name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
                &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;a&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;FaLinkedin&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"text-blue-600"&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
              &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
              &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"text-sm"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;person&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;profile&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;experiences&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
              &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"flex items-center gap-2 mt-2"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;IoLocationSharp&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"text-gray-500"&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
                &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;span&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"text-gray-500 text-sm"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;person&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;profile&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;city&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;, &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;person&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;profile&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;state&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;, &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;person&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;profile&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;country&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;span&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
              &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;

            &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"w-[300px] truncate px-4"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
              &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;person&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;profile&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;experiences&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nx"&gt;company_linkedin_profile_url&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
                &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Link&lt;/span&gt;
                  &lt;span class="na"&gt;href&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;
                    &lt;span class="nx"&gt;person&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;profile&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;experiences&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nx"&gt;company_linkedin_profile_url&lt;/span&gt;
                  &lt;span class="si"&gt;}&lt;/span&gt;
                  &lt;span class="na"&gt;target&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"_blank"&lt;/span&gt;
                  &lt;span class="na"&gt;rel&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"noopener noreferrer"&lt;/span&gt;
                &lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
                  &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;span&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"text-blue-600 text-sm font-semibold"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
                    &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;person&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;profile&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;experiences&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nx"&gt;company&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
                  &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;span&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;Link&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
              &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
                &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;span&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"text-sm font-semibold"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
                  &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;person&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;profile&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;experiences&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nx"&gt;company&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
                &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;span&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
              &lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;

              &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;person&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;profile&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;experiences&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nx"&gt;location&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
                &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;span&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"block text-sm text-gray-500 "&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
                  &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;person&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;profile&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;experiences&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nx"&gt;location&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
                &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;span&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
              &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
            &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;

            &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"ml-auto"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
              &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Button&lt;/span&gt;
                &lt;span class="c1"&gt;// onClick={() =&amp;gt; handleViewDetails(person)}&lt;/span&gt;
                &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"border-2 border-blue-600 bg-white text-blue-600 px-4 py-2 rounded-md hover:text-white"&lt;/span&gt;
              &lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
                View Details
              &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;Button&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;);&lt;/span&gt;
      &lt;span class="p"&gt;})&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nx"&gt;PeopleResult&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Tada! Now you get a person profile in the result modal.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw8gjw0cwvbxyxy12gjs3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw8gjw0cwvbxyxy12gjs3.png" alt="Results modal for the Lusha sales prospecting clone." width="800" height="226"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The first result now shown!&lt;/p&gt;

&lt;p&gt;Next, let's build the modal component that shows experiences &amp;amp; educations when the "View Details" button is clicked.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;components/Modal.jsx&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;react&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;Dialog&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;DialogContent&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;DialogDescription&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;DialogHeader&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;DialogTitle&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;DialogTrigger&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@/components/ui/dialog&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;Modal&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;isOpen&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setIsOpen&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;viewDetails&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;viewDetails&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Dialog&lt;/span&gt; &lt;span class="na"&gt;open&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;isOpen&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="na"&gt;onOpenChange&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;setIsOpen&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;DialogContent&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"max-w-5xl"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;DialogTitle&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;span&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"truncate"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;viewDetails&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;profile&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;full_name&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; - &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;viewDetails&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;profile&lt;/span&gt;&lt;span class="p"&gt;?.&lt;/span&gt;&lt;span class="nx"&gt;headline&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;span&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;DialogTitle&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;DialogHeader&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;DialogDescription&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;span&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"truncate text-sm"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
              &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;span&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;viewDetails&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;profile&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;city&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nx"&gt;viewDetails&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;profile&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;city&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
              &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;span&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
              &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;span&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;viewDetails&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;profile&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;state&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="s2"&gt;`, &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;viewDetails&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;profile&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;state&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
              &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;span&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
              &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;span&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;viewDetails&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;profile&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;country&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt;
                  &lt;span class="s2"&gt;`, &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;viewDetails&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;profile&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;country&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
              &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;span&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;span&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;

            &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;viewDetails&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;profile&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;experiences&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
              &lt;span class="p"&gt;&amp;lt;&amp;gt;&lt;/span&gt;
                &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;h2&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"text-lg font-bold mt-6 mb-2"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Experiences&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;h2&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;

                &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"flex flex-col gap-2"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
                  &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;viewDetails&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;profile&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;experiences&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;map&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;experience&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;index&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
                    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;key&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;experience&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
                      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;span&lt;/span&gt;
                        &lt;span class="na"&gt;key&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;index&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
                        &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"block text-sm text-gray-600 font-semibold"&lt;/span&gt;
                      &lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;experience&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; at &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;experience&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;company&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;span&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
                      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;span&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"block text-sm text-gray-500"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
                        &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;experience&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;starts_at&lt;/span&gt;&lt;span class="p"&gt;?.&lt;/span&gt;&lt;span class="nx"&gt;day&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt;
                          &lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;experience&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;starts_at&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;day&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;/&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;experience&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;starts_at&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;month&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;/&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;experience&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;starts_at&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;year&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; - `&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;

                        &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;experience&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ends_at&lt;/span&gt;&lt;span class="p"&gt;?.&lt;/span&gt;&lt;span class="nx"&gt;day&lt;/span&gt;
                          &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;experience&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ends_at&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;day&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;/&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;experience&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ends_at&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;month&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;/&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;experience&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ends_at&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;year&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;
                          &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Present&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
                      &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;span&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
                    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
                  &lt;span class="p"&gt;))&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
                &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
              &lt;span class="p"&gt;&amp;lt;/&amp;gt;&lt;/span&gt;
            &lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;

            &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;viewDetails&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;profile&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;education&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
              &lt;span class="p"&gt;&amp;lt;&amp;gt;&lt;/span&gt;
                &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;h2&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"text-lg font-bold mt-6 mb-2"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Education&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;h2&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"flex flex-col gap-2"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
                  &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;viewDetails&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;profile&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;education&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;map&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;education&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;index&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
                    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;key&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;education&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;degree_name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
                      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;span&lt;/span&gt;
                        &lt;span class="na"&gt;key&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;index&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
                        &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"block text-sm text-gray-600 font-semibold"&lt;/span&gt;
                      &lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;education&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;degree_name&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; in &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;education&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;field_of_study&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; at &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;education&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;school&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;span&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
                      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;span&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"block text-sm text-gray-500"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
                        &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;education&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;starts_at&lt;/span&gt;&lt;span class="p"&gt;?.&lt;/span&gt;&lt;span class="nx"&gt;day&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt;
                          &lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;education&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;starts_at&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;day&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;/&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;education&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;starts_at&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;month&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;/&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;education&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;starts_at&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;year&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; - `&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;

                        &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;education&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ends_at&lt;/span&gt;&lt;span class="p"&gt;?.&lt;/span&gt;&lt;span class="nx"&gt;day&lt;/span&gt;
                          &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;education&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ends_at&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;day&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;/&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;education&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ends_at&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;month&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;/&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;education&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ends_at&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;year&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;
                          &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Present&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
                      &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;span&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
                    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
                  &lt;span class="p"&gt;))&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
                &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
              &lt;span class="p"&gt;&amp;lt;/&amp;gt;&lt;/span&gt;
            &lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
          &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;DialogDescription&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;DialogHeader&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;DialogContent&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;Dialog&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nx"&gt;Modal&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And then modify &lt;code&gt;components/PeopleResult.jsx&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;Modal&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;./Modal&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;isModalOpen&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setIsModalOpen&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useState&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;viewDetails&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setViewDetails&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useState&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;handleViewDetails&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;person&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nf"&gt;setViewDetails&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;person&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nf"&gt;setIsModalOpen&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="c1"&gt;// ... existing code&lt;/span&gt;
  &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Button&lt;/span&gt;
                &lt;span class="na"&gt;onClick&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;handleViewDetails&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;person&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
                &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"border-2 border-blue-600 bg-white text-blue-600 px-4 py-2 rounded-md hover:text-white"&lt;/span&gt;
              &lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
                View Details
              &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;Button&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="c1"&gt;// ... existing code&lt;/span&gt;

  &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Modal&lt;/span&gt;
        &lt;span class="na"&gt;isOpen&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;isModalOpen&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
        &lt;span class="na"&gt;setIsOpen&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;setIsModalOpen&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
        &lt;span class="na"&gt;viewDetails&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;viewDetails&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
      &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="err"&gt;/&lt;/span&gt;&lt;span class="na"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is the result with experiences and education shown:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh7g3c094t54asv18upme.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh7g3c094t54asv18upme.png" alt="Full results - with experiences and education for the Lusha sales prospecting clone" width="800" height="309"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Full results - with experiences and education&lt;/p&gt;

&lt;p&gt;Now to prepare for the fetching of data from Proxycurl's API, let's create a loader while we wait for the response.&lt;/p&gt;

&lt;p&gt;Create this file&lt;code&gt;components/Loader.jsx&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;react&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;Loader&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"flex flex-col justify-center items-center h-screen"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"animate-spin rounded-full h-32 w-32 border-t-4 border-b-4 border-blue-600"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"text-2xl font-bold mt-6"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Loading...&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nx"&gt;Loader&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And then modify &lt;code&gt;app/page.js&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt; &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;isLoading&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setIsLoading&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useState&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;//...existing code&lt;/span&gt;
&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"w-3/4 bg-white rounded-lg p-4"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;isLoading&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Loader&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
  &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;isLoading&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;h3&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"font-bold"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;People profiles results&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;h3&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;PeopleResult&lt;/span&gt;
        &lt;span class="na"&gt;results&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;peopleResults&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
        &lt;span class="na"&gt;selectedPeople&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;selectedPeople&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
        &lt;span class="na"&gt;setSelectedPeople&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;setSelectedPeople&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
      &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now, you get this beautiful spinning thing that users see while they wait for the results to load:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8k83hpkal06ehf6aijua.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8k83hpkal06ehf6aijua.gif" alt="Loader for the Lusha sales prospecting clone" width="800" height="392"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Another great UX implementation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Inputting Proxycurl API key
&lt;/h2&gt;

&lt;p&gt;In the clone, I built a way for you to input your Proxycurl API key for the clone to work &lt;strong&gt;(the "Settings" button on top)&lt;/strong&gt;. 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.&lt;/p&gt;

&lt;p&gt;First, create &lt;code&gt;components/SettingsModal.jsx&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;react&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;Dialog&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;DialogContent&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;DialogTitle&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@/components/ui/dialog&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;Input&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@/components/ui/input&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;Button&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@/components/ui/button&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;SettingsModal&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;isSettingsOpen&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setSettingsOpen&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;apiKey&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setApiKey&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;

  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;handleSaveApiKey&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;localStorage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;setItem&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;apiKey&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;apiKey&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nf"&gt;setSettingsOpen&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;};&lt;/span&gt;

  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Dialog&lt;/span&gt; &lt;span class="na"&gt;open&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;isSettingsOpen&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="na"&gt;onOpenChange&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;setSettingsOpen&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;DialogContent&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;DialogTitle&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Settings&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;DialogTitle&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;h1&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Add your API key&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;h1&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Input&lt;/span&gt;
          &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"text"&lt;/span&gt;
          &lt;span class="na"&gt;placeholder&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"API key"&lt;/span&gt;
          &lt;span class="na"&gt;value&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;apiKey&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
          &lt;span class="na"&gt;onChange&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;setApiKey&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;target&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
        &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Button&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"w-min mt-4"&lt;/span&gt; &lt;span class="na"&gt;onClick&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;handleSaveApiKey&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
          Save
        &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;Button&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;DialogContent&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;Dialog&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nx"&gt;SettingsModal&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And modify &lt;code&gt;app/page.js&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="c1"&gt;//...existing code&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;apiKey&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setApiKey&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useState&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;isSettingsOpen&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setIsSettingsOpen&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useState&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

 &lt;span class="nf"&gt;useEffect&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;apiKey&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;localStorage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getItem&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;apiKey&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;apiKey&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nf"&gt;setApiKey&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;apiKey&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="p"&gt;[]);&lt;/span&gt;

&lt;span class="c1"&gt;// ...existing code&lt;/span&gt;
&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="err"&gt;/&lt;/span&gt;&lt;span class="na"&gt;Tabs&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;SettingsModal&lt;/span&gt; &lt;span class="na"&gt;isSettingsOpen&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;isSettingsOpen&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="na"&gt;setSettingsOpen&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;setIsSettingsOpen&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="na"&gt;apiKey&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;apiKey&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="na"&gt;setApiKey&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;setApiKey&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now, you can add your API key. A reminder that you can get your &lt;a href="https://nubela.co/proxycurl/dashboard/proxycurl-api/api-key/" rel="noopener noreferrer"&gt;API key from Proxycurl's dashboard here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmwa6c5h2hc0s82bvw5n7.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmwa6c5h2hc0s82bvw5n7.gif" alt="Proxycurl API input modal for the Lusha sales prospecting clone" width="800" height="406"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Simply input your Proxycurl API to get the data needed for the app&lt;/p&gt;

&lt;h2&gt;
  
  
  Make a call to the live API
&lt;/h2&gt;

&lt;p&gt;Modify &lt;code&gt;components/PeopleFilter.jsx&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;PeopleFilter&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;setIsLoading&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setPeopleResults&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;apiKey&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setError&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useState&lt;/span&gt;&lt;span class="p"&gt;([]);&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;payload&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setPayload&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useState&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="na"&gt;country&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;""&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;current_role&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;""&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;current_company_name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;""&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;handleSearch&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;async &lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="nf"&gt;setError&lt;/span&gt;&lt;span class="p"&gt;([]);&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;hasError&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;payload&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;country&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;""&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nf"&gt;setError&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;prev&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;[...&lt;/span&gt;&lt;span class="nx"&gt;prev&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Country is required&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;
  &lt;span class="nx"&gt;hasError&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;apiKey&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nf"&gt;setError&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;prev&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="p"&gt;...&lt;/span&gt;&lt;span class="nx"&gt;prev&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Please enter your API key in the settings&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;]);&lt;/span&gt;
  &lt;span class="nx"&gt;hasError&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;hasError&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;try&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nf"&gt;setIsLoading&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;params&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;URLSearchParams&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="na"&gt;country&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;countryISO&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;find&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;country&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;country&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;label&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="nx"&gt;payload&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;country&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
      &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;page_size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;enrich_profiles&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;enrich&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;

  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;payload&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;current_role&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;params&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;current_role_title&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;payload&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;current_role&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;payload&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;current_company_name&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;params&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;current_company_name&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;payload&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;current_company_name&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`/api/peopleSearch?&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;params&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;toString&lt;/span&gt;&lt;span class="p"&gt;()}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;method&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;GET&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;Authorization&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;`Bearer &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;apiKey&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;})&lt;/span&gt;
    &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;then&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
    &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;then&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nf"&gt;setPeopleResults&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;results&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;catch &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;error&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nf"&gt;setIsLoading&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="c1"&gt;//...existing code&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt;
&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;map&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;
    &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"text-red-500 text-sm font-semibold text-center mt-2"&lt;/span&gt;
    &lt;span class="na"&gt;key&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="p"&gt;))}&lt;/span&gt;
&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="err"&gt;/&lt;/span&gt;&lt;span class="na"&gt;Accordion&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now when users search with an empty API key or location/country, we get this error:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F94b3x5c5hbtd6gugdb4s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F94b3x5c5hbtd6gugdb4s.png" alt="Error message from no input on the Lusha sales prospecting clone" width="654" height="798"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Error message from no input&lt;/p&gt;

&lt;p&gt;Next, let's handle the empty state in &lt;code&gt;components/PeopleResult.jsx&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="c1"&gt;// first div&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;isLoading&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nx"&gt;results&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;span&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"flex items-center gap-4 w-full justify-center mt-24"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;FaArrowLeft&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"text-5xl"&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;span&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"text-3xl font-semibold"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
              Find your prospects here
            &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;span&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;span&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You get this view that is without any input in the filters:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnu1gqew7jypchprc85k4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnu1gqew7jypchprc85k4.png" alt="This is empty state view of the Lusha sales prospecting clone" width="800" height="331"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Empty state view of the Lusha sales prospecting clone&lt;/p&gt;

&lt;p&gt;Lastly, we need to create Next.js API route to make the API call.&lt;/p&gt;

&lt;p&gt;Create &lt;code&gt;app/api/peopleSearch/route.js&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;NextResponse&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;next/server&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;GET&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;request&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;params&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;url&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;split&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;?&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;

  &lt;span class="k"&gt;try&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
      &lt;span class="s2"&gt;`https://nubela.co/proxycurl/api/v2/search/person?&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;
       &lt;span class="nx"&gt;params&lt;/span&gt;
      &lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="na"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
          &lt;span class="na"&gt;Authorization&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Authorization&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
        &lt;span class="p"&gt;},&lt;/span&gt;
      &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; 
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;NextResponse&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; 
  &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;catch &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;NextResponse&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;error&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And there you go, you've successfully created this masterpiece which is the Lusha sales prospecting clone.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdb07zle0vcjwu1w2v4zw.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdb07zle0vcjwu1w2v4zw.gif" alt="The completed Lusha sales prospecting clone" width="1090" height="658"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Voila! Try it yourself!&lt;/p&gt;

&lt;h2&gt;
  
  
  Proxycurl powers many amazing applications like this
&lt;/h2&gt;

&lt;p&gt;Congratulations, you made it to the end.&lt;/p&gt;

&lt;p&gt;This is your reward as promised: &lt;a href="https://github.com/nubelaco/use-case-examples/tree/main/people-prospector" rel="noopener noreferrer"&gt;the full code on our GitHub repo&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;And the link to &lt;a href="https://lusha-clone-by-procxycurl.vercel.app/" rel="noopener noreferrer"&gt;the clone that I built&lt;/a&gt; again.&lt;/p&gt;

&lt;p&gt;At Proxycurl, we have a full suite of &lt;a href="https://nubela.co/proxycurl?utm_campaign=content_amplification&amp;amp;utm_source=dev.to&amp;amp;utm_medium=social&amp;amp;utm_content=post](https://nubela.co/proxycurl?utm_campaign=content_amplification&amp;amp;utm_source=dev.to&amp;amp;utm_medium=social&amp;amp;utm_content=post)"&gt;API products&lt;/a&gt; and a &lt;a href="https://nubela.co/proxycurl/linkdb?utm_campaign=content_amplification&amp;amp;utm_source=dev.to&amp;amp;utm_medium=social&amp;amp;utm_content=post](https://nubela.co/proxycurl/linkdb?utm_campaign=content_amplification&amp;amp;utm_source=dev.to&amp;amp;utm_medium=social&amp;amp;utm_content=post)"&gt;LinkDB database&lt;/a&gt; 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 &lt;a href="https://nubela.co/proxycurl/use-cases?utm_campaign=content_amplification&amp;amp;utm_source=dev.to&amp;amp;utm_medium=social&amp;amp;utm_content=post"&gt;&lt;strong&gt;all the Proxycurl use cases here&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;Have fun building, and reach out to us &lt;a href="//mailto:hello@nubela.co"&gt;via email&lt;/a&gt; or live chat if you have any questions&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;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 &lt;a href="//mailto:marketing@nubela.co"&gt;marketing@nubela.co&lt;/a&gt;. We'll be glad to get in touch.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
    </item>
    <item>
      <title>The Most In-Depth Guide to 18 Clearbit Competitors &amp; Alternatives</title>
      <dc:creator>Proxycurl</dc:creator>
      <pubDate>Thu, 03 Oct 2024 05:19:40 +0000</pubDate>
      <link>https://dev.to/proxycurl/the-most-in-depth-guide-to-18-clearbit-competitors-alternatives-34bi</link>
      <guid>https://dev.to/proxycurl/the-most-in-depth-guide-to-18-clearbit-competitors-alternatives-34bi</guid>
      <description>&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsxenmvwm46z8h2fx54d6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsxenmvwm46z8h2fx54d6.png" alt="Proxycurl" width="800" height="406"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;"Is there another way I can do this?"&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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!&lt;/p&gt;

&lt;h3&gt;
  
  
  TL;DR Table
&lt;/h3&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; 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.&lt;/li&gt;
&lt;li&gt; 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.&lt;/li&gt;
&lt;li&gt; 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.&lt;/li&gt;
&lt;li&gt; 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.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgwnh48dpwg9apznm468p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgwnh48dpwg9apznm468p.png" alt="clearbit comparison table" width="800" height="468"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  What does Clearbit do?
&lt;/h3&gt;

&lt;p&gt;At their core, Clearbit is an all-in-one sales intelligence platform that gives you information on your current clients and potential clients.&lt;/p&gt;

&lt;p&gt;Still confused? I'll break it down for you.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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?"&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h3&gt;
  
  
  Clearbit Pricing
&lt;/h3&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;But don't worry, you've got options! I'm gonna give you 18 Clearbit competitors that you should consider.&lt;/p&gt;

&lt;h3&gt;
  
  
  Proxycurl
&lt;/h3&gt;

&lt;p&gt;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 &lt;a href="https://nubela.co/proxycurl?utm_campaign=content_amplification&amp;amp;utm_source=dev.to&amp;amp;utm_medium=social&amp;amp;utm_content=post"&gt;Proxycurl&lt;/a&gt; is a full-fledged alternative for Clearbit or some of the other companies listed here.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;Instead, we're a fully self-managed REST API that pulls fresh, raw B2B data for your applications.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6m0s9q41q4cd04lbr889.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6m0s9q41q4cd04lbr889.jpeg" alt="proxycurl" width="800" height="637"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You want to search for companies in your ICP? We have a &lt;a href="https://nubela.co/proxycurl/docs?ref=nubela.co#search-api-company-search-endpoint" rel="noopener noreferrer"&gt;Company Search API Endpoint&lt;/a&gt;. Want to look for people in your buyer personas? We have the &lt;a href="https://nubela.co/proxycurl/docs?ref=nubela.co#search-api-person-search-endpoint" rel="noopener noreferrer"&gt;Person Search API Endpoint&lt;/a&gt;. Need to track job changes of prospects? We wrote about it here on how to &lt;a href="https://nubela.co/blog/how-to-automatically-track-linkedin-job-changes/?utm_campaign=content_amplification&amp;amp;utm_source=dev.to&amp;amp;utm_medium=social&amp;amp;utm_content=post"&gt;track their job changes programatically&lt;/a&gt;. Found an email, can't find the person? Use our &lt;a href="https://nubela.co/proxycurl/demo/reverse-email-lookup?utm_campaign=content_amplification&amp;amp;utm_source=dev.to&amp;amp;utm_medium=social&amp;amp;utm_content=post"&gt;Reverse Email Lookup Endpoint&lt;/a&gt;. Or maybe you found the person, but can't find their contact information. Our &lt;a href="https://nubela.co/proxycurl/contact-api?utm_campaign=content_amplification&amp;amp;utm_source=dev.to&amp;amp;utm_medium=social&amp;amp;utm_content=post"&gt;Contact API&lt;/a&gt; can get those for you.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo7gp7pjwl921litabo5f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo7gp7pjwl921litabo5f.png" alt="proxycurl" width="800" height="594"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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 SOC2 Type 2 certified.&lt;/p&gt;

&lt;p&gt;Where does this data come from? It's updated daily from public profiles pulled from major sites like LinkedIn and Crunchbase, that's why we guarantee that the information is less than 29 days old.&lt;/p&gt;

&lt;p&gt;If you need a more comprehensive lead list with more data, Proxycurl offers up &lt;a href="https://nubela.co/proxycurl/linkdb?utm_campaign=content_amplification&amp;amp;utm_source=dev.to&amp;amp;utm_medium=social&amp;amp;utm_content=post"&gt;LinkDB&lt;/a&gt;. 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.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhpdtrvbcbmwwfoaqlspy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhpdtrvbcbmwwfoaqlspy.png" alt="proxycurl" width="800" height="721"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Proxycurl ratings and reviews (3.9/5.0)
&lt;/h3&gt;

&lt;p&gt;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?)&lt;/p&gt;

&lt;p&gt;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!&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h3&gt;
  
  
  Proxycurl pricing
&lt;/h3&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzivvrjgv28bd0aobjoet.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzivvrjgv28bd0aobjoet.png" alt="proxycurl pricing" width="800" height="540"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;But maybe you don't want to commit just yet. That's okay! We have PAYG plans starting from $10 for 100 credits.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Forvfwm39ptnze7x5urik.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Forvfwm39ptnze7x5urik.png" alt="proxycurl pricing" width="800" height="481"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h3&gt;
  
  
  Who should try Proxycurl?
&lt;/h3&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h3&gt;
  
  
  Sapiengraph
&lt;/h3&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;Well, &lt;a href="https://sapiengraph.com/?utm_campaign=content_amplification&amp;amp;utm_source=dev.to&amp;amp;utm_medium=social&amp;amp;utm_content=post"&gt;Sapiengraph&lt;/a&gt; is the home of 5 minute growth tools, easy tools that you can start using immediately without extensive know-how.&lt;/p&gt;

&lt;p&gt;Right now, we have a &lt;a href="https://sapiengraph.com/prospector" rel="noopener noreferrer"&gt;prospector tool&lt;/a&gt;. 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.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe1w0f3x1y0v3xtssxef8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe1w0f3x1y0v3xtssxef8.png" alt="sapiengraph prospector" width="800" height="389"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Sapiengraph also has a browser extension that allows you to use &lt;a href="https://sapiengraph.com/spreadsheet-formulas?utm_campaign=content_amplification&amp;amp;utm_source=dev.to&amp;amp;utm_medium=social&amp;amp;utm_content=post"&gt;custom Google Sheet formulas&lt;/a&gt;, and a free &lt;a href="https://sapiengraph.com/blog/sapiengraphs-job-change-monitor-feature-track-opportunities-in-sales-investment/?utm_campaign=content_amplification&amp;amp;utm_source=dev.to&amp;amp;utm_medium=social&amp;amp;utm_content=post"&gt;job change monitor&lt;/a&gt;. You can get B2B data immediately in your own spreadsheets without having to learn how to use a new platform.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F800%2F0%2Aw22tfv1SnKRd7SXX" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F800%2F0%2Aw22tfv1SnKRd7SXX" alt="Sapiengraph" width="800" height="440"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you want to monitor someone's employment, all you need to do is enable the extension and click monitor job change on their LinkedIn profile. You can monitor up to 20 profiles for free!&lt;/p&gt;

&lt;h3&gt;
  
  
  Sapiengraph ratings and reviews
&lt;/h3&gt;

&lt;p&gt;Our review page is waiting for you to try out our growth tools and leave your comments.&lt;/p&gt;

&lt;h3&gt;
  
  
  Sapiengraph pricing
&lt;/h3&gt;

&lt;p&gt;Sapiengraph has monthly plans that start at $49 for 12500 credits that expire every billing period.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnlpx55z54wuw30oikws3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnlpx55z54wuw30oikws3.png" alt="Sapiengraph pricing" width="800" height="394"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h3&gt;
  
  
  Who should try Sapiengraph?
&lt;/h3&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h3&gt;
  
  
  ZoomInfo
&lt;/h3&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk80wxs3cmihrvuokihgq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk80wxs3cmihrvuokihgq.png" alt="ZoomInfo" width="800" height="388"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3cxneoyl48m515sccoyw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3cxneoyl48m515sccoyw.png" alt="ZoomInfo" width="800" height="403"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs54v8vgqq814o2hlm55t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs54v8vgqq814o2hlm55t.png" alt="ZoomInfo" width="552" height="873"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Their AI copilot also helps you to stay on top of your pipeline by suggesting actions for you to take in a timely fashion.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyrxhu8qj6qdyyx4lc5xo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyrxhu8qj6qdyyx4lc5xo.png" alt="ZoomInfo" width="800" height="440"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h3&gt;
  
  
  ZoomInfo ratings &amp;amp; reviews (4.2/5)
&lt;/h3&gt;

&lt;p&gt;Right off the bat, we can see that the company is pretty highly rated on G2, Capterra, and Trustradius.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcbxgkk5n3r55qsv1vo5r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcbxgkk5n3r55qsv1vo5r.png" alt="ZoomInfo ratings" width="794" height="511"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ZoomInfo has an average rating of 4.2. Not a surprise because they bring a lot to the table.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h3&gt;
  
  
  ZoomInfo pricing
&lt;/h3&gt;

&lt;p&gt;Like Clearbit, ZoomInfo doesn’t list their prices on their website. Cue, chorus of groaning from introverts around the world.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl5idr8ndqg8c5iai5kzr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl5idr8ndqg8c5iai5kzr.png" alt="ZoomInfo pricing" width="800" height="385"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h3&gt;
  
  
  Who should try ZoomInfo?
&lt;/h3&gt;

&lt;p&gt;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!&lt;/p&gt;

&lt;h3&gt;
  
  
  Apollo.io
&lt;/h3&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F800%2F0%2AkPAW_AVkQWIck8hr" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F800%2F0%2AkPAW_AVkQWIck8hr" alt="Apollo.io" width="800" height="415"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;Like ZoomInfo, Apollo.io has an AI writing assistant that helps you create personalized emails for your prospects.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3k02spf8g4ys9eye28y0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3k02spf8g4ys9eye28y0.png" alt="Apollo.io" width="800" height="407"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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!&lt;/p&gt;

&lt;p&gt;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!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcjoa65e1h7gwfevphssa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcjoa65e1h7gwfevphssa.png" alt="Apollo.io" width="800" height="403"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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!&lt;/p&gt;

&lt;p&gt;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!&lt;/p&gt;

&lt;h3&gt;
  
  
  Apollo.io ratings &amp;amp; reviews
&lt;/h3&gt;

&lt;p&gt;Apollo.io is pretty well-received and has an average rating of 4.5 across G2, Capterra, and Trustradius.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsgcd9el2utm6zusgcz0f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsgcd9el2utm6zusgcz0f.png" alt="Apollo.io ratings" width="794" height="511"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h3&gt;
  
  
  Apollo.io pricing
&lt;/h3&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj3eumef1rjhwsgg2c2xu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj3eumef1rjhwsgg2c2xu.png" alt="Apollo.io pricing" width="800" height="389"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h3&gt;
  
  
  Who should try Apollo.io?
&lt;/h3&gt;

&lt;p&gt;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!&lt;/p&gt;

&lt;h3&gt;
  
  
  Cognism
&lt;/h3&gt;

&lt;p&gt;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!&lt;/p&gt;

&lt;p&gt;“Oh c’mon, surely all B2B databases verify contact information?”&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0tnj3djjffdtw6a4bif3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0tnj3djjffdtw6a4bif3.png" alt="Cognism" width="697" height="567"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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!&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxwtogxkcs53jnfdqj9se.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxwtogxkcs53jnfdqj9se.png" alt="Cognism" width="767" height="571"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;Use LinkedIn frequently? Cognism also has a browser extension that can help you export data right into your account from public LinkedIn profiles!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F16ui98pqbvp19uje4m54.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F16ui98pqbvp19uje4m54.png" alt="Cognism" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h3&gt;
  
  
  Cognism ratings &amp;amp; reviews (4.3/5)
&lt;/h3&gt;

&lt;p&gt;Overall, Cognism has a 4.3 across three websites. That’s a pretty decent score.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuwy1ojkv6v0hj7i3s33b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuwy1ojkv6v0hj7i3s33b.png" alt="Cognism ratings" width="794" height="511"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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!&lt;/p&gt;

&lt;h3&gt;
  
  
  Cognism pricing
&lt;/h3&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8slwb96v8d2avwszpqoh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8slwb96v8d2avwszpqoh.png" alt="Cognism pricing" width="660" height="522"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h3&gt;
  
  
  Who should try Cognism?
&lt;/h3&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h3&gt;
  
  
  Lusha
&lt;/h3&gt;

&lt;p&gt;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&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuhye8sfi5w4eycohmyst.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuhye8sfi5w4eycohmyst.png" alt="Lusha" width="800" height="325"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffrp7j0j85tw5uj1v7qeg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffrp7j0j85tw5uj1v7qeg.png" alt="Lusha" width="800" height="292"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy8es5jh2fcjlwn0d91ye.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy8es5jh2fcjlwn0d91ye.png" alt="Lusha" width="800" height="516"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;Lusha also tracks intent data for you and makes it easily available in both contact and company view.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fszkk9g4mqkf9vyahswxt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fszkk9g4mqkf9vyahswxt.png" alt="Lusha" width="535" height="694"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h3&gt;
  
  
  Lusha ratings &amp;amp; reviews (4.1/5)
&lt;/h3&gt;

&lt;p&gt;Lusha has a pretty decent rating of 4.1 and plenty of reviews so far.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F79glf17nvmeck242mfx0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F79glf17nvmeck242mfx0.png" alt="Lusha ratings" width="794" height="511"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h3&gt;
  
  
  Lusha pricing
&lt;/h3&gt;

&lt;p&gt;Lusha has four plans, the lowest one being the Pro plan at $49 per month, per user.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft2ghuc6rvy9nyg6k18j3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft2ghuc6rvy9nyg6k18j3.png" alt="Lusha pricing" width="800" height="475"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h3&gt;
  
  
  Who should try Lusha??
&lt;/h3&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h3&gt;
  
  
  Lead411
&lt;/h3&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbvipv0d2ksnsp0jh4sml.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbvipv0d2ksnsp0jh4sml.png" alt="Lead411" width="800" height="456"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Lead411 also offers a browser extension, intent data, and API along with numerous integrations with existing CRMs.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjri170orw6i9hx0s5s73.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjri170orw6i9hx0s5s73.png" alt="Lead411" width="800" height="361"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fndt9ovbndl7ixbaf23a9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fndt9ovbndl7ixbaf23a9.png" alt="Lead411" width="685" height="277"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h3&gt;
  
  
  Lead 411 ratings &amp;amp; reviews (4.6/5)
&lt;/h3&gt;

&lt;p&gt;At a 4.6 rating, Lead411 is pretty highly rated compared to other products.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff5d8frigkevonwkbz7zf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff5d8frigkevonwkbz7zf.png" alt="Lead411 ratings" width="794" height="511"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h3&gt;
  
  
  Lead411 pricing
&lt;/h3&gt;

&lt;p&gt;You can get Lead411’s Basic Plus Unlimited at $99 per month, per user.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzgu637ipf2kvp2qcado5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzgu637ipf2kvp2qcado5.png" alt="Lead411 pricing" width="800" height="460"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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!&lt;/p&gt;

&lt;h3&gt;
  
  
  Who should try Lead411
&lt;/h3&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h3&gt;
  
  
  UpLead
&lt;/h3&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo7mirqjj12izi3iucksc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo7mirqjj12izi3iucksc.png" alt="UpLead" width="800" height="318"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F800%2F0%2Aiz5OLu0SG0u4gdaM" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F800%2F0%2Aiz5OLu0SG0u4gdaM" alt="UpLead" width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;Their easy no-fluff UI makes it easy for users to get started immediately.&lt;/p&gt;

&lt;h3&gt;
  
  
  UpLead ratings &amp;amp; reviews (3.65/5)
&lt;/h3&gt;

&lt;p&gt;Uplead ranks lower than the rest of the recommendations on the list with an overall rating of 3.65.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F84d0x80q46oa8lr7h7io.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F84d0x80q46oa8lr7h7io.png" alt="UpLead ratings" width="794" height="511"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;Still, people have complained about the lack of transparency in their billing system so please be careful when you sign up!&lt;/p&gt;

&lt;h3&gt;
  
  
  UpLead pricing
&lt;/h3&gt;

&lt;p&gt;All the pricing information is available on UpLead’s website. They have 3 available plans for all your needs.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk1oti7x9gq70okwt5bxc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk1oti7x9gq70okwt5bxc.png" alt="UpLead pricing" width="800" height="574"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;Buyer intent data, more comprehensive CRM integrations, 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.&lt;/p&gt;

&lt;h3&gt;
  
  
  Who should try UpLead
&lt;/h3&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h3&gt;
  
  
  RocketReach
&lt;/h3&gt;

&lt;p&gt;RocketReach has rocketed their way into a few lists over the past few years as a great sales intelligence solution.&lt;/p&gt;

&lt;p&gt;The platform offers a database with more than 700M person profiles and 60M companies, promising a 98% deliverability rate for their Grade A emails.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq564b1ob0e8l47r6avz1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq564b1ob0e8l47r6avz1.png" alt="RocketReach" width="590" height="768"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3jduodp7r4i5mhdtvrc8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3jduodp7r4i5mhdtvrc8.png" alt="RocketReach" width="800" height="257"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A lot of companies promise real-time verification and RocketReach does the same. If you use their browser extension on LinkedIn to look up a person, their information will be verified in real-time. Other contacts are refreshed about once a month.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F800%2F0%2AMYKGwkE51jMKJ_Zu" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F800%2F0%2AMYKGwkE51jMKJ_Zu" alt="RocketReach" width="800" height="374"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  RocketReach ratings and reviews (4.1/5)
&lt;/h3&gt;

&lt;p&gt;RocketReach stands at about 4.1 on average. They’ve got a pretty loyal customer base so far.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjmxmco5lhgpl6zu95jyb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjmxmco5lhgpl6zu95jyb.png" alt="RocketReach ratings" width="794" height="511"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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 LinkedIn, maybe you can consider RocketReach.&lt;/p&gt;

&lt;p&gt;Other users do raise a point in which they say that the number of available integrations should be improved overall.&lt;/p&gt;

&lt;h3&gt;
  
  
  RocketReach pricing
&lt;/h3&gt;

&lt;p&gt;You can get easy access to RocketReach’s pricing information on their website, with their essentials plan starting at $70 a month per user.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F491tcp08jfi5i0ucm716.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F491tcp08jfi5i0ucm716.png" alt="RocketReach pricing" width="800" height="560"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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 CRM software if you’d like.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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!&lt;/p&gt;

&lt;h3&gt;
  
  
  Who should try RocketReach
&lt;/h3&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h3&gt;
  
  
  Leadfeeder (Dealfront)
&lt;/h3&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;You can also get a bigger, better understanding of what the company is like by retrieving firmographic data using their IP Enrich API.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F42wrw953u95976eul3r0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F42wrw953u95976eul3r0.png" alt="Leadfeeder" width="800" height="485"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h3&gt;
  
  
  Leadfeeder ratings &amp;amp; reviews (4.2/5)
&lt;/h3&gt;

&lt;p&gt;On average, Leadfeeder comes in at 4.2 across the three platforms.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxhvaf39bsdz6bcp3f3tc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxhvaf39bsdz6bcp3f3tc.png" alt="Leadfeeder ratings" width="794" height="525"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h3&gt;
  
  
  Leadfeeder pricing
&lt;/h3&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq4wcps4f7zflsa5mjlx8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq4wcps4f7zflsa5mjlx8.png" alt="Leadfeeder pricing" width="800" height="461"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h3&gt;
  
  
  Who should try Leadfeeder
&lt;/h3&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h3&gt;
  
  
  6sense
&lt;/h3&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv8so965bzwm9trfmoybk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv8so965bzwm9trfmoybk.png" alt="6sense" width="800" height="232"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As of now, they track 500B intent signals every month and have published about 65M company profiles worldwide.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F800%2F0%2AFnjfVMirTzuW0hpy" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F800%2F0%2AFnjfVMirTzuW0hpy" alt="6sense" width="800" height="514"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As with many of the Clearbit Alternatives I’ve talked about so far, they have an API that can be integrated into your workflows.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F800%2F0%2AIecegfzXLwcygSzO" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F800%2F0%2AIecegfzXLwcygSzO" alt="6sense" width="800" height="416"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  6sense ratings &amp;amp; reviews (4.2/5)
&lt;/h3&gt;

&lt;p&gt;6sense is rated pretty much the same as Leadfeeder at 4.2.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0ies0fjdqjp8a0b49ptz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0ies0fjdqjp8a0b49ptz.png" alt="6sense ratings" width="794" height="511"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h3&gt;
  
  
  6sense pricing
&lt;/h3&gt;

&lt;p&gt;We’re back to no transparent pricing on the website, folks!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp6eiyw4gkfjvlqtfqgmj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp6eiyw4gkfjvlqtfqgmj.png" alt="6sense pricing" width="800" height="512"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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).&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h3&gt;
  
  
  Who should try 6sense
&lt;/h3&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h3&gt;
  
  
  Adapt.io
&lt;/h3&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9w65sd8llqsrhahcjm3v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9w65sd8llqsrhahcjm3v.png" alt="Adapt.io" width="791" height="632"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F800%2F0%2ApnWfmcSPwz1XmTMh" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F800%2F0%2ApnWfmcSPwz1XmTMh" alt="Adapt.io" width="800" height="349"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h3&gt;
  
  
  Adapt.io ratings &amp;amp; reviews (4.0/5)
&lt;/h3&gt;

&lt;p&gt;Adapt.io has an average of 4.0 across three platforms. Not too shabby.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fykgvw3ixzdqdjky12ied.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fykgvw3ixzdqdjky12ied.png" alt="Adapt.io ratings" width="794" height="511"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h3&gt;
  
  
  Adapt.io pricing
&lt;/h3&gt;

&lt;p&gt;You can see an upfront overview of how many credits you get in each plan, starting at $49 a month.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fttq23c9mqggf27s4u58s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fttq23c9mqggf27s4u58s.png" alt="Adapt.io pricing" width="800" height="422"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h3&gt;
  
  
  Who should try Adapt.io
&lt;/h3&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h3&gt;
  
  
  LinkedIn Sales Navigator
&lt;/h3&gt;

&lt;p&gt;If you’re in the sales and marketing world, you’ve definitely heard of LinkedIn Sales Navigator. It’s designed to help you prospect and build relationships within LinkedIn.&lt;/p&gt;

&lt;p&gt;LinkedIn 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.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7qfkld2ik6t8vcu4aw6r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7qfkld2ik6t8vcu4aw6r.png" alt="LinkedIn Sales Navigator" width="800" height="262"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Anyone who wants the kind of bells and whistles that come with an extensive sales and marketing platform, you can still use LinkedIn Sales Navigator because they have a lot of CRM integrations possible.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h3&gt;
  
  
  LinkedIn Sales Navigator ratings &amp;amp; reviews (4.4/5)
&lt;/h3&gt;

&lt;p&gt;Beloved by sales professionals all over the world, LinkedIn Sales Navigator averages in at 4.4 on three websites.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgquyry20bcozqb56c1kh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgquyry20bcozqb56c1kh.png" alt="LinkedIn Sales Navigator ratings" width="794" height="511"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I don’t think a lot of people can complain about Sales Navigator. When it comes down to the basics, LinkedIn 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.&lt;/p&gt;

&lt;h3&gt;
  
  
  LinkedIn Sales Navigator pricing
&lt;/h3&gt;

&lt;p&gt;If you head to their pricing page, they don’t say much about what it costs, but you can easily unearth their prices elsewhere.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fldtdncb03gkvq39qxvem.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fldtdncb03gkvq39qxvem.png" alt="LinkedIn Sales Navigator pricing" width="800" height="559"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The most basic version of LinkedIn 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.&lt;/p&gt;

&lt;p&gt;Their core plan does not come with a lot, but you do get access to their search filters, relationship explorers, and real-time alerts.&lt;/p&gt;

&lt;h3&gt;
  
  
  Who should try LinkedIn Sales Navigator
&lt;/h3&gt;

&lt;p&gt;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&lt;/p&gt;

&lt;h3&gt;
  
  
  Seamless.ai
&lt;/h3&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F49y7jgvfx3wm4y9w20i4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F49y7jgvfx3wm4y9w20i4.png" alt="Seamless.ai" width="800" height="273"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F800%2F0%2AMg8MFzVQwfht79nq" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F800%2F0%2AMg8MFzVQwfht79nq" alt="Seamless.ai" width="800" height="446"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h3&gt;
  
  
  Seamless.ai ratings &amp;amp; reviews (3.7/5)
&lt;/h3&gt;

&lt;p&gt;Seamless scores about 3.7 overall. Not the best compared to the other alternatives I’ve listed here.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3hc6kmj98sk0k386za8x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3hc6kmj98sk0k386za8x.png" alt="Seamless.ai ratings" width="794" height="511"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h3&gt;
  
  
  Seamless.ai pricing
&lt;/h3&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxm3gxaqxq5146ruhboic.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxm3gxaqxq5146ruhboic.png" alt="Seamless.ai pricing" width="800" height="539"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h3&gt;
  
  
  Who should try Seamless.ai
&lt;/h3&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h3&gt;
  
  
  LeadForensics
&lt;/h3&gt;

&lt;p&gt;LeadForensics leans towards deciphering anonymous website visitors like Leadfeeder and Seamless.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h3&gt;
  
  
  LeadForensics ratings &amp;amp; reviews (4.1/5)
&lt;/h3&gt;

&lt;p&gt;Overall, LeadForensics gets a 4.1 across three sites, which is pretty decent.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fin56ynjcwv9dzvsguhgw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fin56ynjcwv9dzvsguhgw.png" alt="LeadForensics ratings" width="794" height="511"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h3&gt;
  
  
  LeadForensics pricing
&lt;/h3&gt;

&lt;p&gt;LeadForensics only has 2 plans at the moment: Essential and Automate.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4emqu2wccq6tejgnq2xt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4emqu2wccq6tejgnq2xt.png" alt="LeadForensics pricing" width="800" height="334"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h3&gt;
  
  
  Who should try LeadForensics
&lt;/h3&gt;

&lt;p&gt;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!&lt;/p&gt;

&lt;h3&gt;
  
  
  Demandbase
&lt;/h3&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F800%2F0%2Allj0PCSSmhBTFNlt" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F800%2F0%2Allj0PCSSmhBTFNlt" alt="Demandbase" width="800" height="383"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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!&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7pgjnfksral8qxxi8co2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7pgjnfksral8qxxi8co2.png" alt="Demandbase" width="800" height="257"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h3&gt;
  
  
  Demandbase ratings &amp;amp; reviews (4.3/5)
&lt;/h3&gt;

&lt;p&gt;Demandbase gets an average of 4.3.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fluvgrmxvgzzemcunp8rf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fluvgrmxvgzzemcunp8rf.png" alt="Demandbase ratings" width="794" height="511"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h3&gt;
  
  
  Demandbase pricing
&lt;/h3&gt;

&lt;p&gt;Demandbase only does custom packages based on your company’s needs.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3bxynn0un1av4linfr2k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3bxynn0un1av4linfr2k.png" alt="Demandbase pricing" width="800" height="515"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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;amp; Play Partner Integrations. They even cover advertising, making them a great sales and marketing intelligence tool.&lt;/p&gt;

&lt;h3&gt;
  
  
  Who should try Demandbase
&lt;/h3&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h3&gt;
  
  
  LeadIQ (4.0/5)
&lt;/h3&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;The data comes from data partnerships, publicly available information, the contact lists of their own customers, and a proprietary algorithm.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F800%2F0%2A0lp4EFdic_Mq3Wvz" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F800%2F0%2A0lp4EFdic_Mq3Wvz" alt="LeadIQ" width="800" height="354"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F800%2F0%2AwAi4rlThzGDqX_xy" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F800%2F0%2AwAi4rlThzGDqX_xy" alt="LeadIQ" width="800" height="332"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Not only does it take prompts, you can change the value proposition to personalize the email further for specific decision-makers.&lt;/p&gt;

&lt;h3&gt;
  
  
  LeadIQ ratings &amp;amp; reviews (4.0/5)
&lt;/h3&gt;

&lt;p&gt;At 4.0 out of 5, LeadIQ is a pretty well-received Clearbit alternative.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy37ltfap2eocxql1hmrh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy37ltfap2eocxql1hmrh.png" alt="LeadIQ ratings" width="794" height="511"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The general sentiment is that it does really well if you’re using it in conjunction with LinkedIn Sale Navigator. Not that it doesn’t work without LinkedIn, but just that it might work slower. If you’re prospecting from LinkedIn, there have been complaints that the sync rate is pretty slow, which is frustrating if you’re looking for hundreds of prospects a day.&lt;/p&gt;

&lt;h3&gt;
  
  
  LeadIQ pricing
&lt;/h3&gt;

&lt;p&gt;You can get the lowest tier of LeadIq at $45 per month, per user.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7mcuxp8x85yz24jmxwin.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7mcuxp8x85yz24jmxwin.png" alt="LeadIQ pricing" width="800" height="536"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h3&gt;
  
  
  Who should try LeadIQ
&lt;/h3&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h3&gt;
  
  
  FullContact
&lt;/h3&gt;

&lt;p&gt;FullContact boasts 248M people profiles in North America and 200M updates every single day. Not only that, they track 50B identifiers across 10 different categories to produce comprehensive people profiles.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyqcu17t1arvx0fampq7c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyqcu17t1arvx0fampq7c.png" alt="FullContact" width="800" height="385"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fihw8v1je3zl1gqy2obx7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fihw8v1je3zl1gqy2obx7.png" alt="FullContact" width="800" height="391"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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 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.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8cyymtbsk1gzw5miopzk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8cyymtbsk1gzw5miopzk.png" alt="FullContact" width="800" height="381"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F800%2F0%2Ae-LQBa7SDygDPFLD" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F800%2F0%2Ae-LQBa7SDygDPFLD" alt="FullContact" width="800" height="667"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  FullContact ratings &amp;amp; reviews (4.1/5)
&lt;/h3&gt;

&lt;p&gt;FullContact comes in at an average of 4.1.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx5s7dasvgadq4ckf3tpk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx5s7dasvgadq4ckf3tpk.png" alt="FullContact ratings" width="794" height="511"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h3&gt;
  
  
  FullContact pricing
&lt;/h3&gt;

&lt;p&gt;There are three plans available for prospective customers of FullContact, the lowest price being $99 per month.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F53ksd7zkc67v9adozpgy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F53ksd7zkc67v9adozpgy.png" alt="FullContact pricing" width="800" height="462"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h3&gt;
  
  
  Who should try FullContact?
&lt;/h3&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h3&gt;
  
  
  TL;DR Features List
&lt;/h3&gt;

&lt;p&gt;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!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb4zouz3p08fy7suobwxv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb4zouz3p08fy7suobwxv.png" alt="Clearbit and competitors comparison table" width="800" height="524"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;Congratulations! You made it to the end of this article!&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgwnh48dpwg9apznm468p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgwnh48dpwg9apznm468p.png" alt="Proxycurl" width="800" height="468"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Last thoughts: a huge database doesn’t mean quality data, and live updates aren’t a guarantee of accuracy.&lt;/p&gt;

&lt;p&gt;That said, feel free to give &lt;a href="https://nubela.co/proxycurl?utm_campaign=content_amplification&amp;amp;utm_source=dev.to&amp;amp;utm_medium=social&amp;amp;utm_content=post"&gt;Proxycurl&lt;/a&gt; or &lt;a href="https://sapiengraph.com/?utm_campaign=content_amplification&amp;amp;utm_source=dev.to&amp;amp;utm_medium=social&amp;amp;utm_content=post"&gt;Sapiengraph&lt;/a&gt; a whirl before considering all these other Clearbit alternatives. Happy Data Enriching!&lt;/p&gt;

</description>
      <category>programming</category>
      <category>clearbit</category>
      <category>proxycurl</category>
      <category>api</category>
    </item>
  </channel>
</rss>
