Datacircle

LinkedIn profiles in Make.com: enrich LinkedIn URLs with the HTTP app

Your scenario in Make (make.com, formerly Integromat) starts from a LinkedIn profile URL: a new row in Google Sheets, a record in Airtable or your CRM, a webhook. You want the person's job title, company and location back, for the next module to write. Make's LinkedIn app can't read someone else's profile: its modules post as you or as your company page, and read your company page's posts and statistics.

Datacircle is a data co-op. Step 1: Query your favorite B2B data APIs through us. Same request, same price, no markup. Step 2: You're DONE. Every morning, you get the flat file of your data plus everyone else's. Right now we have 3 live LinkedIn profile APIs that we trust: Up2Data, HarvestAPI and Fetchin.

One HTTP module gets the profile back, at $2.375 per 1,000 profiles Up2Data finds, and nothing for a profile it can't find. Past Up2Data's daily limit, a second HTTP module calls Fetchin, at $1.485 per 1,000. A Router reads each answer's status code, so a private or deleted profile never stops the scenario. You send the provider's own request to api.datacircle.dev, with your Datacircle key. That's the only change.

We built both requests from these settings and sent them with curl to api.datacircle.dev with a wrong key: the API answered 401 to each, at no charge. We have no Make account, so we haven't run the scenario in Make. Every Make setting here comes from Make's help pages.

Before you start

  • A Make account. Make's Free plan has routers and filters, 1,000 credits a month, 2 active scenarios and scheduled runs at most every 15 minutes. Make says all customers can use its new HTTP app.
  • A Datacircle API key: sign up with your work email and your key is on your dashboard. You get a $5 credit, enough for 2,105 profiles through Up2Data.
  • A trigger that gives the profile's URL, like https://www.linkedin.com/in/williamhgates.

Your key in a keychain

In the HTTP module below, set Authentication type to API key, then create a keychain under Credentials:

The API key keychain's fields
FieldValue
NameDatacircle API key
KeyToken, a space, then your key
API key placementIn the header
API key parameter nameAuthorization

Make keeps the key in the keychain and adds the Authorization header itself, so you don't type the key in the module's headers. Both HTTP modules use it. To change the key, edit it once under Keys in Make's left sidebar. If your Datacircle key leaks, reset it through our API: the old one stops working.

The HTTP module

After your trigger, add HTTP, then Make a request, with these settings:

The Make a request module's settings for Up2Data
FieldValue
Authentication typeAPI key, with the Datacircle API key keychain
URLhttps://api.datacircle.dev/v1/profiles/enrich
MethodPOST
HeadersX-Data-Provider: up2data
Body content typeapplication/json
Body input methodData structure. In Body structure, add a text field url and save
Body contenturl: your trigger's LinkedIn URL
Parse responseYes
Return error if HTTP request failsNo, in Advanced settings
Timeout60, in Advanced settings

The module sends the same request as this curl command, which you can run in a terminal to check your key:

curl -X POST "https://api.datacircle.dev/v1/profiles/enrich" \
  -H "Authorization: Token $DATACIRCLE_API_KEY" \
  -H "X-Data-Provider: up2data" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://www.linkedin.com/in/williamhgates"}'

Return error if HTTP request fails on No lets the scenario run on after a 4xx or 5xx: the module returns a private profile's 422 like a 200, with its status code. On Yes, Make stops the scenario on a 4xx or 5xx, and turns it off once the errors in a row reach its Errors before deactivation setting, or at the first one when an instant trigger, such as a webhook, starts it. Make reads a 429 as a rate limit error, and pauses a scheduled scenario's next run for 20 minutes.

Parse response on Yes turns each field of the answer into an item you can map. Make lists them once the module has run, so run the scenario on one row first. We bill that call like any other. Our API answers within 45 seconds, with a 503 when the provider is slow, so a 60 second Timeout gets that answer.

A Router: one route per status code

After the HTTP module, add a Router. Give each route a filter on the HTTP module's status code, and make the last one the fallback route, which takes every answer the other filters don't:

Up2Data's status codes, their cost and their route
Status codeWhat it meansCostThe route
200the profile$2.375 per 1,000Found: writes the fields and found
422Up2Data can't reach that profile: private or deletedfreeNot found: writes not found: private or deleted, free
400not a LinkedIn profile URL: a company page or a malformed URLfreeNot a profile URL: writes not a profile URL, free
429Up2Data's daily limit, or its rate limitfreeDaily limit: the Fetchin module, below
any other401: the key is wrong. 402: your balance is too low. 502, 503 or 504: Up2Data failedfreeError, the fallback: writes error and the status code

Up2Data takes $1 a day per account (421 profiles), with a shared daily limit for all customers, then answers 429 until 00:00 UTC. HarvestAPI has no daily limit. Fetchin has no daily limit either. A call your balance can't cover answers 402. Add funds, from $5, on your dashboard.

Past Up2Data's daily limit: a second HTTP module calls Fetchin

On the Daily limit route, add a second Make a request module with the same keychain. It calls Fetchin, at $1.485 per 1,000 against HarvestAPI's $3.70.

The Make a request module's settings for Fetchin
FieldValue
Authentication typeAPI key, with the Datacircle API key keychain
URLhttps://api.datacircle.dev/api/v1/profile
MethodGET
HeadersX-Data-Provider: fetchin
Query parametersprofileUrlOrUrn: your trigger's LinkedIn URL
Parse responseYes
Return error if HTTP request failsNo, in Advanced settings
Timeout60, in Advanced settings

A second Router after it sends each Fetchin answer down its route:

Fetchin's status codes, their cost and their route
Status codeWhat it meansCostThe route
200the profile$1.485 per 1,000Found (Fetchin): writes the fields and found (Fetchin)
404, and the answer's code is PROFILE_NOT_FOUNDFetchin can't find that profile: private or deleted$1.485 per 1,000: Fetchin bills the lookupNot found (Fetchin): writes not found (Fetchin): private or deleted, billed
400not a LinkedIn profile URL: at its daily limit, Up2Data answers 429 before it checks the URLfreeNot a profile URL: writes not a profile URL, free
any other401, 402, a 404 without that code, 502, 503 or 504. 429: Fetchin's rate limit, which you share with other Datacircle customersfreeError, the fallback: writes error and the status code

Fields for the next module

Each route ends with its own module that writes the row back, such as Google Sheets' Update a Row, with your trigger's row in Row number. The Found routes write these fields:

Each column's source in Up2Data's and Fetchin's answers
ColumnFrom Up2DataFrom Fetchin
statusfoundfound (Fetchin)
titledata.current_company.titlejobTitle
companydata.current_company.namecompanyName
locationdata.location.rawlocation
headlinedata.headlinetitle
industry, headcountdata.current_company.industry, .headcountempty
cost_usddatacircle_meta.cost_usddatacircle_meta.cost_usd

Fetchin returns the profile's industry, not the company's, and no headcount, so the Found (Fetchin) route leaves industry and headcount empty. Fetchin's Not found route writes the status and cost_usd, since Fetchin bills the lookup. The other routes write the status alone. Our LinkedIn Profile API page shows the profile's other fields, such as jobs, schools and skills.

Cost per 1,000 profiles

We charge your balance these prices, with no markup, as our pricing page shows:

Our price per 1,000 profiles and daily limit, by provider
Up2DataFetchin
Per 1,000 found$2.375$1.485
Per 1,000 not foundfree$1.485
Daily limit421 profiles per accountnone

If 1,000 new rows come in one day and the providers find every profile, you pay us $1.86 at most: $1.00 for 421 through Up2Data and $0.86 for the other 579 through Fetchin, less if all our customers together reach Up2Data's daily limit sooner. Fetchin costs less per profile found but bills a profile it can't find, which Up2Data doesn't. It also gives no company industry or headcount, so the scenario calls Up2Data first.

Make also charges its own credits: 1 for each module run of a non-AI app. A row takes 2: the Up2Data call and the module that writes the row. Past the daily limit it takes 3, with Fetchin's call. The trigger takes 1 for each check.

The same call in n8n: LinkedIn profiles in n8n. In a Zap: LinkedIn profiles in Zapier. In a Google Sheet, without Make: LinkedIn profiles in Google Sheets. From Python: get LinkedIn profile data with Python. Other vendors' prices per 1,000: LinkedIn profile API pricing compared.

Questions

Can Make get LinkedIn profile data?

Yes, with the HTTP app's Make a request module calling a LinkedIn profile API: send the profile's URL, get JSON back. Make's LinkedIn app can't read someone else's profile: its modules post as you or as your company page, and read your company page's posts and statistics. With our API: POST {"url": "<the profile's LinkedIn URL>"} to https://api.datacircle.dev/v1/profiles/enrich, with your key in an API key keychain (Authorization: Token <your key>) and the header X-Data-Provider: up2data. Past Up2Data's daily limit, send the URL to Fetchin from a second Make a request module: GET https://api.datacircle.dev/api/v1/profile?profileUrlOrUrn=<the profile's LinkedIn URL>, with X-Data-Provider: fetchin.

Does it work on Make's Free plan?

Make says all customers can use its new HTTP app, and its Free plan has routers and filters. Free gives 1,000 credits a month, 2 active scenarios and scheduled runs at most every 15 minutes. A row takes 2 credits, 3 once you pass Up2Data's daily limit, and each trigger check takes 1. On Free, run the trigger a few times a day, not every 15 minutes. We haven't run it on any Make plan.

Why turn off Return error if HTTP request fails?

With it off, Make won't stop your scenario over one private profile. On Yes, Make stops the scenario on a 4xx or 5xx answer, and turns it off once the errors in a row reach its Errors before deactivation setting. Make reads a 429, Up2Data's daily limit, as a rate limit error, and pauses a scheduled scenario's next run for 20 minutes. On No, every answer comes out of the module with its status code, and the Router sends it down its route.

How much does it cost to enrich LinkedIn profiles in Make?

$2.375 per 1,000 through Up2Data (a profile it can't find is free), $3.70 per 1,000 through HarvestAPI. $1.485 per 1,000 through Fetchin, a profile it can't find billed the same. HarvestAPI bills a profile it can't find at $2.30 per 1,000. Make charges its own credits for each module run, and we take each call's price from your Datacircle balance. Say you find 1,000 profiles in a day: 421 through Up2Data ($1.00) and 579 through Fetchin ($0.86), $1.86 in all.

Is there a daily limit?

Up2Data takes $1 a day per account (421 profiles), with a shared daily limit for all customers, then answers 429 until 00:00 UTC. HarvestAPI has no daily limit. Fetchin has no daily limit either.

Is each request live, or cached?

Live. Each request goes to the provider and gets the profile as it is today.

Do I need a LinkedIn account?

No. You send the profile's URL with your Datacircle key: no LinkedIn login, no cookies, no browser.

What happens when my balance runs out?

A call your balance can't cover answers 402. Add funds, from $5, on your dashboard.

Get started

Sign up at datacircle.dev with your work email: a $5 credit, that's 2,105 LinkedIn profiles at $2.375 per 1,000.

Sign up
Ask AI about Datacircle

Each opens with our question