How to Detect Yoast SEO on Any Website (API + Curl)

June 19, 2026 · 9 min read

Short answer: Yoast SEO leaves a hard-to-miss HTML comment in the page source — <!-- This site is optimized with the Yoast SEO plugin -->. You can spot it with curl -s https://example.com | grep -i yoast, or get a structured JSON answer from the free /demo endpoint with no API key. The rest of this guide explains the fingerprints and how to scale detection across many sites.

Yoast SEO is the most widely installed search-optimization plugin on the web, and it powers SEO for a large share of all WordPress sites. Knowing which sites run it is useful in several ways: SEO agencies use it to qualify leads (a site already invested in SEO tooling is a warmer prospect), competitive researchers use it to understand a competitor’s content stack, and WordPress developers use it to audit which plugins are in play before quoting a migration or maintenance job.

The good news is that Yoast is unusually easy to detect. Unlike server-side frameworks that hide their tracks, Yoast deliberately stamps its presence into the rendered HTML of every page it optimizes. This guide covers exactly what those fingerprints are, how to check for them by hand, and how to automate detection at scale with the DetectZeStack API.

What Is Yoast SEO and Why Detect It

Yoast SEO is a search engine optimization plugin for WordPress (and a handful of other platforms). It manages a site’s meta titles and descriptions, generates XML sitemaps, controls canonical URLs, and—most relevant for detection—injects structured data (JSON-LD schema) into the page so search engines can better understand the content.

Reasons to detect Yoast on a given site:

How Yoast SEO Can Be Detected on a Page

Yoast announces itself in the HTML it generates. There are two reliable fingerprints, and both are visible in plain page source—no JavaScript execution or login required.

HTML Fingerprints and Meta Tags

The single most reliable signal is the HTML comment Yoast wraps around its output. On any page optimized by the plugin, you will find a block that looks like this near the closing </head> or in the body:

<!-- This site is optimized with the Yoast SEO plugin v21.5 - https://yoast.com/wordpress/plugins/seo/ -->
<!-- / Yoast SEO plugin. -->

That comment is unambiguous. The plugin even embeds its own version number (here v21.5), which DetectZeStack captures and returns in the version field when present. Sites running Yoast SEO Premium emit a slightly different marker that names the premium edition, but the same “Yoast SEO” signal still applies.

The second signal is the structured-data block Yoast generates. It outputs a JSON-LD schema graph inside a script tag with a distinctive class:

<script type="application/ld+json" class="yoast-schema-graph">
{ "@context": "https://schema.org", "@graph": [ ... ] }
</script>

The class="yoast-schema-graph" attribute is another dead giveaway. Either fingerprint alone is enough to confirm Yoast; most pages emit both.

You can check for these by hand with curl and grep:

$ curl -s https://example.com | grep -i "yoast"
<!-- This site is optimized with the Yoast SEO plugin v21.5 - https://yoast.com/wordpress/plugins/seo/ -->
<script type="application/ld+json" class="yoast-schema-graph">

If you get matches like the above, the site is running Yoast. If grep returns nothing, the site either does not use Yoast or has stripped the comment (uncommon, but possible with aggressive HTML minification).

Why Yoast Implies WordPress

Yoast SEO is, first and foremost, a WordPress plugin. So detecting Yoast tells you two things at once: the site uses Yoast and the site almost certainly runs WordPress. DetectZeStack encodes this relationship explicitly—a Yoast SEO detection implies WordPress—so a Yoast hit will typically appear in the same response alongside a separate WordPress entry under the CMS category. That implication chain means a single scan that finds Yoast is also confirming the underlying CMS for free. If you want to go the other direction and start from the CMS, see how to detect what CMS a website uses.

Note: Yoast is classified under two categories — SEO and WordPress plugins — so it shows up in the categories map under both. That dual classification makes it easy to filter for “all SEO tooling” or “all WordPress plugins” depending on what you are building.

Detect Yoast SEO with the DetectZeStack API

Manual curl | grep works for a single site, but it doesn’t scale, it doesn’t parse the version cleanly, and it won’t tell you what else the site runs. The DetectZeStack API runs the full fingerprint database against the page and returns structured JSON—Yoast included—in one call.

Free Demo Endpoint (No Key Required)

The fastest way to try it is the public /demo endpoint, which runs the same detector pipeline with no authentication. It is IP rate-limited but perfect for a quick check or for confirming the response shape before you integrate:

curl -s "https://detectzestack.com/demo?url=https://example.com" | python3 -m json.tool

The response includes a technologies array. When Yoast is present, you will find an entry like this:

{
  "url": "https://example.com",
  "domain": "example.com",
  "technologies": [
    {
      "name": "Yoast SEO",
      "categories": ["SEO", "WordPress plugins"],
      "confidence": 100,
      "description": "Yoast SEO is a search engine optimisation plugin for WordPress and other platforms.",
      "website": "https://yoast.com/wordpress/plugins/seo/",
      "icon": "Yoast SEO.png",
      "source": "http",
      "version": "21.5",
      "cpe": ""
    },
    {
      "name": "WordPress",
      "categories": ["CMS", "Blogs"],
      "confidence": 100,
      "description": "WordPress is a content management system.",
      "website": "https://wordpress.org",
      "icon": "WordPress.svg",
      "source": "http",
      "version": "",
      "cpe": ""
    }
  ],
  "categories": { "SEO": ["Yoast SEO"], "WordPress plugins": ["Yoast SEO"], "CMS": ["WordPress"] },
  "meta": { "status_code": 200, "tech_count": 14, "scan_depth": "full" },
  "cached": false,
  "response_ms": 1842
}

Notice that WordPress appears alongside Yoast because of the implication chain described above, and that the version field carries the plugin version parsed straight from the HTML comment. The confidence of 100 reflects a direct HTML-source match—the strongest signal class.

Authenticated Analyze Endpoint

For production use, sign up on RapidAPI and call /analyze with your key. It returns the same response shape as /demo, without the demo rate limit, and counts against your monthly quota:

curl -s "https://detectzestack.p.rapidapi.com/analyze?url=https://example.com" \
  -H "X-RapidAPI-Key: YOUR_KEY" \
  -H "X-RapidAPI-Host: detectzestack.p.rapidapi.com" \
  | jq '.technologies[] | select(.name == "Yoast SEO")'

That jq filter narrows the output to just the Yoast entry, which is handy when you only care about a single technology:

{
  "name": "Yoast SEO",
  "categories": ["SEO", "WordPress plugins"],
  "confidence": 100,
  "version": "21.5"
}

Reading the SEO Category in the Response

If you would rather slice by category than by name, the response’s top-level categories map groups technologies by their category. To pull everything classified as SEO tooling on a site:

curl -s "https://detectzestack.p.rapidapi.com/analyze?url=https://example.com" \
  -H "X-RapidAPI-Key: YOUR_KEY" \
  -H "X-RapidAPI-Host: detectzestack.p.rapidapi.com" \
  | jq '.categories.SEO'
[
  "Yoast SEO"
]

This approach generalizes nicely. The same response also surfaces analytics tools like Google Analytics and marketing platforms like HubSpot, so a single call gives you a full picture of a site’s SEO, analytics, and marketing stack at once.

Batch-Detect Yoast SEO Across Many Sites

Checking one site is useful; checking a list is where this gets powerful. The POST /analyze/batch endpoint accepts up to 10 URLs per request and scans them concurrently, returning a result for every domain in one response.

curl -X POST "https://detectzestack.p.rapidapi.com/analyze/batch" \
  -H "X-RapidAPI-Key: YOUR_KEY" \
  -H "X-RapidAPI-Host: detectzestack.p.rapidapi.com" \
  -H "Content-Type: application/json" \
  -d '{
    "urls": [
      "example.com",
      "wordpress.org",
      "techcrunch.com",
      "yoast.com",
      "example.org"
    ]
  }'

To turn that into a clean list of which sites use Yoast, loop over your domains in batches of 10 and filter each result for the Yoast entry. Here is a compact Python example:

import requests

API_URL = "https://detectzestack.p.rapidapi.com/analyze/batch"
HEADERS = {
    "X-RapidAPI-Key": "YOUR_KEY",
    "X-RapidAPI-Host": "detectzestack.p.rapidapi.com",
    "Content-Type": "application/json",
}

def chunk(items, size=10):
    for i in range(0, len(items), size):
        yield items[i:i + size]

domains = ["example.com", "wordpress.org", "techcrunch.com", "yoast.com"]
yoast_sites = []

for batch in chunk(domains):
    resp = requests.post(API_URL, json={"urls": batch}, headers=HEADERS)
    for item in resp.json().get("results", []):
        result = item.get("result")  # None if that URL errored
        if not result:
            continue
        techs = [t["name"] for t in result.get("technologies", [])]
        if "Yoast SEO" in techs:
            yoast_sites.append(result["domain"])

print("Sites using Yoast SEO:", yoast_sites)

Because Yoast implies WordPress, the same scan doubles as a WordPress census of your list. If your goal is specifically to build a WordPress prospect list, the dedicated walkthrough in Find Companies Using WordPress shows how to scale this pattern to thousands of domains and enrich the results.

Tip: Send batch requests with a short delay between them to stay within your plan’s rate limit. Each URL in a batch counts as one request against your monthly quota, so a 10-URL batch consumes 10 requests.

Common Use Cases for Yoast Detection

Putting the pieces together, here are the workflows teams most often build on top of Yoast detection:

Use CaseWhat You Filter For
SEO agency prospecting name == "Yoast SEO"
WordPress plugin audit categories contains "WordPress plugins"
All SEO tooling on a site categories.SEO
WordPress census of a list categories.CMS contains "WordPress"
Yoast version inventory Yoast SEO entry's version field

A few practical notes from running these at scale:

Related Reading

Try DetectZeStack Free

100 requests per month, no credit card required. SEO, CMS, plugin, analytics, and infrastructure detection on every plan.

Get Your Free API Key

Get API updates and tech detection tips

Join the mailing list. No spam, unsubscribe anytime.