<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Data-Driven Decision-Making | DataCrew Blog</title>
	<atom:link href="https://blog.datacrew.agency/en/category/data-driven-decisions/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.datacrew.agency</link>
	<description>The official blog of DataCrew Agency</description>
	<lastBuildDate>Thu, 10 Sep 2026 08:10:29 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1</generator>

<image>
	<url>https://blog.datacrew.agency/wp-content/uploads/2025/03/favicon.png</url>
	<title>Data-Driven Decision-Making | DataCrew Blog</title>
	<link>https://blog.datacrew.agency</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>How We Built a B2B Prospect List for LinkedIn Ads</title>
		<link>https://blog.datacrew.agency/en/data-driven-decisions/b2b-prospect-list-linkedin-ads/</link>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Wed, 09 Sep 2026 12:44:32 +0000</pubDate>
				<category><![CDATA[Data-Driven Decision-Making]]></category>
		<guid isPermaLink="false">https://blog.datacrew.agency/kategoria-nelkuli-en/b2b-prospect-list-linkedin-ads/</guid>

					<description><![CDATA[<p>We built a B2B prospect list from free public databases, audited every domain for Meta blocking, and turned it into a LinkedIn Company List audience that pulled a 7.69% CTR.</p>
<p>The post <a href="https://blog.datacrew.agency/en/data-driven-decisions/b2b-prospect-list-linkedin-ads/">How We Built a B2B Prospect List for LinkedIn Ads</a> first appeared on <a href="https://blog.datacrew.agency">DataCrew Blog</a>.</p>]]></description>
										<content:encoded><![CDATA[<p class="wp-block-paragraph">A few eyebrows went up when our last post laid out what we found auditing more than <a href="https://blog.datacrew.agency/en/server-side-tagging/meta-data-sharing-restrictions/" target="_blank" rel="noopener" title="">36,000 sites running the Meta pixel</a>. Time for a confession: pure curiosity wasn&#8217;t what drove us to check how often Meta blocks healthcare providers. What we really needed was a B2B prospect list: the companies worth advertising a workaround to.</p>



<p class="wp-block-paragraph">A B2B prospect list like that works beautifully in LinkedIn Ads. You upload a CSV of companies, and the platform builds an audience out of the people who work at them. There&#8217;s huge potential here: B2B advertising is a tough game to begin with, but a list filtered on something real makes pinpoint targeting possible.</p>



<h2 class="wp-block-heading">Is this even legal?</h2>



<p class="wp-block-paragraph">We never touch personal data, only publicly available company data. LinkedIn takes that company data and builds an audience from the people who work there, and we never see who ended up on it. So the process most likely doesn&#8217;t create legal headaches. Even so, bring in a privacy lawyer who is willing to put their name on it.</p>



<h2 class="wp-block-heading">What does LinkedIn need for a good match?</h2>



<p class="wp-block-paragraph">LinkedIn tries to match the B2B prospect list you hand it against the companies on the platform. Then it puts the people working there into an audience you can advertise to. The <a href="https://www.linkedin.com/help/lms/answer/a423102" target="_blank" rel="noopener" title="">B2B prospect list</a> has to include, among other things, the company name, website domain, category, city, postal code, and country. The joker in the deck is the LinkedIn company URL: hand that over and there&#8217;s no question which company you&#8217;re targeting.</p>



<p class="wp-block-paragraph">You can only upload a list if it holds at least 300 companies, and no more than 300,000. In Hungary, our home market, we identified exactly 300 blocked healthcare providers, so yes, we do have a Hungarian blocked-healthcare list too. <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>



<p class="wp-block-paragraph">After the upload, LinkedIn spends two to three days matching your data against its own companies. Wherever a company matches, the people who work there go into an audience you can start advertising to. At the end you get a match rate telling you how well it went. Anything above 80% counts as good, though we often end up with lists above 90%.</p>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1024" height="368" src="https://blog.datacrew.agency/wp-content/uploads/2026/09/blog-linkedin-audiences-tabla-1024x368.png" alt="LinkedIn Ads matched audiences table: the B2B prospect list uploaded as a Company List, matching above 90%" class="wp-image-1303" srcset="https://blog.datacrew.agency/wp-content/uploads/2026/09/blog-linkedin-audiences-tabla-1024x368.png 1024w, https://blog.datacrew.agency/wp-content/uploads/2026/09/blog-linkedin-audiences-tabla-300x108.png 300w, https://blog.datacrew.agency/wp-content/uploads/2026/09/blog-linkedin-audiences-tabla-768x276.png 768w, https://blog.datacrew.agency/wp-content/uploads/2026/09/blog-linkedin-audiences-tabla-1536x553.png 1536w, https://blog.datacrew.agency/wp-content/uploads/2026/09/blog-linkedin-audiences-tabla-2048x737.png 2048w, https://blog.datacrew.agency/wp-content/uploads/2026/09/blog-linkedin-audiences-tabla-400x144.png 400w, https://blog.datacrew.agency/wp-content/uploads/2026/09/blog-linkedin-audiences-tabla-800x288.png 800w, https://blog.datacrew.agency/wp-content/uploads/2026/09/blog-linkedin-audiences-tabla-832x299.png 832w, https://blog.datacrew.agency/wp-content/uploads/2026/09/blog-linkedin-audiences-tabla-1664x599.png 1664w, https://blog.datacrew.agency/wp-content/uploads/2026/09/blog-linkedin-audiences-tabla-1248x449.png 1248w, https://blog.datacrew.agency/wp-content/uploads/2026/09/blog-linkedin-audiences-tabla-2496x898.png 2496w, https://blog.datacrew.agency/wp-content/uploads/2026/09/blog-linkedin-audiences-tabla-scaled.png 2560w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading">What about the other ad platforms?</h2>



<p class="wp-block-paragraph">Unfortunately this is limited to LinkedIn Ads. On the other big platforms you can only upload first-party user data, and to have any of that, the user has to explicitly consent to going on a list. </p>



<p class="wp-block-paragraph">LinkedIn works completely differently: we&#8217;re not using personal data, we&#8217;re building a list out of publicly available information. Legal angles aside, the approach probably wouldn&#8217;t even be effective elsewhere. Google, Meta and the rest expect personal data, email addresses and phone numbers, and a pile of hello@ addresses scraped off websites is never going to hit a usable match rate. On top of that, the upload itself would break those platforms&#8217; terms of service, so we don&#8217;t recommend using it that way.</p>



<h2 class="wp-block-heading">How did our audit work?</h2>



<p class="wp-block-paragraph">Meta&#8217;s blocking is a technical thing. When the Meta pixel fires, it loads a config file. That config holds whether the site is under restriction and, if so, at what level. You can read a domain&#8217;s restriction level straight out of the config, as long as the pixel actually runs on it.</p>



<p class="wp-block-paragraph">So all we need is a domain name to tell whether Meta is blocking it. It isn&#8217;t quite that simple, of course, because on plenty of sites the Meta pixel only fires after <a href="https://blog.datacrew.agency/en/consent-management/everything-about-cookie-consent/" target="_blank" rel="noopener" title="">consent is accepted</a> (exactly as it should). So auditing site after site through an automated process calls for a headless browser that</p>



<ol class="wp-block-list">
<li>Opens the domain</li>



<li>Accepts the marketing cookies</li>



<li>Checks whether a Meta pixel is there</li>



<li>If it is, checks the Facebook pixel config for a restriction</li>



<li>If there is one, collects every data point LinkedIn needs to identify the company, from structured data or wherever else it can find it</li>



<li>And finally rolls all of that into a B2B prospect list we can upload to LinkedIn Ads</li>
</ol>



<!-- DataCrew - illustration of the domain audit process (icons only, no explanatory text).
     The numbers refer to the numbered list in the post, so this belongs directly below it.
     WordPress: Custom HTML block, paste it in as is.
     The styles are scoped with the dcf- prefix, so nothing leaks onto the theme. -->
<style>
.dcf{
  --dcf-teal:#0099a6; --dcf-deep:#00707a; --dcf-muted:#9aacaf;
  --dcf-ribbon-a:#eff8fa; --dcf-ribbon-b:#d7edf1; --dcf-rule:#bfdfe4;
  --dcf-node:#ffffff; --dcf-badge:#6f797c; --dcf-cap:#6f797c;
  font-family:'Sora',system-ui,-apple-system,'Helvetica Neue',Arial,sans-serif;
  max-width:720px;margin:34px auto;
}
.dcf svg{width:100%;height:auto;}
.dcf svg.dcf__defs{width:0;height:0;position:absolute;}
.dcf svg.dcf__wide{display:block;}
.dcf svg.dcf__tall{display:none;}

.dcf-node{fill:var(--dcf-node);stroke:var(--dcf-rule);stroke-width:1.4;}
.dcf-ico{fill:none;stroke:var(--dcf-deep);stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;}
.dcf-out{fill:var(--dcf-teal);}
.dcf-out-ico{fill:none;stroke:#fff;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;}
.dcf-dot{fill:var(--dcf-muted);}
.dcf-hit{fill:var(--dcf-teal);}
.dcf-arrow{fill:none;stroke:var(--dcf-rule);stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round;}
.dcf-badge{fill:var(--dcf-node);stroke:var(--dcf-rule);stroke-width:1.2;}
.dcf-num{
  fill:var(--dcf-badge);font-size:11px;font-weight:600;letter-spacing:.03em;
  text-anchor:middle;dominant-baseline:central;font-variant-numeric:tabular-nums;
  font-family:'Sora',system-ui,sans-serif;
}
.dcf__cap{
  margin:14px auto 0;max-width:720px;color:var(--dcf-cap);
  font-size:13px;line-height:1.55;
}

/* --- compact view + expand (pure CSS, no script) --- */
.dcf__box{margin:0;}
.dcf__sum{
  list-style:none;cursor:pointer;display:block;padding:4px 0 2px;border-radius:12px;
}
.dcf__sum::-webkit-details-marker{display:none;}
.dcf svg.dcf__mini{display:block;max-width:440px;margin:0 auto;}
.dcf__box[open] svg.dcf__mini{display:none;}
.dcf__hint{
  display:flex;align-items:center;justify-content:center;gap:7px;margin-top:10px;
  color:var(--dcf-deep);font-size:13px;font-weight:600;letter-spacing:-.005em;
}
.dcf__hint::after{content:"↓";font-weight:400;}
.dcf__box[open] .dcf__hint::after{content:"↑";}
.dcf__hint b{display:none;font-weight:600;}
.dcf__box[open] .dcf__hint i{display:none;}
.dcf__box[open] .dcf__hint b{display:inline;}
.dcf__hint i{font-style:normal;}
.dcf__box[open] .dcf__hint{margin-top:0;margin-bottom:6px;}
.dcf__sum:focus-visible{outline:2px solid var(--dcf-teal);outline-offset:4px;}

@media (max-width:640px){
  .dcf svg.dcf__wide{display:none;}
  .dcf svg.dcf__tall{display:block;}
}

/* --- the theme's dark scheme --- */
[data-scheme="dark"] .dcf{
  --dcf-teal:#14c2d1; --dcf-deep:#7fe0e9; --dcf-muted:#5d7276;
  --dcf-ribbon-a:#131f22; --dcf-ribbon-b:#1b373d; --dcf-rule:#2b4f56;
  --dcf-node:#101a1c; --dcf-badge:#9fb3b5; --dcf-cap:#9fb3b5;
}
[data-scheme="dark"] .dcf-out-ico{stroke:#04181a;}
</style>

<figure class="dcf">

  <!-- icon set: never rendered directly, only referenced -->
  <svg class="dcf__defs" aria-hidden="true" focusable="false">
    <defs>
      <symbol id="dcf-i1" viewBox="0 0 24 24"><rect x="3" y="4.5" width="18" height="15" rx="2.5"/><path d="M3 9.5h18M6.2 7h.01M9 7h.01"/></symbol>
      <symbol id="dcf-i2" viewBox="0 0 24 24"><circle cx="12" cy="12" r="8.6"/><path d="M9.2 9.4h.01M14.8 10.6h.01M10.4 14.9h.01M15.1 14.4h.01"/></symbol>
      <symbol id="dcf-i3" viewBox="0 0 24 24"><circle cx="12" cy="12" r="2.1"/><path d="M8.6 8.6a4.8 4.8 0 0 0 0 6.8M15.4 15.4a4.8 4.8 0 0 0 0-6.8M5.9 5.9a8.6 8.6 0 0 0 0 12.2M18.1 18.1a8.6 8.6 0 0 0 0-12.2"/></symbol>
      <symbol id="dcf-i4" viewBox="0 0 24 24"><circle cx="12" cy="12" r="8.4"/><path d="M6.1 17.9 17.9 6.1"/></symbol>
      <symbol id="dcf-i5" viewBox="0 0 24 24"><rect x="3" y="5" width="18" height="14" rx="2.5"/><circle cx="8.6" cy="11" r="2"/><path d="M5.6 16.4c.6-1.5 1.7-2.3 3-2.3s2.4.8 3 2.3M14.6 10h3.8M14.6 13.4h3.8"/></symbol>
      <symbol id="dcf-i6" viewBox="0 0 24 24"><path d="M4 6.5h9M4 11.5h9M4 16.5h6M17.5 19.5v-8M17.5 11.5 14.8 14.2M17.5 11.5l2.7 2.7"/></symbol>
    </defs>
  </svg>

  <details class="dcf__box">
    <summary class="dcf__sum">

      <!-- compact view -->
      <svg class="dcf__mini" viewBox="0 0 440 76" role="img" aria-label="The six steps of the domain audit, in brief">
        <defs>
          <linearGradient id="dcf-g0" x1="0" y1="0" x2="1" y2="0">
            <stop offset="0" stop-color="var(--dcf-ribbon-a)"/>
            <stop offset="1" stop-color="var(--dcf-ribbon-b)"/>
          </linearGradient>
        </defs>

        <path fill="url(#dcf-g0)" d="M4 16 L436 28 L436 48 L4 60 Z"/>

        <g class="dcf-dot" opacity=".85">
          <circle cx="11" cy="26" r="2.2"/><circle cx="18" cy="38" r="1.8"/><circle cx="10" cy="50" r="2"/>
          <circle cx="72" cy="24" r="1.7"/><circle cx="146" cy="52" r="1.9"/><circle cx="220" cy="28" r="1.6"/>
        </g>
        <g class="dcf-dot" opacity=".5">
          <circle cx="80" cy="66" r="2.2"/><circle cx="90" cy="73" r="1.6"/>
          <circle cx="228" cy="62" r="2"/><circle cx="238" cy="70" r="1.5"/>
          <circle cx="300" cy="58" r="1.8"/>
        </g>
        <g class="dcf-hit"><circle cx="366" cy="32" r="2"/><circle cx="372" cy="45" r="1.7"/></g>

        <circle class="dcf-node" cx="34" cy="38" r="22"/>
        <use href="#dcf-i1" class="dcf-ico" x="19" y="23" width="30" height="30"/>
        <circle class="dcf-node" cx="108" cy="38" r="22"/>
        <use href="#dcf-i2" class="dcf-ico" x="93" y="23" width="30" height="30"/>
        <circle class="dcf-node" cx="182" cy="38" r="22"/>
        <use href="#dcf-i3" class="dcf-ico" x="167" y="23" width="30" height="30"/>
        <circle class="dcf-node" cx="256" cy="38" r="22"/>
        <use href="#dcf-i4" class="dcf-ico" x="241" y="23" width="30" height="30"/>
        <circle class="dcf-node" cx="330" cy="38" r="22"/>
        <use href="#dcf-i5" class="dcf-ico" x="315" y="23" width="30" height="30"/>
        <rect class="dcf-out" x="382" y="16" width="44" height="44" rx="12"/>
        <use href="#dcf-i6" class="dcf-out-ico" x="389" y="23" width="30" height="30"/>
      </svg>

      <span class="dcf__hint"><i>Detailed diagram</i><b>Smaller diagram</b></span>
    </summary>

  <!-- wide view -->
  <svg class="dcf__wide" viewBox="0 0 720 244" role="img" aria-labelledby="dcf-t1 dcf-d1">
    <title id="dcf-t1">The domain audit process</title>
    <desc id="dcf-d1">A narrowing flow diagram with six icons: page load, cookie acceptance, Meta pixel detection, restriction check, company data collection, and finally the finished list. A few domains drop out at every step.</desc>
    <defs>
      <linearGradient id="dcf-g1" x1="0" y1="0" x2="1" y2="0">
        <stop offset="0" stop-color="var(--dcf-ribbon-a)"/>
        <stop offset="1" stop-color="var(--dcf-ribbon-b)"/>
      </linearGradient>
    </defs>

    <path fill="url(#dcf-g1)" d="M6 30 L714 88 L714 152 L6 210 Z"/>

    <!-- what comes in -->
    <g class="dcf-dot" opacity=".9">
      <circle cx="15" cy="52" r="3.4"/><circle cx="31" cy="70" r="2.6"/><circle cx="16" cy="88" r="2.9"/>
      <circle cx="35" cy="104" r="3.6"/><circle cx="18" cy="122" r="2.5"/><circle cx="33" cy="140" r="3.2"/>
      <circle cx="15" cy="158" r="2.8"/><circle cx="30" cy="176" r="3.4"/><circle cx="17" cy="192" r="2.4"/>
      <circle cx="50" cy="60" r="2.4"/><circle cx="53" cy="94" r="3.1"/><circle cx="47" cy="130" r="2.6"/>
      <circle cx="52" cy="164" r="3.3"/><circle cx="45" cy="188" r="2.2"/>
      <circle cx="132" cy="62" r="2.8"/><circle cx="146" cy="172" r="3.1"/><circle cx="168" cy="84" r="2.4"/>
      <circle cx="250" cy="74" r="2.9"/><circle cx="266" cy="160" r="2.5"/><circle cx="286" cy="104" r="2.2"/>
      <circle cx="372" cy="92" r="2.6"/><circle cx="386" cy="146" r="2.2"/>
      <circle cx="492" cy="108" r="2.3"/>
    </g>

    <!-- what drops out -->
    <g class="dcf-dot" opacity=".5">
      <circle cx="128" cy="204" r="3.2"/><circle cx="146" cy="219" r="2.6"/><circle cx="114" cy="228" r="2.2"/><circle cx="158" cy="234" r="1.8"/>
      <circle cx="358" cy="188" r="3"/><circle cx="376" cy="204" r="2.4"/><circle cx="348" cy="214" r="2"/><circle cx="390" cy="226" r="1.7"/>
      <circle cx="482" cy="178" r="2.8"/><circle cx="498" cy="196" r="2.3"/><circle cx="472" cy="208" r="1.9"/>
    </g>

    <!-- what makes it through -->
    <g class="dcf-hit">
      <circle cx="516" cy="128" r="3"/><circle cx="604" cy="112" r="2.6"/><circle cx="618" cy="134" r="3.2"/>
    </g>

    <!-- direction of travel -->
    <g class="dcf-arrow">
      <path d="M135 113 l7 7 -7 7"/><path d="M253 113 l7 7 -7 7"/><path d="M371 113 l7 7 -7 7"/>
      <path d="M489 113 l7 7 -7 7"/><path d="M607 113 l7 7 -7 7"/>
    </g>

    <circle class="dcf-node" cx="80" cy="120" r="36"/>
    <use href="#dcf-i1" class="dcf-ico" x="56" y="96" width="48" height="48"/>
    <circle class="dcf-badge" cx="55" cy="95" r="13"/><text class="dcf-num" x="55" y="95">01</text>

    <circle class="dcf-node" cx="198" cy="120" r="36"/>
    <use href="#dcf-i2" class="dcf-ico" x="174" y="96" width="48" height="48"/>
    <circle class="dcf-badge" cx="173" cy="95" r="13"/><text class="dcf-num" x="173" y="95">02</text>

    <circle class="dcf-node" cx="316" cy="120" r="36"/>
    <use href="#dcf-i3" class="dcf-ico" x="292" y="96" width="48" height="48"/>
    <circle class="dcf-badge" cx="291" cy="95" r="13"/><text class="dcf-num" x="291" y="95">03</text>

    <circle class="dcf-node" cx="434" cy="120" r="36"/>
    <use href="#dcf-i4" class="dcf-ico" x="410" y="96" width="48" height="48"/>
    <circle class="dcf-badge" cx="409" cy="95" r="13"/><text class="dcf-num" x="409" y="95">04</text>

    <circle class="dcf-node" cx="552" cy="120" r="36"/>
    <use href="#dcf-i5" class="dcf-ico" x="528" y="96" width="48" height="48"/>
    <circle class="dcf-badge" cx="527" cy="95" r="13"/><text class="dcf-num" x="527" y="95">05</text>

    <rect class="dcf-out" x="632" y="84" width="72" height="72" rx="18"/>
    <use href="#dcf-i6" class="dcf-out-ico" x="644" y="96" width="48" height="48"/>
    <circle class="dcf-badge" cx="638" cy="90" r="13"/><text class="dcf-num" x="638" y="90">06</text>
  </svg>

  <!-- narrow view -->
  <svg class="dcf__tall" viewBox="0 0 360 566" role="img" aria-labelledby="dcf-t2 dcf-d2">
    <title id="dcf-t2">The domain audit process</title>
    <desc id="dcf-d2">A narrowing flow diagram with six icons: page load, cookie acceptance, Meta pixel detection, restriction check, company data collection, and finally the finished list. A few domains drop out at every step.</desc>
    <defs>
      <linearGradient id="dcf-g2" x1="0" y1="0" x2="0" y2="1">
        <stop offset="0" stop-color="var(--dcf-ribbon-a)"/>
        <stop offset="1" stop-color="var(--dcf-ribbon-b)"/>
      </linearGradient>
    </defs>

    <path fill="url(#dcf-g2)" d="M42 8 L318 8 L228 558 L132 558 Z"/>

    <g class="dcf-dot" opacity=".9">
      <circle cx="60" cy="26" r="3.4"/><circle cx="88" cy="44" r="2.6"/><circle cx="124" cy="22" r="2.9"/>
      <circle cx="236" cy="26" r="3.3"/><circle cx="272" cy="42" r="2.5"/><circle cx="300" cy="24" r="3"/>
      <circle cx="66" cy="66" r="2.4"/><circle cx="296" cy="64" r="2.7"/><circle cx="118" cy="52" r="2.2"/>
      <circle cx="78" cy="140" r="2.8"/><circle cx="284" cy="132" r="2.5"/>
      <circle cx="96" cy="232" r="2.6"/><circle cx="268" cy="222" r="2.3"/>
      <circle cx="112" cy="318" r="2.4"/><circle cx="252" cy="306" r="2.1"/>
    </g>

    <g class="dcf-dot" opacity=".5">
      <circle cx="308" cy="108" r="3.2"/><circle cx="330" cy="126" r="2.5"/><circle cx="316" cy="146" r="2"/>
      <circle cx="52" cy="268" r="3"/><circle cx="30" cy="288" r="2.4"/><circle cx="46" cy="306" r="1.9"/>
      <circle cx="292" cy="352" r="2.8"/><circle cx="314" cy="372" r="2.2"/><circle cx="300" cy="390" r="1.8"/>
    </g>

    <g class="dcf-hit">
      <circle cx="152" cy="452" r="3"/><circle cx="208" cy="466" r="2.6"/><circle cx="168" cy="486" r="3.1"/>
    </g>

    <g class="dcf-arrow">
      <path d="M173 100 l7 7 7 -7"/><path d="M173 190 l7 7 7 -7"/><path d="M173 280 l7 7 7 -7"/>
      <path d="M173 367 l7 7 7 -7"/><path d="M173 452 l7 7 7 -7"/>
    </g>

    <circle class="dcf-node" cx="180" cy="58" r="36"/>
    <use href="#dcf-i1" class="dcf-ico" x="156" y="34" width="48" height="48"/>
    <circle class="dcf-badge" cx="155" cy="33" r="13"/><text class="dcf-num" x="155" y="33">01</text>

    <circle class="dcf-node" cx="180" cy="148" r="36"/>
    <use href="#dcf-i2" class="dcf-ico" x="156" y="124" width="48" height="48"/>
    <circle class="dcf-badge" cx="155" cy="123" r="13"/><text class="dcf-num" x="155" y="123">02</text>

    <circle class="dcf-node" cx="180" cy="238" r="36"/>
    <use href="#dcf-i3" class="dcf-ico" x="156" y="214" width="48" height="48"/>
    <circle class="dcf-badge" cx="155" cy="213" r="13"/><text class="dcf-num" x="155" y="213">03</text>

    <circle class="dcf-node" cx="180" cy="325" r="36"/>
    <use href="#dcf-i4" class="dcf-ico" x="156" y="301" width="48" height="48"/>
    <circle class="dcf-badge" cx="155" cy="300" r="13"/><text class="dcf-num" x="155" y="300">04</text>

    <circle class="dcf-node" cx="180" cy="410" r="36"/>
    <use href="#dcf-i5" class="dcf-ico" x="156" y="386" width="48" height="48"/>
    <circle class="dcf-badge" cx="155" cy="385" r="13"/><text class="dcf-num" x="155" y="385">05</text>

    <rect class="dcf-out" x="144" y="486" width="72" height="72" rx="18"/>
    <use href="#dcf-i6" class="dcf-out-ico" x="156" y="498" width="48" height="48"/>
    <circle class="dcf-badge" cx="150" cy="492" r="13"/><text class="dcf-num" x="150" y="492">06</text>
  </svg>

  </details>

  <figcaption class="dcf__cap">
    Every step filters something out: whatever survives all six ends up on the list.
  </figcaption>
</figure>



<p class="wp-block-paragraph">We put the whole thing together with Claude Code, and Claude supervised the runs as well. The run took about a week. Claude didn&#8217;t eat many tokens over that stretch, because the machine ran the script Claude had written. Along the way Claude produced all sorts of statistics about the audit results, and reported in every few hours on where the process stood. So screening prospects like this won&#8217;t blow up your AI bill either.</p>



<h2 class="wp-block-heading">But how did the headless browser know which sites to check?</h2>



<p class="wp-block-paragraph">From public databases. We used two of them, both completely free and nicely structured:</p>



<ul class="wp-block-list">
<li><a href="https://www.openstreetmap.org/" target="_blank" rel="noopener" title="">OpenStreetMap</a></li>



<li><a href="https://overturemaps.org/" target="_blank" rel="noopener" title="">Overture Maps</a></li>
</ul>



<p class="wp-block-paragraph">Really it came down to filtering for healthcare providers in a given country. The list that came back already carried some of what LinkedIn needs: company email address, city, postal code. But the most valuable field in these databases is the company&#8217;s website. As we showed above, a single URL is all we need to run the audit.</p>



<p class="wp-block-paragraph">Once we have a company&#8217;s domain, we can walk it through the audit steps. No two websites are alike, though, so the headless browser might fail to get past the consent bar, or the site might carry no structured data at all. Then it has to go digging around the site itself, hunting for the Contact page, say, hoping the information we&#8217;re after is sitting there.</p>



<p class="wp-block-paragraph">Those extra rounds are why the audit deserves a reasonably powerful machine with plenty of RAM. Keep an eye on how many sites the headless browser audits in parallel, too.</p>



<h2 class="wp-block-heading">What is a B2B prospect list actually good for?</h2>



<p class="wp-block-paragraph">We used the process to find out one specific thing about a prospect&#8217;s website. The same process runs behind the <a href="https://metamorph.ad/audit" target="_blank" rel="noopener" title="">Metamorph audit</a> page, except there it happens in real time. So when we promote that audit page on LinkedIn to the audience we just built, it&#8217;s a safe bet. The people seeing the ad are ones we already know Meta is blocking, which makes the outcome of the on-site audit pretty much a given.</p>



<p class="wp-block-paragraph">Auditing the websites isn&#8217;t mandatory either. You can also build a B2B prospect list straight off the databases above, seasoned with extra data collected from the sites. We&#8217;ve put together a global PPC agency list this way, purely from what the databases hold. </p>



<h2 class="wp-block-heading">Limits</h2>



<p class="wp-block-paragraph">The process has its limits, of course. These databases only list companies with a physical store, headquarters, or site. Fully online businesses, like a lot of PPC agencies, aren&#8217;t in there, so they&#8217;re not on our B2B prospect list either. With healthcare providers that&#8217;s rarely a problem.</p>



<h2 class="wp-block-heading">Results: how the B2B prospect list performed</h2>



<p class="wp-block-paragraph">So how did the list actually perform? We ran a Thought Leader Ad against that 300-company B2B prospect list of Meta-blocked Hungarian healthcare providers. For anyone less familiar with LinkedIn: that&#8217;s the ad format where an employee of the company (usually a leader) writes a post in their own LinkedIn feed, and the company then promotes it. So our Péter wrote a post, in Hungarian, linking to the blog post about Meta&#8217;s blocking.</p>



<p class="wp-block-paragraph">We narrowed the identified healthcare companies further, down to those with 1 to 50 employees, to filter out the largest blocked companies. LinkedIn would also let us filter by seniority, but we skipped that this time. </p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="172" src="https://blog.datacrew.agency/wp-content/uploads/2026/09/blog-linkedin-campaign-aktiv-1024x172.png" alt="LinkedIn Ads campaign report: the Thought Leader Ad running at a 7.69% average CTR" class="wp-image-1307" srcset="https://blog.datacrew.agency/wp-content/uploads/2026/09/blog-linkedin-campaign-aktiv-1024x172.png 1024w, https://blog.datacrew.agency/wp-content/uploads/2026/09/blog-linkedin-campaign-aktiv-300x50.png 300w, https://blog.datacrew.agency/wp-content/uploads/2026/09/blog-linkedin-campaign-aktiv-768x129.png 768w, https://blog.datacrew.agency/wp-content/uploads/2026/09/blog-linkedin-campaign-aktiv-1536x258.png 1536w, https://blog.datacrew.agency/wp-content/uploads/2026/09/blog-linkedin-campaign-aktiv-2048x344.png 2048w, https://blog.datacrew.agency/wp-content/uploads/2026/09/blog-linkedin-campaign-aktiv-400x67.png 400w, https://blog.datacrew.agency/wp-content/uploads/2026/09/blog-linkedin-campaign-aktiv-800x134.png 800w, https://blog.datacrew.agency/wp-content/uploads/2026/09/blog-linkedin-campaign-aktiv-832x140.png 832w, https://blog.datacrew.agency/wp-content/uploads/2026/09/blog-linkedin-campaign-aktiv-1664x280.png 1664w, https://blog.datacrew.agency/wp-content/uploads/2026/09/blog-linkedin-campaign-aktiv-1248x210.png 1248w, https://blog.datacrew.agency/wp-content/uploads/2026/09/blog-linkedin-campaign-aktiv-2496x419.png 2496w, https://blog.datacrew.agency/wp-content/uploads/2026/09/blog-linkedin-campaign-aktiv-scaled.png 2560w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">The result was a 7.69% CTR, which for a plain image ad on LinkedIn is, in our view, a genuinely good number.</p><p>The post <a href="https://blog.datacrew.agency/en/data-driven-decisions/b2b-prospect-list-linkedin-ads/">How We Built a B2B Prospect List for LinkedIn Ads</a> first appeared on <a href="https://blog.datacrew.agency">DataCrew Blog</a>.</p>]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
