Payment 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
Before a site move or an SEO check, this parser goes through a site's pages and saves a row for each: address, response code, title and meta description with their length, H1, number of H2, canonical link, noindex tag, word count, pictures without alt text and number of internal links. It takes the addresses from the site's sitemap file, from category pages or from your own list. Use it on your own site or on an open competitor's site. Send the site address, a few pages saved from your browser and the fields you need. You get Python code, a settings file and a README and run it on your computer. It collects facts, does not fix the site and promises no search positions. It reads only open pages at a polite pace and never logs in or gets around captchas or protection. You decide whether a site's terms allow it; a later layout change 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.
- Tags and their lengthTitle and description with character counts
- Response codesSpot broken and redirected pages
- Missing alt textCounts pictures that have no alt text
- From sitemap or your listAddresses from the sitemap file, categories or a file you give
- Polite paceA pause between pages, set in the settings
How it works
- 1SiteYou give the site, the source of addresses and saved pages
- 2ParserWe write the code and the guide to running it
- 3RunYou run it and check a few rows in your browser
- 4ChangesYou ask for changes within your package and send any error message
What we need from you
The site address and where the parser should take addresses from: the sitemap file, category pages or your own list. Roughly how many pages there are. The fields you need, e.g. address, response code, title, description, H1, canonical, noindex, word count, pictures without alt. Two or three pages of different kinds saved from your browser (File > Save page as). CSV or Excel.
We will ask you:
- Which site?
- Where to take addresses from
- The fields you need
- How many pages roughly?
Compare packages
| Packages | BasicPages from your list$21 | StandardThe whole site from its lists$41 | PremiumUp to 3 sites$74 |
|---|---|---|---|
| Deadline | 1 day | 2 days | 3 days |
| Revisions | 1 | 2 | 3 |
| Sites | 1 | 1 | up to 3 |
| Kinds of page | 1 | 2 (page list and page) | 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 |
| 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
Is this a full SEO audit?
No. It collects the facts of each page into one table; the conclusions and fixes are yours or your own developer's.
Can it check my positions in Google?
No. It does not read Google, Amazon, LinkedIn or social networks: their terms forbid it. Positions are in your search console account, which the parser never logs in to.
How large a site can it go through?
Thousands of pages are fine, but at a polite pace they take hours. Premium resumes where it stopped, so a long run can be split.
Can it read a test copy of my site behind a password?
No. It reads only open pages and never logs in. An open test copy without a password works, and passwords never go into the code.
Did not find your answer?