Most scraping jobs I see start the same way. Someone needs to scrape data from product list, a directory of companies, or a page of search results in a spreadsheet, and writing a Python script with selectors and pagination logic feels like too much for a one-off task.
For that kind of job, a point-and-click extension is faster. In this post I'll show how to scrape a list page with the Agenty's Scraping Extension and export the result to CSV, Excel, or JSON.
I'll use Scraping Sandbox, a free practice site with 500+ sample e-commerce products. It's explicitly open for scraping practice, so you can follow along without worrying about anyone's terms of service.
Install the extension
Install Agenty from the Chrome Web Store and pin it to your toolbar. Installing it and running scrapers in your browser is free.
Pick a Scraping mode
Open the page you want to scrape, then click the Agenty icon to open the side panel. You'll see four modes:
- List: for repeating items like product grids, search results, and directories
- Page details: for fields on a single page, which you can then reuse across many URLs
- Images: collects images on the page so you can preview and download them as a ZIP
- Emails: finds email addresses in page text,
mailto:links, and attributes
There are also ready-made templates for 50+ popular sites. If your target is one of them, start there and skip the selector work.
The Scraping Sandbox home page shows a grid of 24 product cards per page, so choose List.
Click the data you want
Click the name of the first product. Agenty highlights the other product names that match and generates the selector for you. You don't need to open DevTools or write anything by hand.
Repeat for the other fields you need. Each card has a vendor, rating, price, original price (on discounted items), category, SKU, stock status, and a link to the product page. Then clean up the field list:
- Rename fields to something you'll recognize in the spreadsheet (
name,price,sku,url) - Remove anything it picked up that you don't need
- Add a custom CSS selector when the auto-generated one grabs too much or too little
Discounted products are a good example. They show two prices, the current one and the crossed-out original. If you only want the current price, use .product-card .price as a custom selector. The original price has its own class, .compare-at-price, so you can add it as a separate field if you want both.
Handle pagination
A single page is rarely enough. Agenty supports a few ways to move through pages:
- Current page only
- Auto-scroll, for infinite-scroll pages that load more items as you scroll
- A "Next" button or link
- A URL pattern, such as a numbered range of page URLs
- A list of URLs you paste in
Scraping Sandbox splits the products across 21 pages with numbered buttons and a next arrow at the bottom. The URL doesn't change when you switch pages, so a URL pattern won't work here. Use the "Next" button option and point it at the next arrow.
On sites where pages do have predictable URLs (like ?page=2), a URL pattern is usually more reliable than clicking a button. If you want to try auto-scroll, the sandbox has a separate infinite scroll page for that.
You can also adjust speed, delays, timeouts, page limits, and scroll behavior. Keep the delays reasonable. Hammering a site with fast requests is the quickest way to get blocked, and it's not fair to the site owner.
Run it and export
Run the scraper. It works inside your browser, so you can watch it move through pages. When it finishes, review the results table and check a few rows against the site.
Export to XLSX, CSV, or JSON.
Save the scraper if you'll need the data again. Saved scrapers rerun with one click, and the run history lets you reopen past results.
Scraping detail pages
The List mode gets you the overview. If you need fields that only appear on each item's own page, like the description, review count, or tags, use Page details:
- Open one product page, for example /product/1, and choose Page details.
- Click the fields you want, the same way as before.
- Point the scraper at the product URLs. You can paste the
urlcolumn from your list run as a URL list, or use a URL pattern, since product pages follow/product/1,/product/2, and so on.
The fields you picked once are applied to every page.
Each product page on the sandbox also shows a "Scraped JSON Data" block with the expected values for that product. Compare a few of your rows against it to check that your selectors picked up the right data.


Top comments (0)