LinkedIn Job Post Extractor Template: Save Job Postings to Google Sheets
The LinkedIn Job Post Extractor is an automation template that extracts information from LinkedIn job posting pages and saves it to Google Sheets. Instead of manually copying job titles, company names, salaries, and descriptions, the template captures all the data automatically.
This post explains what the template does, what data it extracts, how to set it up, and what it’s useful for.
What Data Gets Extracted
When you run this automation on a LinkedIn job posting page (linkedin.com/jobs/view/…), it extracts these fields:
Field | What It Captures | Notes |
---|---|---|
Job Title | The position title | e.g., “Senior Software Engineer” |
Company Name | The hiring company | Extracted as a clickable link text |
Location | Job location | City, state, country, or “Remote” |
Salary Range | Compensation information | Only if displayed on the posting |
Posted Date | When the job was posted | e.g., “2 weeks ago”, “3 days ago” |
Job Description | Full description text | Includes requirements, responsibilities, etc. |
Job URL | The LinkedIn posting URL | Automatically added using {{page_url}} |
Extraction Date | When you extracted the data | Automatically added using =TODAY() |
Important: Not all LinkedIn job postings display complete information (like salary). If a field isn’t shown on the page, that field will be empty in your spreadsheet.
How the Automation Works
The automation workflow showing how job data is extracted and saved
The template uses 11 automation blocks:
Input Block
- Page Content: Extracts the full HTML from the LinkedIn job posting page
Extraction Blocks (Find Blocks)
These use CSS selectors to locate specific information on the page:
- Job Title:
.job-details-jobs-unified-top-card__job-title h1
- Company Name:
.job-details-jobs-unified-top-card__company-name a
- Location:
.job-details-jobs-unified-top-card__primary-description-container span > span.tvm__text--low-emphasis:first-child
- Salary Range:
.job-details-fit-level-preferences > button:first-child
- Posted Date:
.job-details-jobs-unified-top-card__primary-description-container span > span.tvm__text--low-emphasis:nth-child(3)
- Job Description:
#job-details
Note: Sites occasionally update their page structure, which may require updating these CSS selectors. The template provides these as a starting point that you can adjust if the HTML changes. See the CSS Selector Reference for guidance on finding and updating selectors.
Processing Block
- Job Description Clean: Removes extra whitespace and line breaks from the description text
Metadata Blocks
- Add Job URL: Inserts the current page URL using
{{page_url}}
- Add Date: Inserts today’s date using the Google Sheets
=TODAY()
formula
Output Block
- Save to Sheets: Maps all extracted fields to your spreadsheet columns
Setting Up the Template
Step 1: Prepare Your Spreadsheet
Create a Google Sheet with these column headers (or customize as needed):
Job Title | Company Name | Location | Salary Range | Posted Date | Job Description | Job URL | Extraction Date |
---|
You can add additional columns for your own tracking purposes (Status, Notes, Priority, etc.).
Step 2: Import the Template
- Open the Add to Sheets extension
- Go to the Automations page
- Click Import Template
- Select LinkedIn Job Post Extractor from the template library
- The workflow will load in the automation builder
Step 3: Configure the Save to Sheets Block
- Click on the Save to Sheets block in the workflow
- Select your Google Sheet
- Choose the sheet tab within the spreadsheet
- Map each field to the corresponding column:
Field | Column |
---|---|
Job Title | A |
Company Name | B |
Location | C |
Salary Range | D |
Posted Date | E |
Job Description | F |
Job URL | G |
Extraction Date | H |
Step 4: Save the Automation
- Click Save in the automation builder
- Give it a name (e.g., “LinkedIn Job Extract”)
- Optionally, set up a keyboard shortcut for faster access
How to Use It
Running the Automation
Once configured, you can extract job posting data in two ways:
Option 1: Keyboard Shortcut
- Navigate to a LinkedIn job posting page
- Press your configured keyboard shortcut
- The data is extracted and saved to your sheet
Option 2: Extension Panel
- Navigate to a LinkedIn job posting page
- Open the Add to Sheets extension
- Go to the Automations tab
- Click your saved automation
- Click Run
Extracting Multiple Jobs
To build a database of multiple job postings:
- Search LinkedIn for jobs you’re interested in
- Open job postings in new tabs (Cmd/Ctrl + Click)
- Go through each tab and run the automation
- Each job gets saved as a new row in your spreadsheet
What This Speeds Up
The main time savings comes from eliminating repetitive copy-paste actions.
Manual Process vs. Automation
Task | Manual Method | With Template |
---|---|---|
Extract one job posting | Copy/paste 8 fields individually (~2-3 min) | Press keyboard shortcut (~5-10 sec) |
Extract 10 job postings | 20-30 minutes | Under 2 minutes |
Build a dataset of 50 jobs | 2+ hours | 10-15 minutes |
Common Use Cases
Job Application Tracking: Extract jobs you’re interested in, then add custom columns for Application Status (Applied, Interview, Offer, Rejected), Applied Date, Follow-up Date, Contact Person, and Notes. This creates a complete application tracking system where you can monitor your job search progress and ensure you follow up on opportunities at the right time.
Salary Research: Extract multiple postings for similar roles to compare salary ranges across companies, understand compensation by location, identify which companies pay above or below market rates, and negotiate better offers with data. Having concrete salary data from actual job postings gives you leverage in negotiations and helps you target companies that match your compensation expectations.
Competitive Analysis: Recruiters and hiring managers can track what competitors are offering, monitor their hiring activity, compare job descriptions and requirements, and benchmark their own postings. This competitive intelligence helps ensure your job postings are attractive and your compensation packages are competitive in the market.
Market Research: Career coaches, analysts, and researchers can identify trending skills and qualifications, track remote work adoption rates, analyze geographic hiring patterns, and study industry-specific requirements. Building a dataset of 50-100 job postings provides enough data to spot meaningful trends and make informed recommendations.
Customizing the Template
The template is fully customizable and serves as a starting point that you can modify to fit your specific needs.
Adding or Removing Fields
You can add Find blocks to extract additional information like job type (Full-time, Contract, etc.), experience level, industry, or number of applicants. Conversely, you can delete blocks for data you don’t need - for example, remove salary extraction if you don’t care about compensation, or skip the job description if you only want basic details for quick scanning.
Changing Data Cleaning
The Text Transform block that cleans the job description can be modified to change how text is formatted, add additional cleaning steps, or be removed entirely if you prefer the raw text. This is useful if you want to preserve specific formatting or apply custom cleaning logic.
Adjusting for Layout Changes
When LinkedIn updates their page structure, you’ll need to update the CSS selectors in the Find blocks. Open the automation in the builder, find the block that’s not working, update the CSS selector to match LinkedIn’s new HTML structure, test it on a job posting page, and save the updated automation. Our CSS Selector Reference provides guidance on finding the right selectors when the page layout changes.
Notes
Data Availability: The automation can only extract what’s visible on the page. Some information is optional on LinkedIn, so expect that some postings may not have 100% complete rows (for example, salary information is often not included). Some fields may also vary depending on how the company structured their posting.
Extraction: The automation works one job posting at a time, and you need to manually navigate to each posting. This is designed for personal data collection rather than bulk scraping.
Layout Changes: LinkedIn occasionally updates their HTML structure. When this happens, you may need to update the CSS selectors in the Find blocks. The template provides the selectors as a starting point that you can adjust as needed.
Technical Details
Block Configuration
Block Name | Block Type | Configuration |
---|---|---|
Page Content | Input | Extracts full HTML from current page |
Job Title | Find | CSS Selector, extracts text |
Company Name | Find | CSS Selector, extracts text |
Location | Find | CSS Selector, extracts text |
Salary Range | Find | CSS Selector, extracts text |
Posted Date | Find | CSS Selector, extracts text |
Job Description | Find | CSS Selector, extracts text |
Job Description Clean | Text Transform | Clean Whitespace transformation |
Add Job URL | Custom Value | Value: {{page_url}} |
Add Date | Custom Value | Value: =TODAY() |
Save to Sheets | Output | Maps fields to spreadsheet columns |
Data Flow
- Page Content block extracts HTML
- Find blocks locate specific data using CSS selectors
- Text Transform cleans the job description
- Custom Value blocks add metadata
- Save to Sheets writes everything to your spreadsheet
All processing happens in your browser. No data is sent to external servers.
Example Video
This video demonstrates how to use automation templates (shown with a different template, but the process is the same):
Getting Started
- Install Add to Sheets if you haven’t already
- Upgrade to the Automations plan to access templates
- Import the LinkedIn Job Post Extractor template
- Configure your spreadsheet columns
- Run it on a LinkedIn job posting to test
Related Templates:
- LinkedIn Profile Extractor - Extract complete profile data including work experience and education
- Find All URLs - Extract all links from any webpage
Questions? Contact us at [email protected] or on Threads.