How to Web Scrape?
How to web scrape: look for a feed first, read robots.txt and the terms, then fetch, parse, paginate, dedupe, schedule and monitor. Any language works.
Dvir Atias
Founder, JobsPipe
How to web scrape, in one sentence: find where the data already comes out as a feed, and only if there is none, fetch the pages, parse them, extract the fields, page through the rest, dedupe, schedule the run and watch it. The method is the same in Python, JavaScript, Go or a no-code tool; the language is the least important choice you will make.
How to web scrape, step by step
- Check for an API or feed first. Open the site’s developer page, look for RSS links, and watch the network tab while you browse: many sites fetch their own content from a JSON endpoint you can call directly. A feed is stable, permitted and cheap. Scrape only what has no feed.
- Read robots.txt and the terms. The
/robots.txtfile says which paths the site asks crawlers to avoid; the terms of service say what the site permits contractually. Neither is the whole legal picture, but ignoring both is the posture that loses disputes. - Fetch like a considerate client. Identify your script in the
User-Agent, keep requests spaced out, cache what you have already fetched, and stop on HTTP 429 or 403 rather than retrying harder. Sites can tell the difference between a polite script and a flood, and they treat the two differently. - Parse and extract. Prefer JSON when the site offers it. For HTML, use a parser and CSS selectors, anchor them on stable attributes such as ids and data attributes rather than layout classes, and normalise every value as you go: dates to ISO, money to a number and a currency, links to absolute URLs.
- Paginate and dedupe. Follow the next link or cursor until it runs out, and key every row on the site’s own identifier so a re-run updates rows instead of duplicating them. Record first-seen and last-seen timestamps; the absence of a row on the next run is the signal that it went away.
- Schedule, monitor, and expect breakage. Run on a timer, count rows per run and alert when the count drops to zero or the parser starts returning empty fields. Markup changes without notice, and a scraper that fails silently is worse than one that never ran.
Can you scrape any website? Technically, most of them, at a cost that rises with the site’s defences: a static page is one request, a JavaScript app needs a headless browser, and a site behind bot management needs proxies and constant repair. Legally and contractually, no. Pages behind a login, personal data and copyrighted content carry real exposure, and terms of service can forbid automated access even to public pages. LinkedIn is the sharpest example of both the technical and the legal cost; the five ways to get its postings are compared in how to scrape LinkedIn jobs. Where the line sits in general is covered in is web scraping legal, and the steps above are written out as runnable code in how to web scrape with Python.
Where JobsPipe fits
JobsPipe is a jobs data API that collects live postings from LinkedIn, Indeed, Y Combinator, Naukri, Workday, Greenhouse, Workable, SmartRecruiters, Ashby, Lever and Paylocity, returns them as one schema with closure tracking and a ghost score, and includes a free tier of 1,000 jobs a month at jobspipe.dev. It is step one of the method applied to job postings: the feed that exists, so you do not have to scrape. Pagination is limit and cursor, dedupe is the id on each row, and closure tracking replaces the first-seen and last-seen bookkeeping with status, closed_at and closed_reason.
Get the feed instead of building the scraper - free tier included.
Get a free API keyFrequently Asked Questions
How to do web scraping?
Check for an API or feed first, read robots.txt and the terms of service, fetch pages at a polite rate with an identifying User-Agent, parse the HTML or JSON, extract and normalise the fields, follow pagination, key rows on the site's own ids so re-runs update rather than duplicate, then schedule the job and alert on empty results.
Can you scrape any website?
Technically most, at a cost that climbs with the site's defences: static pages are trivial, JavaScript apps need a headless browser, and sites behind bot management need proxies and continual repair. Legally and contractually, no. Login walls, personal data, copyright and terms that forbid automated access all apply regardless of what is technically possible.
How do you start web scraping?
Pick a source that publishes a feed, such as a Greenhouse job board, and read it with one HTTP request and a JSON parser. That teaches fetching, parsing, storing and scheduling without proxies or challenges. Move to HTML parsing when a target has no feed, and to a headless browser only when the page is built by JavaScript.

