Getting found · Edition No. 6 · 31 Aug 2026

eliasdabbas/advertools

A Python toolkit that turns site crawls, site maps and word lists into plain tables.

← Getting foundRead the whole edition →
06

eliasdabbas/advertools

💎 hidden gem
advertools: tables out of sites and words. Crawls, reads site maps and builds keyword lists in Python.

1.4k stars · MIT · v0.18.0 on PyPI (2026-06-17) · Track this in Rising ↗

Python toolkit built by a working SEO practitioner — crawling, sitemaps, SERP analysis, keyword generation.

Verified26 Oct 2026

Radar check

What we found when we opened it. Every bar is one fact, with its date.

Alive50

Last code pushed 30 Jun 2026, 3 months before this check.

Releases—

No releases published on GitHub; the code date above is the one to trust.

Maturity100

Public since May 2017, a little over 9 years.

Adoption63

1,486 stars and 263 forks.

Activity0

0 commits and 1 new issues in the last 90 days.

Community60

15 contributors. No pull requests merged in 90 days; changes go in directly.

Security40

No security policy file says how to report a problem. No published security advisories.

Licence MIT: permissive: use it for anything, keep the noticeSetup effort 2 of 5Payoff 4 of 5
How the bars are scored
  • Alive. Days since the last code push: a week or less 100, a month 90, three months 70, six months 50, a year 30, eighteen months 15, older 0.
  • Releases. Age of the latest GitHub release, on a similar scale; no bar when the project publishes no releases.
  • Maturity. Age of the project: eight years 100, five 90, three 70, two 55, one 40, six months 25, younger 10.
  • Adoption. Stars on a log scale: 100,000 stars is 100, 10,000 is 80, 1,000 is 60, 100 is 40.
  • Activity. Commits in the last 90 days: 300 or more 100, 100 85, 30 65, 10 45, any 25.
  • Community. People who have contributed: 100 or more 100, 30 80, 10 60, 5 40, 2 25, one 10.
  • Security. A published security policy 80, none 40; published advisories are listed, not scored.

Checked by Repo Radar on 26 Oct 2026 from the repository on GitHub. Covered in Edition 6.

▶Repo detailsthe review · specs · pros & cons · install

What it does

Its crawler walks a site and returns every page with its title, description, headings and links, so missing titles and duplicates show up as rows in a table. It reads a site map and returns the list of pages a site publishes, with dates, which shows what a competitor writes about and how often. It builds keyword combinations from a short list of words, in any language. It also parses the file that tells crawlers where they may go, and analyses text for word frequency. The latest release is 0.18.0, published on 17 June 2026, and the code was last changed at the end of that month. It is MIT licensed and pure Python. What it does not do is tell anyone how many people search for a word; there are no search-volume figures of its own anywhere in it.

Why it matters

Who it suits. Anyone holding a pile of competitor text and no way to count it. It suits Python projects especially, because it needs no new language, no server and no dashboard. Entries 4 and 5 in this edition both end in a pile of text, which is why this one is raised a second time: it was first published in Edition 1 on 21 August 2026 and is the only tool in the whole ledger that reads such a pile. Skip it if a hosted marketing dashboard is already paid for and used.

Verdict. Worth an afternoon, and the only entry here raised twice. Three things to know. It gives no search-volume data, so pair it with a free search console or a paid source for demand figures. Its output is tables, which need somewhere to be looked at, and that is a large part of why entry 12 is on this page. And its crawler is eager, so set a page limit and a delay before pointing it at anybody's site. The release pace is slow and steady rather than fast: one release in June 2026, after many years of the same.

Stars1.4k
LicenceMIT
Latestv0.18.0 on PyPI (2026-06-17)checked 7 Sep 2026
Written inPython
RunsLocally, on your own machine
Summary (Key Points)from the README
Key features
  • Independent functions: Each function does one task, such as extracting hashtags, crawling a site, testing robots.txt rules, or downloading XML sitemaps, and they can be combined in any order.
  • DataFrame output: Most functions return a pandas DataFrame or a file that loads into one, so the wider Python data stack can be used on the results.
  • Customizable SEO crawler: Built with Scrapy, it extracts standard SEO elements by default and accepts extra CSS and XPath selectors.
  • Crawl control: Scrapy settings give access to custom headers, user agent, page, time and size limits, crawl logs, and resumable interval jobs for large or continuous crawls.
  • Sitemap and robots.txt tools: One function downloads XML sitemaps from a robots.txt file, a sitemap, or a sitemap index, and another returns robots.txt files as DataFrames so changes can be tracked across crawls.
  • SERP import for Google and YouTube: A single function call can request several search parameters and returns all results in a DataFrame.
  • Keyword and ad generation: kw_generate produces keywords, ad_create fills ad templates for many products, and ad_from_string splits long text into headline and description slots.
  • Text analysis toolkit: It includes word frequency weighted by relative importance, URL-to-DataFrame conversion, emoji extraction and search across 3k+ emoji, and extract_ functions for hashtags, mentions, currency, numbers, questions and custom regex.
  • Stopwords in forty languages: A built-in list supports text analysis across many languages.
  • Social APIs with automatic handling: The Twitter and YouTube modules manage pagination and request limits, parse responses into DataFrames, and can request many countries, languages or channels in one call.
Important
  • Scope of the README: It is a feature overview. It gives no version-specific details beyond the release note and does not document parameters, outputs or behavior in depth.
  • API access is required for search and social data: The Google, Twitter and YouTube features connect to external APIs, but the README does not explain credentials, quotas or costs. Check those with each provider before relying on these functions.
  • No-code apps are still in progress: The README says most functions are being converted to no-code interactive apps, so not every function has one yet.
  • Crawling responsibility: The crawler can follow links across a whole site and run large or continuous jobs, so use its limits and settings deliberately and respect the sites you crawl.
  • Prior Python knowledge helps: The README says basic Python is enough, but using the DataFrame outputs fully assumes familiarity with pandas.

Written by an AI model from the project’s README; not part of the review, and it can be wrong.

Setup effort
2 / 5
Payoff
4 / 5
Good
  • MIT, pure Python, and it drops into an existing project with no new language and no new service.
  • Written by a working search-marketing specialist, so the functions are named after real tasks.
  • Years of steady, unhurried releases rather than a burst of activity.
Watch for
  • No search-volume figures of its own, so demand has to come from somewhere else.
  • Output is tables, which need a separate place to be read.
  • The crawler is eager; without a page limit and a delay it will annoy a site owner.
Install
source venv/bin/activate
pip install advertools
Screenshots
eliasdabbas/advertools: GitHub preview card

Also in Edition No. 1.

On Stack Radar: Marketing & Growth › SEO & Organic Search › Technical SEO.

Get the next edition in your inbox

A dozen repositories, opened and checked. The licence read, the last release dated, and the ones that did not make it named with the reason. It is the half most lists leave out.

No tracking pixels. One click to leave. The archive stays free either way.

We use your address to send the edition and nothing else. Confirm by email, leave in one click. How we handle it.