
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.
Radar check
What we found when we opened it. Every bar is one fact, with its date.
Last code pushed 30 Jun 2026, 3 months before this check.
No releases published on GitHub; the code date above is the one to trust.
Public since May 2017, a little over 9 years.
1,486 stars and 263 forks.
0 commits and 1 new issues in the last 90 days.
15 contributors. No pull requests merged in 90 days; changes go in directly.
No security policy file says how to report a problem. No published security advisories.
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.
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.
- 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.
- 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.
source venv/bin/activate pip install advertools
