SEO Ultimate avatar

SEO Ultimate

Pricing

from $0.35 / keywords tracking

Go to Apify Store
SEO Ultimate

SEO Ultimate

All in one SEO tool & content writer/rewriter. Track keyword rankings, analyze backlinks, run competitor research, generate AI-powered content writing and content rewriting, audit PageSpeed - all with pay-per-event pricing. The only SEO tool you need.

Pricing

from $0.35 / keywords tracking

Rating

0.0

(0)

Developer

Monster Leads

Monster Leads

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

4 days ago

Last modified

Share

SEO Ultimate — All in One SEO Tracker & Content Writing Tool

The complete SEO tracker for agencies and developers. Track keyword rankings, analyze backlinks, run competitor research, generate AI-powered content, and audit page performance, all from a single Apify actor with Pay-Per-Event (PPE) pricing. Pay only for the SEO tools when you use them.

Whether you need a rank tracker, keywords tracking, content writing, or content rewriting, SEO Ultimate covers the full SEO workflow in one API call.

What You Can Do

FeaturePPE EventPrice
Site SEO Overview (SEO Tracker)site-seo$0.25
Related Keywordsrelated-keywords$0.15
Keyword Tracking & Rank Trackerkeyword-tracking$0.35
Backlinks (DataForSEO WHOIS)backlinks$0.15
Ranked Keywordsranked-keywords$0.25
Competitor Analysiscompetitors$0.15
Keyword Ideas (Google Ads)keyword-ideas$0.15
AI Longtail Keyword Suggestionslongtail-keywords$0.15
Performance Check (PageSpeed)performance$0.07
AI Alt Text Generatoralt-text$0.09/image
Article Ideas (up to 30 titles)article-ideas$0.11
Content Write — Full Articlearticle-generate$0.25/article
Content Rewrite — Article Rewritearticle-rewrite$0.25/rewrite

Why SEO Ultimate?

  • Rank tracker — monitor Google positions across organic, paid, featured snippet, and AI overview SERPs
  • Keyword tracking — track every keyword a domain ranks for with position history, difficulty, search volume, and CPC
  • SEO tools in one place: backlinks, competitor gaps, keyword ideas, and PageSpeed audits
  • Content write — generate SEO-optimized articles from your target keywords with AI
  • Content rewrite — refresh outdated content while preserving intent and boosting keyword targeting
  • Pay-Per-Event — no subscription lock-in, pay per endpoint used

Input

Required

FieldTypeDescription
domainstringTarget domain to analyze. https://, www., and trailing paths are stripped automatically (e.g. example.com, https://www.example.com, and www.example.com/page all resolve to example.com)

Site SEO Overview (SEO Tracker)

Get an instant SEO health snapshot. Returns the domain's organic keyword distribution, paid keyword distribution, and backlink summary in one call — the fastest way to assess a domain's overall search presence.

FieldTypeDefaultDescription
runSiteSeobooleanfalseFetch organic keywords, paid keywords, and backlink stats for the domain

What it returns:

  • organic_keywords — breakdown of how many keywords the domain ranks for in each position band (pos_1 through pos_91_100), plus etv (estimated traffic value), total keyword count, and estimated_paid_traffic_cost
  • paid_keywords — same position-band breakdown for paid (Google Ads) keywords
  • backlinkstotal_domains (all referring domains), unique_domains (unique root domains), referring_pages, dofollow links, and total backlinks

Returns up to 10 related keyword suggestions for a single seed keyword — the same keywords Google shows at the bottom of a search results page under "Searches related to…". Each suggestion comes with search volume, competition, CPC, and bid range data, making it useful for expanding a topic cluster or discovering what searchers look for next.

FieldTypeDefaultDescription
runRelatedKeywordsbooleanfalseFetch related keyword suggestions for a seed keyword
relatedKeywordstring(none)Single seed keyword to expand. Example: phone

What it returns (relatedKeywords array):

Each item contains: keyword, search_volume, competition, competition_level, cpc, min_cpc (low top-of-page bid), max_cpc (high top-of-page bid).


Keyword Tracking & Rank Tracker

The core rank tracking and keywords tracking tool. Returns the full list of keywords the domain ranks for, with detailed SERP data per keyword — position, title, URL, rank changes, keyword difficulty, search volume, CPC, and more. Each page returns 100 keywords.

FieldTypeDefaultDescription
runKeywordTrackingbooleanfalseFetch ranked keywords with full SERP details
keywordTrackingPageinteger1Page of results. Each page = 100 keywords. Page 1 = 1–100, page 2 = 101–200, etc.

What it returns (keywords array):

Each item contains:

  • keyword — the keyword string
  • keyword_infosearch_volume, competition, competition_level, cpc
  • keyword_propertieskeyword_difficulty (0–100)
  • ranked_serp_elementtype, rank_absolute, title, url, breadcrumb, website_name, is_image, is_video, is_featured_snippet, and rank_changes (previous_rank_absolute, is_new, is_up, is_down)
  • se_results_count — total number of Google results for this keyword

FieldTypeDefaultDescription
runBacklinksbooleantrueFetch backlink count, referring domains, and dofollow links
backlinksPageinteger1Page of results. Each page = 100 domains. Page 1 = 1–100, page 2 = 101–200, etc.
backlinksOrderselectsearchVolumeDescSort order. searchVolumeDesc = highest organic traffic domains first; searchVolumeAsc = lowest first

Ranked Keywords

FieldTypeDefaultDescription
runRankedKeywordsbooleantrueFetch keywords the domain currently (or previously) ranks for on Google
pageinteger1Page of results. Each page = 100 keywords. Page 1 = 1–100, page 2 = 101–200, etc.
typeselectorganicSERP type: organic, paid, featured_snippet, ai_overview
liveorlostselectlivelive = currently ranking; lost = previously ranked; all = both
minvolumeinteger10Only return keywords with monthly search volume greater than this
minpositioninteger100Only return keywords ranking at position 1 up to this number
orderbyselectdescSort by search volume: desc = highest first; asc = lowest first

Competitor Analysis

FieldTypeDefaultDescription
runCompetitorsbooleantrueFetch domains competing for the same keywords
competitorsPageinteger1Page of results. Each page = 20 competitors. Page 1 = 1–20, page 2 = 21–40, etc.
competitorTypeselectorganicSERP type to base detection on: organic, paid, featured_snippet
competitorsOrderbyselectkeywordCountDescSort order: keywordCountDesc = most shared keywords first (recommended); keywordCountAsc = fewest first; trafficDesc = highest traffic first; trafficAsc = lowest traffic first
excludeDomainsstring list(none)Specific domains to remove from results (max 20). E.g. known partners or irrelevant sites
intersectingDomainsstring list(none)Up to 3 known competitor domains used to improve result relevance

Keyword Ideas

FieldTypeDefaultDescription
runKeywordIdeasbooleantrueGenerate keyword ideas seeded from the domain's ranked keywords. Requires runRankedKeywords

AI Longtail Keywords

FieldTypeDefaultDescription
runAiKeywordsbooleanfalseGenerate long-tail keyword suggestions using AI (Gemini via OpenRouter)
longtailSeedsstring(none)Pipe-separated seed keywords (max 10). E.g. white hat|leather jackets

Performance Check (PageSpeed)

FieldTypeDefaultDescription
runPageSpeedbooleantrueRun Google PageSpeed Insights
pageSpeedUrlstringhttps://<domain>Full URL to test. Defaults to the domain with https://
pageSpeedStrategyselectdesktopDevice to test: desktop = desktop emulation; mobile = mobile emulation
psTypestring list["performance"]Audit categories: performance, seo, accessibility, best_practices

AI Alt Text

FieldTypeDefaultDescription
runAltTextbooleanfalseGenerate alt text for images using AI vision
altTextTypeselectseoseo = keyword-rich, max 155 chars; accessibility = descriptive ("Image of ..."), max 160 chars
keywordImportancenumber1.0Only active when mainKeyword is set. Probability (0.0–1.0) that the keyword appears in output. 1.0 = always; 0.7 = 70% chance; 0.0 = never. Supports multi-word keywords
autoKeywordbooleanfalseIf true, AI may use a partial match or natural variation of the keyword instead of the exact phrase. Works with keywordImportance
altTextProductsarray[]Array of image objects. Required: imageUrl. Optional: mainKeyword (keyword to include, controlled by keywordImportance + autoKeyword)

Content Write — Article Generation

Generate SEO-optimized articles from scratch. Use your target keywords to produce fully structured content ready for publishing.

FieldTypeDefaultDescription
runArticleIdeasbooleanfalseGenerate up to 30 article title ideas using AI
articleKeywordsstring(none)Pipe-separated keywords to target. Example: react tutorials|javascript for beginners
articleTitlesstring(none)Pipe-separated existing titles used as inspiration. AI generates new distinct titles. Example: Start with React JS|JS intro for dummies
runArticlesbooleanfalseGenerate a full article. Independent of runArticleIdeas — pass articleTitle and/or mainKeyword directly
articleTitlestring(none)The article title to write. If omitted, the AI generates a title from mainKeyword
articleTitleAdjustbooleanfalseIf true and articleTitle is set, AI may adjust it slightly for SEO. If false, title is used exactly as given
mainKeywordstring(none)Optional. Primary SEO keyword the article is built around. If omitted, AI writes freely based on the title
mainKeywordImportancenumber1.0Keyword placement: 1.0 = first paragraph; 0.7 = first two paragraphs; 0.4 = anywhere; below 0.4 = only if natural
mainKeywordAdjustmentbooleanfalseIf true, AI may use keyword variations and partial matches instead of exact phrase
secondaryKeywordstring(none)Lower-importance keyword woven in 1–2 times naturally
returnTypeselectJSONOutput format: JSON = structured title/subtitle/content object; HTML = raw HTML; TEXT = plain text
addQAbooleanfalseAppend a FAQ section to each article (JSON: question/answer keys; HTML: <details>/<summary>; TEXT: Q:/A: lines)
useTagsbooleantrueUse bold, italic, and blockquote formatting in the article
useTablebooleanfalseInclude a relevant comparison or data table in the article
articleToneselectinformativeWriting tone for all generated articles. Options: informative, professional, casual, enthusiastic, empathetic, storytelling, humorous, authoritative, conversational
linkTextstring(none)Anchor text for a link to inject into the article (e.g. organic cotton t-shirts). Requires linkDestination
linkDestinationstring(none)Link URL — internal path (e.g. /products/organic-tshirt) or full external URL (e.g. https://example.com/page). Requires linkText
articleStrategyselectmixUsed when articleKeywords and articleTitles are both empty. Seeds from ranked keywords, suggested keyword ideas, or mix of both
articleProductContextobject(none)Product details to reference in articles (title, description, price, url, etc.)
shopDomainstring(none)Shopify store domain used in article content
shopNamestring(none)Store display name used in article content

How article ideas work (runArticleIdeas)

Generates up to 30 { title, keyword, strategy } idea objects — headline suggestions and the keyword each targets. These are informational output only; they do not trigger article writing on their own.

Seeds come from one of three sources (in priority order):

  1. ManualarticleKeywords and/or articleTitles are provided → ideas based directly on those inputs
  2. Auto — both are empty → seeds pulled from ranked keywords / keyword ideas using articleStrategy

How content writing works (runArticles)

Generates a single article. Both articleTitle and mainKeyword are optional — use any combination:

ScenarioResult
articleTitle + mainKeywordArticle written with your exact title, built around your keyword
articleTitle onlyArticle written with your title; AI writes freely without a keyword constraint
mainKeyword onlyAI generates a fitting title from the keyword, article built around it
NeitherAI generates both title and content freely (not recommended)

Title control — articleTitleAdjust:

  • false (default) → articleTitle is used exactly as given
  • true → AI may tweak the title slightly for better SEO while keeping the intent

Keyword placement — mainKeywordImportance:

  • 1.0 → must appear in the very first paragraph
  • 0.7 → within the first two paragraphs
  • 0.4 → anywhere in the body
  • below 0.4 → only if it fits naturally

Inline link injection — linkText + linkDestination:

When both fields are provided, the AI embeds a hyperlink naturally within the article body using your anchor text. This is a powerful SEO technique:

  • Internal links (e.g. /products/organic-tshirt, /collections/summer) — pass link juice between your own pages and improve crawlability. Point readers (and search engines) to relevant product or category pages.
  • External links (e.g. https://example.com/study) — cite sources or partners to build topical authority and trust signals.

Both fields are required together — supplying only one has no effect.


Content Rewrite — Article Rewrite

Refresh existing content with a fully rewritten version. Improve SEO targeting, update tone, and eliminate duplicate phrases — without losing the original topic or intent.

FieldTypeDefaultDescription
runArticleRewritebooleanfalseRewrite an existing article. Requires articleContent
articleContentstring(required)The original article body — HTML or plain text. Maximum 1200 characters; anything beyond is automatically stripped
articleTitlestring(none)Optional title for the rewritten article. If omitted, the AI generates a title from the content and mainKeyword
articleTitleAdjustbooleanfalseIf true and articleTitle is set, AI may adjust it slightly for SEO
mainKeywordstring(none)Optional. SEO keyword to target in the rewrite
mainKeywordImportancenumber1.0Keyword placement: same scale as article generation
mainKeywordAdjustmentbooleanfalseAllow keyword variations and partial matches
secondaryKeywordstring(none)Lower-importance keyword woven in 1–2 times
returnTypeselectJSONOutput format: JSON, HTML, or TEXT
addQAbooleanfalseAppend a FAQ section
useTagsbooleantrueUse bold, italic, and blockquote formatting
useTablebooleanfalseInclude a comparison or data table
articleToneselectinformativeWriting tone (same options as article generation)
linkTextstring(none)Anchor text for an inline link to inject
linkDestinationstring(none)Link URL — internal path or full external URL

How content rewrite works

runArticleRewrite takes your existing content and produces a fully rewritten version — fresh phrasing, new structure, no copied sentences — while preserving the original topic and intent. All SEO controls from article generation apply identically.

Title behaviour:

  • articleTitle provided → used as-is (or adjusted for SEO if articleTitleAdjust is true)
  • articleTitle omitted → AI generates a title from the rewritten content and mainKeyword

articleContent notes:

  • Accepts both HTML (e.g. <p>…</p>) and plain text
  • Hard limit of 1200 characters — content beyond that is silently stripped before sending to the AI
  • The rewritten output will be 600–1300 visible characters regardless of input length

Minimal example

{
"domain": "example.com"
}

Full example

{
"domain": "example.com",
"runBacklinks": true,
"backlinksPage": 1,
"backlinksOrder": "searchVolumeDesc",
"runRankedKeywords": true,
"page": 1,
"type": "organic",
"liveorlost": "live",
"minvolume": 10,
"minposition": 100,
"orderby": "desc",
"runCompetitors": true,
"competitorsPage": 1,
"competitorType": "organic",
"competitorsOrderby": "keywordCountDesc",
"excludeDomains": ["amazon.com"],
"intersectingDomains": ["competitor.com"],
"runKeywordIdeas": true,
"runAiKeywords": false,
"runPageSpeed": true,
"pageSpeedStrategy": "desktop",
"psType": ["performance", "seo"],
"runArticleIdeas": false,
"runArticles": false,
"articleStrategy": "mix"
}

Output

{
"domain": "example.com",
"timestamp": "2025-01-01T00:00:00.000Z",
"siteSeo": {
"organic_keywords": {
"pos_1": 35658587,
"pos_2_3": 32908196,
"pos_4_10": 47313535,
"pos_11_20": 41082282,
"pos_21_30": 31014870,
"pos_31_40": 26330832,
"pos_41_50": 23440124,
"pos_51_60": 20841011,
"pos_61_70": 19548812,
"pos_71_80": 18046963,
"pos_81_90": 16082534,
"pos_91_100": 9175823,
"etv": 23900310990.23,
"count": 321444096,
"estimated_paid_traffic_cost": 79567794585.68
},
"paid_keywords": {
"pos_1": 8,
"pos_2_3": 1,
"pos_4_10": 0,
"pos_11_20": 0,
"pos_21_30": 0,
"pos_31_40": 0,
"pos_41_50": 0,
"pos_51_60": 0,
"pos_61_70": 0,
"pos_71_80": 0,
"pos_81_90": 0,
"pos_91_100": 0,
"etv": 169.81,
"count": 9,
"estimated_paid_traffic_cost": 1027.99
},
"backlinks": {
"total_domains": 10194664,
"unique_domains": 5757246,
"referring_pages": 5313948233,
"dofollow": 4849266257,
"total": 6520586114
}
},
"relatedKeywords": [
{ "keyword": "smartphone", "search_volume": 246000, "competition": 0.95, "competition_level": "HIGH", "cpc": 4.20, "min_cpc": 2.10, "max_cpc": 8.50 }
],
"keywordTracking": [
{
"keyword": "organic cotton shirt",
"keyword_info": { "search_volume": 2400, "competition": 0.45, "competition_level": "MEDIUM", "cpc": 0.85 },
"keyword_properties": { "keyword_difficulty": 32 },
"ranked_serp_element": {
"type": "organic",
"rank_absolute": 3,
"title": "Organic Cotton Shirts — EcoWear",
"url": "https://example.com/products/organic-cotton-shirt",
"breadcrumb": "https://example.com › products",
"website_name": "Example",
"is_image": false,
"is_video": false,
"is_featured_snippet": false,
"rank_changes": { "previous_rank_absolute": 5, "is_new": false, "is_up": true, "is_down": false }
},
"se_results_count": 48000000
}
],
"backlinks": {
"referringDomains": 1200,
"referringMainDomains": 850,
"dofollow": 980,
"total": 4500
},
"rankedKeywords": [
{ "keyword": "organic cotton shirt", "position": 3, "searchVolume": 2400 }
],
"competitors": [
{ "domain": "competitor.com", "avgPosition": 5, "intersections": 120 }
],
"keywordIdeas": [
{ "keyword": "best organic shirts", "searchVolume": 880, "cpc": 0.45 }
],
"aiKeywords": ["sustainable cotton clothing men", "eco friendly t-shirts"],
"pageSpeed": {
"desktop": { "performanceScore": 92, "seoScore": 98, "lcp": 1200, "tbt": 50, "cls": 0.01 },
"mobile": { "performanceScore": 65, "seoScore": 95, "lcp": 3800, "tbt": 280, "cls": 0.05 }
},
"altText": [],
"articleIdeas": [],
"articles": [],
"articleRewrite": null
}

API Keys

Keys are pre-configured. You can override them via input fields dataForSeoLogin, dataForSeoPassword, openRouterApiKey, pageSpeedApiKey, or via environment variables.

PPE Configuration

Each event name must be registered in the Apify Console under your actor's Monetization settings. Set the price per event there — the ppe* input fields shown in the UI are for display/documentation only.