DevelopmentPayment protectionDetails
- Revisions within the package are free.
- If you do not respond within 3 days of delivery, the work is accepted automatically.
The money is reserved when you pay and released only once you accept the work.

Example result
Parser of a garden tools supplier's catalog into Excel
What the result looks like
| Article | Name | Price | In stock | Weight | Photo |
|---|---|---|---|---|---|
| GT-1042 | Pruning shears, 20 mm | 18.90 | Yes | 0.24 kg | …/gt-1042.jpg |
| GT-1187 | Folding saw, 210 mm | 24.50 | Yes | 0.31 kg | …/gt-1187.jpg |
| GT-2210 | Hedge shears, wavy blade | 39.00 | No | 1.10 kg | …/gt-2210.jpg |
| GT-3305 | Hand trowel, stainless | 9.80 | Yes | 0.18 kg | …/gt-3305.jpg |
| GT-4120 | Garden hose 25 m, 1/2" | 42.00 | Yes | 2.90 kg | …/gt-4120.jpg |
The file in the example has 1,236 products from 52 list pages.
A part of the code
def product_links(list_url: str) -> Iterator[str]:
"""Product page links from every page of the list, following 'Next'."""
url: str | None = list_url
while url:
page = fetch(url)
for card in page.select("div.product-card a.title"):
yield urljoin(url, card["href"])
next_link = page.select_one("a.pagination-next")
url = urljoin(url, next_link["href"]) if next_link else None
def fetch(url: str) -> BeautifulSoup:
"""One open page, at a polite pace: a pause between requests and a few tries on errors."""
for attempt in range(3):
time.sleep(settings.delay_seconds)
response = session.get(url, timeout=30)
if response.status_code == 200:
return BeautifulSoup(response.text, "html.parser")
log.warning("%s answered %s, try %d of 3", url, response.status_code, attempt + 1)
raise ScraperError(f"{url} did not open after 3 tries")
Files: a ZIP archive with scraper.py, settings.ini (the start page, the pause between requests, the file name), requirements.txt and a README on installing and running it. It reads only open pages, one every 2 seconds, and checks the site's robots.txt first. The client runs it on their own computer.
Client: an online garden shop that resells a supplier's tools; the supplier has an open catalog on its website but no price list file. Task: go through the catalog's list pages, open every product page and save the article number, name, price, stock, weight and main photo link to Excel, to compare prices once a week.
The client and all details are made up.
About this service
Each time you run it, this parser checks which products are in stock on an open site, such as your supplier's or a shop whose goods you resell, and saves a table: name, code, status as the page writes it, quantity left when shown, delivery time, price, link, and the date and time of the check. Keep the file from each run and you see what came back and what ran out. Send the site, links to a category and a product page, the statuses the site uses and one or two pages saved from your browser. You get Python code, a settings file and a README and run it on your computer. It reads only open pages at a polite pace and never logs in, gets around captchas or protection, or collects personal data. You decide whether the site's terms allow it; a later change of its layout needs an update.
What is included
- What you getA ZIP archive with the Python code, a settings file and a README with step-by-step instructions; the code is also shown on the order page.
- Status as a columnThe site's words, or your own labels such as yes / no / on order
- Quantity when shownWhen the page shows how many are left
- Dated rowsDate and time of the check in every row
- Polite paceA pause between pages, set in the settings
- Runs on your computerWindows, macOS or Linux, with Python
How it works
- 1PagesYou give the site, the products and the statuses it uses
- 2ParserWe write the code and the guide to running it
- 3First checkYou run it and compare a few statuses with the site
- 4ChangesYou ask for changes within your package and send any error message
What we need from you
The site and the exact pages: a link to a category and to a product page, or your list of product links, and roughly how many products. The stock statuses the site shows, written as they appear. The fields you need besides the status, e.g. code, price, delivery time. One or two pages saved from your browser (File > Save page as) or screenshots, ideally one in stock and one out of stock. How often you plan to run it.
We will ask you:
- Which site and products?
- The stock statuses
- Other fields
- How often will you check?
Compare packages
| Packages | BasicStock of your product list$21 | StandardStock of a whole category$41 | PremiumSeveral sites or sections$74 |
|---|---|---|---|
| Deadline | 1 day | 2 days | 3 days |
| Revisions | 1 | 2 | 3 |
| Sites | 1 | 1 | up to 3 |
| Kinds of page | 1 | 2 (category and product) | up to 3 |
| Fields | up to 10 | up to 25 | up to 25 on each |
| Goes through the pages of a list | No | Yes | Yes |
| Results file | CSV | Excel or CSV | Excel, CSV or JSON |
| Duplicates removed, resumes where it stopped | No | No | Yes |
| Date and time of the check | Yes | Yes | Yes |
| Order Basic | Order Standard | Order Premium |
Payment protection
You pay when you order, but the money is released only for accepted work.
- Fixed priceThe package price does not change after you pay.
- The money is reservedWhen you pay, the amount is only reserved. It is released to the service once you accept the work.
- Checked before deliveryEvery result goes through a quality check before it reaches you, and you see it on the order page before accepting it.
- Free revisionsAsk for changes within your brief as many times as the package allows.
- Acceptance after 3 daysIf within 3 days of delivery you neither accept the work nor ask for changes, it is accepted automatically. If you write in the order chat after delivery, the order waits; once we answer, we may start the 3 days again and will say so in the chat.
- Redo or a full refundIf the result does not match your brief and the revisions did not fix it, or the work takes more than twice its deadline, write in the order chat: we will redo the work or refund the payment in full.
Questions and answers
Will it alert me when a product comes back?
No. It saves a table with the date and time of each check; you filter it or set two files side by side in Excel. Messages and alerts are not part of it.
Can it show stock in a certain store or warehouse?
Only if an open page shows it without signing in, for example a list of stores on the product page. A store choice that needs an account is out of reach.
How often can I run it?
As often as is fair to the site: a pause between pages means a large category takes a while, so a few times a day is usually the most. Premium adds a guide to running it on a schedule.
Can it check stock on Amazon, Google Shopping or social networks?
No. Their terms forbid it, as do the terms of LinkedIn and other social networks. For other sites, you decide whether their terms allow it.
What if the site changes its pages?
The parser follows the pages as they are now. A later change of layout or of the status words needs an update, which is a new order.
Did not find your answer?


