Skip to content
Calquer

Scrape Job Listings to a Spreadsheet (Free)

By M H TawfikUpdated 11 min read

job search trackerexport job postingsweb scraping

To scrape job listings to a spreadsheet, open the job board, let a pattern-detecting browser extension find the repeating result cards, pick the columns you want (title, company, location, salary, link), then collect across scroll and pagination and export a CSV. The result is one searchable, sortable file you can open in Excel or Google Sheets.

This guide shows the full workflow, the columns a strong job tracker needs, how to handle endless scrolling, and how to merge results from several boards into one place.

A spreadsheet wins because it makes your search sortable, filterable, and comparable. Thirty open tabs hide pay and location behind clicks, lose the role when a tab closes, and force you to re-read each listing. One row per job lets you sort by salary, filter by city, and see every option side by side in seconds.

Tabs are fragile. They crash, reload, and vanish, taking the listing with them. A job board also rotates and removes posts, so a role you saw Tuesday may be gone Thursday with no record that it existed.

A spreadsheet fixes all of that:

  • One view of everything — title, company, pay, and location in adjacent columns.
  • Sort and filter — rank by salary, hide anything outside your radius, group by company.
  • A permanent snapshot — the listing's details stay even after the post is taken down.
  • Room to add notes — application status, contacts, deadlines, and follow-up dates.

The cost is the copying. Doing it by hand across dozens of roles is slow and error-prone. That's the part a no-code export tool removes.

Step-by-step: export a job board list to a spreadsheet

Open the search results page, run a pattern-detecting extension that auto-detects the repeating job cards, confirm or rename the columns it found, then collect across all pages and export a CSV. The whole process takes about a minute and needs no code, no XPath, and no CSS selectors.

Here is the reusable workflow with a tool like Calquer. It works the same on a large public board or a niche industry site.

1. Run your search and load the results

Search the way you normally would: keywords, location, date posted, remote filter. Let the first page of results render fully. You want the actual list of jobs on screen, not the board's homepage.

2. Let the tool detect the repeating job cards

Open the extension. A good detector scans the page and highlights the largest repeating group, which on a job board is almost always the list of result cards. You don't click each field by hand. If it locks onto the wrong block, click one job card to teach it the correct pattern.

3. Confirm and rename the columns

Review the proposed columns. A typical job card yields the title, company name, location, a salary snippet, and the link to the full posting. Toggle off anything you don't need and rename columns in plain English, such as "Role," "Company," and "Pay."

4. Collect across every page, then export

Start the collection. The tool auto-scrolls lazy lists and follows the "Next page" control, gathering every matching row. When it finishes, review the rows for anything odd, then export as CSV, JSON, or TSV. Open the CSV in Excel or Google Sheets and your tracker exists.

Save your search URL with the filters applied. Re-running the same export next week and pasting the new rows below the old ones is the simplest way to keep a fresh feed of openings.

The columns a great job tracker needs

A strong job tracker pairs the data you scrape from the board with a few columns you add yourself. The scraped columns describe the role; the manual columns track your progress. Together they turn a flat list of postings into a working pipeline you update as you apply.

Start with the columns the export gives you, then add tracking fields by hand:

ColumnSourceWhy it matters
Role / TitleScrapedThe job itself; sort and search by keyword
CompanyScrapedGroup roles and spot repeat employers
LocationScrapedFilter by city, region, or "Remote"
SalaryScraped (if shown)Rank and compare pay at a glance
LinkScrapedOne click back to the full posting
Date postedScraped (if shown)Prioritize fresh roles before they close
StatusYou addSaved, Applied, Interview, Rejected, Offer
Date appliedYou addTime follow-ups and measure your pace
Contact / NotesYou addRecruiter name, referral, or a fit reminder
PriorityYou addA simple 1–3 so you act on the best first

Two practical tips. Keep the Link column intact; it's what lets you jump straight back to apply, and many simple copy-paste methods strip it. And capture Salary even when it's a messy string like "$90k–$110k / yr." You can split it into clean numbers later in the sheet.

For native HTML tables and ARIA grids, a good tool names the columns from the page's real <th> headers, so "Salary" and "Location" come through labeled correctly instead of as generic column names.

Handling infinite scroll and multiple pages of results

Most job boards hide their full result set behind infinite scroll or numbered pages, so a basic copy-paste only captures the first screen. The fix is a tool that auto-scrolls until the list stops growing and follows the "Next" control across every page, collecting all matching rows into one file.

This is where simple methods fail. The page you see is rendered by JavaScript after the site's scripts run, and more jobs load only as you scroll or click forward. A static importer never sees those extra rows.

There are two patterns to handle:

  • Infinite scroll — the board appends jobs as you reach the bottom. The tool needs to scroll, wait for new cards to load, and repeat until nothing new appears.
  • Numbered pages or a "Next" button — the tool detects the pagination control and walks through every page, appending each page's jobs to the same set.

A browser extension has a real advantage here because it operates on the live, fully-rendered DOM in your own browser, logged in or not. It reads exactly what you can see after the page finishes loading. For a deeper walkthrough of both patterns, see Scrape Infinite Scroll and Pagination to CSV.

Collect at a calm pace and stay within what you can normally view. Hammering a job board with rapid automated requests can trip rate limits and is poor etiquette. Reading public listings you can already see is the goal, not stress-testing the server.

Merging listings from several job boards

To merge boards, export each one to its own CSV using the same column names, then stack the rows in a single master sheet and deduplicate. Because every export shares headers like Role, Company, and Link, the files line up cleanly and a sort on company plus title surfaces the duplicates to remove.

Few searches live on one site. You might watch a large general board, a remote-only board, and an industry-specific one. The trick is making their exports compatible before you combine them.

Follow these steps:

  1. Standardize column names. Rename the columns to the same labels (Role, Company, Location, Salary, Link) in every export. Matching headers is what lets the rows stack.
  2. Export each board separately. Run the workflow above on each site and save one CSV per source.
  3. Add a "Source" column. Tag each file with the board name before merging, so you know where each role came from.
  4. Stack and deduplicate. Paste all rows into one master sheet, then sort by Company and Role to spot repeats, or use the link as the unique key. Many boards re-list the same job, so expect overlaps.
  5. Sort the master list. Order by salary, location, or your own Priority column to see the best roles first.

Because everything is a plain CSV, this all happens in Excel or Google Sheets with no extra software. If you prefer to stay in Excel for cleanup and de-duplication, the no-code Excel workflow covers Power Query and other native tools.

Turning it into a living application tracker

A living tracker is a master sheet you refresh on your own cadence and update as you apply. Re-run your saved searches weekly, append the new postings, then keep the manual Status, Date applied, and Notes columns current. The sheet becomes both a feed of fresh openings and a record of where every application stands.

Make it a routine:

  • Refresh weekly. Re-run each saved search and paste new rows below the old ones. Deduplicate so a role you already saw doesn't reappear.
  • Update Status as you move. Cycle each row through Saved, Applied, Interview, Rejected, or Offer so the pipeline reflects reality.
  • Use color or filters. Highlight interviews, gray out closed roles, and filter to "Applied, no response" to drive follow-ups.
  • Track your pace. With a Date applied column you can count applications per week and spot stalls early.

This is the payoff of starting from clean data. Because the scraped columns are consistent, your formulas, filters, and pivot tables keep working week after week. A simple pivot on Status, for example, gives you a live funnel: how many roles you've saved, applied to, and converted to interviews.

Everything stays in one file you own. With a tool that runs 100% on your device — no account, no server, no tracking — your job search and the contacts you collect never leave your machine. You can read more about the privacy-first approach or the people behind it.

FAQ

Reading public job listings that are already visible to you, for your own job search, is generally low-risk. Respect each board's terms of service and robots.txt, and avoid republishing data wholesale. Rules vary by site and region, so see our plain-English guide on whether web scraping is legal.

Will the salary always come through?

Only if the board shows it on the result card. Many listings display a range like "$80k–$100k" while others hide pay until you open the role. Capture whatever appears, even as a messy text string, then split it into clean numeric columns in your spreadsheet afterward.

Can I keep my tracker updated automatically?

No — Calquer has no scheduler or background job, so you re-run it yourself. The manual step is tiny, though: save your filtered search URL, reopen it whenever you want fresh results, run the same export, and paste the new rows below your existing ones. Deduplicating by the job link keeps the master sheet clean while surfacing only genuinely new openings.

Does this work on Excel and Google Sheets?

Yes. The export is a standard CSV that opens directly in both Excel and Google Sheets, and TSV or JSON are available too. Once it's open, you add your own Status and Notes columns and use native sorting, filtering, and pivot tables to manage the pipeline.

What if the tool detects the wrong list?

Click a single job card to re-teach the pattern. The detector then re-reads the page and locks onto the repeating block you pointed at. If columns look misaligned, it usually means the wrong repeating element was selected, and picking one clean card fixes the alignment for every row.


Ready to build your tracker? Add Calquer to Chrome and turn your next search results page into a clean, sortable spreadsheet — free, no code, 100% in your browser.

Keep reading

← All articles