Turn 50 LinkedIn Profiles into a Lead List in Google Sheets
Paste LinkedIn profile URLs, run =LINKEDINPROFILE, and get name, title, company and contact columns in Google Sheets. 50 profiles is five formulas and 2,000 scraping credits instead of an afternoon of copy and paste.
Phil Nguyen · 8 min read

To scrape LinkedIn profiles into Google Sheets, put the profile URLs in a column and type =LINKEDINPROFILE(A2:A11) in an empty cell. You get back a ready-to-work lead list, one row per person with Full Name, Headline, Location, Job Title, Company, Experience Summary, Education and Skills, so you stop copying profiles by hand and start writing to the right people.
Picture an agency founder with 50 LinkedIn URLs from an event attendee list. Opening each profile and copying name, title, company and location into a sheet takes, say, 3 minutes, so 50 profiles is 2.5 hours of copy and paste before a single email goes out. With LINKEDINPROFILE it is five formulas of 10 URLs each, at 40 scraping credits per profile, so 2,000 credits for all 50.
For posts instead of people, =LINKEDINPOSTS("b2b sales", 20) searches LinkedIn posts by keyword and writes the author, post text, engagement counts and post URL for each one.
Formula
=LINKEDINPROFILE(A2:A11)Pass the whole range of profile URLs in one call. The cell shows a loading placeholder, then the results land on their own results tab.
New to scraper formulas? Web scraping in Google Sheets covers the whole family, and the sales lead generation guide shows where this fits in a prospecting sheet.
How do I turn a list of LinkedIn URLs into a prospect table?
Start with one column of personal profile URLs in the form https://www.linkedin.com/in/username. LINKEDINPROFILE only reads profile URLs you already have. It does not search LinkedIn for people, and company pages are not supported, so use LINKEDINCOMPANY for those.
Then point one formula at the range:
Formula
=LINKEDINPROFILE(A2:A11)One formula, one run, up to 10 profiles.
A few things happen next:
- The cell shows
⏳ Scraping...straight away while the job runs in the background. - The results are written to a new tab named Linkedin Scraper Results. Its first column, Source, holds the address of the formula cell that asked for each row.
- With Keep Formula off, the formula cell changes to a short status such as
✅ 10 results → Linkedin Scraper Results. With Keep Formula on, the formula stays in the cell.
One call returns up to 10 profiles. LINKEDINPROFILE has no row limit argument, so each run is capped at its default of 10 rows. For a list of 50, write five formulas, each pointing at a block of 10 URLs (A2:A11, A12:A21 and so on).
If you put the formulas in the same column with the same shape, their rows are collected on one shared results tab, each tagged with its Source cell.
What fields does LINKEDINPROFILE return?
Each profile becomes one row. The main columns are:
| Column | What it holds |
|---|---|
| Full Name, First Name, Last Name | The person's name |
| Headline | The headline under their name |
| Location, Country, City/Region | Where they are based |
| Email, Phone | Contact details, when the profile source has them |
| Job Title, Company | Their current role |
| Company Industry, Company Size, Company Website, Company LinkedIn | Details about the current employer |
| Job Started, Job Duration, Current Role Years | How long they have been in the role |
| About | The About section, cut to 1,000 characters |
| Experience Summary | Up to five recent roles in one cell, as title @ company with dates |
| Education | Degree, school and years |
| Skills, Languages, Certifications, Publications | Listed in one cell each |
| Connections, Followers | Audience size |
There are also flag columns (Is Premium, Is Verified, Is Job Seeker, Is Creator) and a LinkedIn Handle column, 42 columns in total.
Blank values are left as empty cells, so a profile with no email shows an empty Email cell rather than a placeholder.
How do I find LinkedIn posts about a topic?
Use LINKEDINPOSTS with one or more keywords and an optional post count.
Formula
=LINKEDINPOSTS({"b2b sales","sales hiring"}, 40)Searches LinkedIn posts for each keyword. The 40 is the total number of posts, split across the keywords.
Each row includes:
- Author, Author Headline, Author Profile URL and Author Username
- Post Text (up to 1,000 characters)
- Likes, Comments and Shares
- Posted Date, Post URL and Post Type
If you leave out the count, you get 20 posts. Keyword search is the only filter: there is no sort order, date range or author filter, so pull the posts and then filter the Posted Date or Author columns in the sheet. For posts written by people rather than company pages (check the Author Type column), the Author Profile URL column is a ready-made input for LINKEDINPROFILE.
What does each one cost?
Both formulas use scraping credits, charged per row delivered:
| Formula | Cost | Default rows |
|---|---|---|
| LINKEDINPROFILE | 40 credits per profile | 10 per call |
| LINKEDINPOSTS | 8 credits per post | 20 per call |
So a full LINKEDINPROFILE call of 10 profiles costs 400 credits, and a default LINKEDINPOSTS search costs 160.
The credits are held when the job starts and settled to what was actually delivered. A run that finds nothing is not charged. If your balance cannot cover the full run, SheetMagic shrinks it to what you can afford and adds a row saying Limited to N results to fit your remaining credits.
Free comes with 100 scraping credits, enough for two profiles. Solo includes 10,000 scraping credits a month. The AI tokens vs scraping credits guide explains how the two balances differ.
What can you do with the scraped LinkedIn profiles?
The rows are the start of outreach, not the end. Four uses that pay back the 2,000 credits:
- Cut the list before you write a word. Filter Job Title and Company Size so only the people who can sign go into the sequence. If 20 of the 50 are wrong-fit, that is 20 emails you do not write and 20 follow-ups you do not chase.
- Build a call list. Sort by Location or Country so each rep gets their own time zone, and keep the Email and Phone columns next to the name. Those columns fill only when the profile source has them, so plan on gaps.
- Write the first line in one drag. An AITEXT column reads the Headline and Experience Summary and drafts an opener (shown below). At 50 rows, even 2 minutes saved per opener is over an hour and a half back.
- Get the account, not just the person. The Company LinkedIn column feeds straight into LINKEDINCOMPANY, so the same sheet tells you which employers fit before you spend time on their staff.
How does this fit with LINKEDINCOMPANY in a lead sheet?
LINKEDINCOMPANY takes LinkedIn company page URLs and returns company data such as industry, staff count, headquarters and specialties. LINKEDINPROFILE gives you the person, LINKEDINCOMPANY gives you the account.
A simple layout:
- People tab: profile URLs in column A,
=LINKEDINPROFILE(A2:A11)beside them. - Results tab: the Company LinkedIn column from the profile results lists each person's employer page.
- Companies tab: feed those company URLs to
=LINKEDINCOMPANY(...)for firmographics.
The full company workflow, plus email checks and news hooks, is in Enrich Lead Lists in Google Sheets.
Can AI write a first line from the profile?
Yes. Once the profile row is in the sheet, AITEXT can read it. AITEXT takes a prompt and an optional context cell:
=AITEXT("Write a one sentence opener for a cold email to this person, based on their current role and experience. No flattery.", 'Linkedin Scraper Results'!B2&" "&'Linkedin Scraper Results'!C2&" "&'Linkedin Scraper Results'!Z2)
The context pulls the Full Name, Headline and Experience Summary cells from the results tab (column A there is Source). Adjust the row and column letters to match your tab.
AITEXT uses AI tokens, which are a separate balance from scraping credits.
FAQ
Do I need to log into LinkedIn?
No. Neither formula asks for LinkedIn cookies or a login. LINKEDINPROFILE takes only profile URLs, and the post search runs without LinkedIn cookies.
Is every profile guaranteed an email?
No. The Email column fills only when the profile source returns one, and blank values are left as empty cells. Pair the results with email verification before you send.
How long does it take?
It runs in the background, so you can keep working. The worker waits up to nine minutes for a run. If it takes longer, the cell shows #ERROR: this scrape took too long, try a smaller maxResults. LinkedIn sometimes returns nothing for a profile that exists, so when a run on SheetMagic's own scraping key comes back empty and at least a minute of that time is left, it is retried once automatically.
Why did I only get 10 profiles from 50 URLs?
Each LINKEDINPROFILE call returns at most 10 rows because the formula has no row limit argument. Split longer lists into blocks of 10 URLs, one formula per block.
How much time does this save on a 50-person list?
In our example, copying 50 profiles by hand at about 3 minutes each is 2.5 hours. With LINKEDINPROFILE it is five formulas of 10 URLs each and 2,000 scraping credits (40 per profile), and the scrape runs in the background while you work.
Text and scraping formulas run on the free allowance. Install from the Google Workspace Marketplace, no card, no expiry.
Install free for Google SheetsAbout the author
Phil NguyenPhil builds SheetMagic, the Google Sheets add-on that brings AI and web scraping into the spreadsheet, used by 6,300+ people. He writes these guides from the formulas he runs on his own sheets.
