Competitor Analysis AI: SEO & Content Report avatar

Competitor Analysis AI: SEO & Content Report

Pricing

from $0.20 / intelligence report

Go to Apify Store
Competitor Analysis AI: SEO & Content Report

Competitor Analysis AI: SEO & Content Report

Competitor analysis from the signals you already have. Combines SERP rankings, content and social notes into a manager-ready report: threat level, strengths, weaknesses, content gaps, social momentum and up to six prioritized moves. Bring your own data; no scraping.

Pricing

from $0.20 / intelligence report

Rating

0.0

(0)

Developer

Turgay NANTA

Turgay NANTA

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a month ago

Last modified

Share

Competitor Analysis AI: Turn SERP, Content and Social Signals into a Strategy Report

You have notes on a competitor scattered everywhere: keyword rankings from an SEO tool, observations about their pricing page, follower counts, a scraper export of their blog. Turning that pile into "what do we do next?" is the slow part.

Give the Actor what you know about one competitor. It synthesizes the signals into a manager-ready competitor analysis: a threat level with a reason, the competitor's strengths and weaknesses, content gaps, social momentum, a prioritized plan of up to six strategic moves with impact, effort and expected result, quick wins, and the single first move to make.

  • Bring your own signals: plain text notes or {type, title, content, metric} objects from any SEO, SERP or social tool.
  • Three signal types in one report: SERP (rankings, keywords), content (pages, pricing, features) and social (followers, engagement).
  • Decisions, not raw data: every report ends with a first move and a prioritized action table.
  • Grounded: the model is told to use only your signals and to write "insufficient data" where a signal is missing; estimated gains are marked "est.".
  • Five output languages: English, Turkish, German, Spanish, French.

What it costs: $0.20 per report plus $0.02 per signal analyzed; a report on 10 signals is about $0.40. Details in Pricing.

This Actor does not browse the web or run searches itself. It analyzes the signals you provide, so there is no hidden collection cost and the analysis is only as current as your data.


At a glance

InputCompetitor name or domain + a list of signals (sources)
OutputStrategic action table (dataset) + full report (key-value store COMPETITOR_REPORT)
AnalysisThreat level, strengths, weaknesses, content gaps, social momentum, up to 6 prioritized moves, quick wins, first move, executive summary
Signal typesserp, content, social; inferred from the text when you leave the type out
Focus optionsCompetitor comparison, content gaps, social signals, SEO position, pricing signals
PricingPer signal analyzed + per report; see Pricing
Runs onApify Console, API, schedules, n8n, Make, Zapier, AI agents via MCP

Quick start

  1. Type the competitor's name or domain into Competitor.
  2. Replace the sample Source signals with your own: one line per observation, or objects with type, title, content and metric.
  3. Pick the focus dimensions and the output language, then click Start.
  4. Open the Dataset tab for the action table and the key-value store for COMPETITOR_REPORT.

The input comes with three sample signals about a CRM competitor, so you can see a full report before adding your own data.

What the action table looks like

PriorityStrategic MoveImpactEffortExpected Result
1Publish a comparison page targeting "best crm software" with a demo videoHighMediumClose part of the ranking gap on the keyword (est.)
2Create content for "cheap crm", where the competitor has no pageMediumLowCapture an uncontested keyword
3Run a weekly social series while their engagement is fallingMediumLowEst. growth in share of voice

Illustrative example; your run reports its own findings, based only on the signals you provide.


Why marketers use it

Competitor tools are good at collecting numbers: rankings, backlinks, follower counts. What they rarely do is combine different kinds of evidence into a plan. This Actor reads your SERP, content and social signals together and writes the plan:

  1. It synthesizes, not repeats. The model is instructed to turn the signals into decisions rather than restate them.
  2. It anchors on the worst case. When signals are analyzed in several batches, the highest threat level found is the one reported, with its reason.
  3. It counts repetition. A strength or content gap that shows up in several batches ranks higher than one mentioned once.
  4. It ends with moves. Up to six strategic moves with impact, effort and an expected result, a list of quick wins with the reason each one is quick, and one first move.
  5. It is honest about estimates. Percentages in expected results are prefixed with "est."; missing evidence is reported as "insufficient data".

Raw competitor data vs. this Actor

Raw data from an SEO or social toolThis Actor
Combines SERP, content and socialYou do it by handYes, in one report
Threat assessmentNoYes, with a one-sentence reason
Strengths and weaknessesYou interpretListed, ranked by repetition
What to do nextNoPrioritized moves, quick wins, first move
Language for your boss or clientUsually oneFive, chosen per run

What you get

Dataset: the strategic action table

One row per move, in priority order: Priority, Strategic Move, Impact, Effort, Expected Result. Up to six moves. If no move could be produced, the dataset holds one row pointing to the report instead of being empty.

Key-value store: COMPETITOR_REPORT

KeyContent
competitorThe name you entered
sources_analyzedNumber of signals analyzed
source_breakdownCount per type: serp, content, social
threat_levelHigh, Medium, Low (or Unknown) followed by a one-sentence reason
executive_summaryA 2-3 sentence decision summary
strengthsUp to 6 areas where the competitor is strong
weaknessesUp to 6 gaps that are opportunities for you
content_gapsUp to 8 topics missing at the competitor or in the market
social_momentumOne sentence on engagement and growth direction
action_planUp to 6 moves with priority, move, impact, effort, expected_result
quick_winsLow-effort, high or medium impact moves, each with reason and expected_result (the first move is not repeated here)
first_moveThe single most effective first move

What to do with each part of the report

Report partTypical ownerTypical use
first_moveHead of marketing or founderThis month's priority against this competitor
quick_winsContent or social teamPages, posts and fixes that can ship within days
action_planMarketing leadQuarterly plan, sorted by priority
content_gapsSEO and contentEditorial calendar and keyword targets
weaknessesSales and product marketingBattle cards and positioning lines
strengthsProduct and leadershipWhere not to compete head-on
executive_summaryManagement or clientOne paragraph for a report or deck

Who it is for

  • SEO specialists and content strategists who track a few key competitors.
  • Marketing managers who report on the competitive landscape every month or quarter.
  • Founders and product marketers preparing positioning, pricing or launch plans.
  • Agencies that deliver competitor audits to clients in the client's language.
  • Sales enablement teams writing battle cards.

Use cases

SEO competitor analysis

Paste the keywords where the competitor outranks you, with both positions, plus notes on their ranking pages. Choose the SEO position and Content gaps focus. The report lists the gaps worth attacking and the moves to close them.

Content strategy

Add signals about the competitor's blog cadence, formats, topics and missing pages. The content_gaps list becomes a content backlog; the quick wins are usually pages you can publish fast.

Social media benchmarking

Add follower counts, posting frequency and engagement trends as social signals with a metric. social_momentum tells you whether they are gaining or losing attention, and the moves show where to act.

Pricing and positioning review

Choose the Pricing signals focus and add what you know about their plans, trial, discounts and pricing page. Weaknesses in how they present price are often the clearest positioning angle.

Agency competitor audits

Collect signals for a client's top competitor, run the report in the client's language, and put the executive summary, threat level and action table into the audit deck.

Battle cards for sales

Run one report per main competitor. strengths tells sales where not to fight, weaknesses where to lead, and first_move what to say first.


Worked example: a CRM startup against a market leader

A small CRM company wants to know where to compete with a larger rival.

  1. Collect 14 signals: six keyword rankings from a rank tracker, four observations about the rival's pricing and feature pages, and four social metrics.
  2. Run the report with the competitor's domain, the focus set to SEO position, content gaps and pricing signals, and the language set to English.
  3. Read threat_level: High, because the rival ranks in the top three for most commercial keywords.
  4. Read weaknesses and content_gaps: no demo video, no page for "cheap crm", slow response to comments on social.
  5. Act on quick_wins: publish a page for the uncontested keyword and a short demo video.
  6. Re-run next quarter with fresh rankings and compare the threat level and the gaps.

How it works

  1. Normalize. Each item becomes a signal with a type, title, content and optional metric. Text is read from content, text, snippet or description; the title from title or query; the metric from metric, engagement or followers.
  2. Infer missing types. Without a type, a signal that mentions rankings, keywords, search or a link counts as serp; one that mentions followers, likes, shares, posts or engagement counts as social; anything else counts as content.
  3. Analyze in batches. Signals are analyzed twelve at a time by a language model that must answer in a strict JSON format. If a response is cut off, the batch is retried once with more room.
  4. Merge. Batches are combined: the highest threat level wins, repeated strengths and gaps rank higher, moves are de-duplicated and renumbered.
  5. Report. The action table goes to the dataset; the full report goes to COMPETITOR_REPORT.

If the signal list is empty or has no usable text, the run stops with a clear message and nothing is charged. A batch that fails to analyze is not charged either.


Input

FieldDescription
competitorDomainCompetitor name, domain or social handle. Used in the report and as context.
sourcesThe signals: plain strings or objects with type (serp, content, social), title, content and metric.
dataPointsFocus dimensions; see the value table below. Default: competitor comparison, content gaps, social signals.
languageEnglish, Türkçe, Deutsch, Español, Français. Default English.
modelAdvanced: the default is fast and economical; a stronger model is available for deeper synthesis.

Focus values for the API

The Console shows readable names; the API expects the stored values:

Console nameAPI value
Competitor comparisonrakip kıyası
Content gapsiçerik boşluğu
Social signalssosyal sinyaller
SEO positionSEO konumu
Pricing signalsfiyatlandırma sinyali

Example: structured signals

{
"competitorDomain": "rivalcrm.com",
"sources": [
{"type": "serp", "title": "best crm software", "content": "Rival ranks #3, we rank #9."},
{"type": "serp", "title": "crm for small business", "content": "Rival ranks #1 with a comparison page."},
{"type": "content", "title": "Pricing page", "content": "Transparent pricing, no demo video, free trial 14 days."},
{"type": "social", "title": "Instagram", "content": "Weekly engagement declining.", "metric": "40K followers"}
],
"language": "English"
}

Example: plain notes

{
"competitorDomain": "Rival CRM",
"sources": [
"Their blog publishes two articles a week; we publish one a month.",
"On Google, the keyword 'cheap crm' has no page from them.",
"Twitter posts get few likes; momentum looks weak."
]
}

Pricing

This Actor charges per event. Current prices are on the Pricing tab; at the time of writing:

EventWhenPrice
actor-startOnce per run$0.0001
source-analyzedPer signal analyzed successfully$0.02
report-generatedOnce per report$0.20
Signals in one runCalculationTotal (approx.)
3 (the sample input)$0.0001 + 3 x $0.02 + $0.20$0.26
10$0.0001 + 10 x $0.02 + $0.20$0.40
25$0.0001 + 25 x $0.02 + $0.20$0.70
50$0.0001 + 50 x $0.02 + $0.20$1.20

There is no subscription and no collection cost, because the Actor does not scrape. If you start the Actor without changing the input, the three sample signals are analyzed (about $0.26). An empty signal list is not charged.


Integrations

API

curl -X POST "https://api.apify.com/v2/acts/enezli~ai-competitor-intelligence/run-sync-get-dataset-items?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"competitorDomain":"rivalcrm.com","sources":["Rival ranks #3 for best crm software, we rank #9."]}'

Python: from SERP results to a report

from apify_client import ApifyClient
client = ApifyClient("YOUR_TOKEN")
# Rows from any SERP or rank-tracking export; adjust the field names to your tool.
rows = [
{"keyword": "best crm software", "rival": 3, "us": 9},
{"keyword": "crm for small business", "rival": 1, "us": 14},
]
sources = [{"type": "serp", "title": r["keyword"],
"content": f"Rival ranks #{r['rival']}, we rank #{r['us']}."} for r in rows]
run = client.actor("enezli/ai-competitor-intelligence").call(
run_input={"competitorDomain": "rivalcrm.com", "sources": sources})
report = client.key_value_store(run["defaultKeyValueStoreId"]).get_record("COMPETITOR_REPORT")["value"]
print(report["threat_level"], report["first_move"])

Pairing with scrapers

Run a SERP, website or social media scraper from Apify Store first, then turn each result into one signal (title plus a sentence of content) and pass the list as sources. Nested results, such as a search page with many organic results, should be flattened to one signal per result.

n8n, Make, Zapier

Run Actor, read COMPETITOR_REPORT, post threat_level, first_move and executive_summary to Slack or email, and append the action table to a Google Sheet that tracks each competitor over time.

AI agents (MCP)

Available through the Apify MCP server, so an assistant can turn the notes it has gathered about a competitor into a structured plan.


Workflow recipes

Quarterly competitor review. Keep one task per main competitor. Each quarter, paste fresh rankings and observations and run all tasks. Compare threat levels and content gaps with the previous quarter.

Content backlog from gaps. Run the report with the Content gaps and SEO position focus. Move content_gaps and the quick wins into your editorial calendar.

Client audit in the client's language. Collect signals in English, set language to the client's language, and deliver the report without translating it by hand.

Launch readiness check. Before a launch, run reports on the two closest competitors with the Pricing signals focus. Use their weaknesses in your launch messaging.


Tips for better results

  • Write signals as facts with numbers. "Rival ranks #3, we rank #9" is more useful than "they rank well".
  • Mix the three types. SERP, content and social together give the synthesis something to connect.
  • Add a metric to social signals (followers, engagement, growth) whenever you have one.
  • Use 5-30 signals per report. Very few signals lead to "insufficient data" in several fields.
  • One competitor per run. Mixing competitors blurs strengths and weaknesses.
  • Pick the focus that matches your question; it steers what the model looks for.

Limits

  • The Actor does not collect data from the web. The report is only as complete and current as the signals you provide.
  • Impact, effort, threat level and expected results are model estimates from your signals, not measurements. Percentages are marked "est.".
  • The action plan keeps at most six moves; strengths and weaknesses at most six each; content gaps at most eight.
  • One competitor per run. For several competitors, run several times with the same settings.

Troubleshooting

SymptomCauseFix
"No valid source signals found"The list is empty, or items have no text in a supported fieldPut the text in content (or text, snippet, description). Nothing was charged
Many fields say "insufficient data"Too few signals, or signals of only one typeAdd more signals and mix SERP, content and social
Signals counted under the wrong typeNo type given and the text did not contain the usual keywordsSet type explicitly to serp, content or social
"No source could be analyzed"The language model service did not respondRun again later; failed batches are not charged
Report in the wrong languagelanguage left at EnglishChoose the output language in the input

FAQ

Does it scrape Google or social networks? No. It analyzes the signals you give it. You can pair it with any scraper or export from your SEO and social tools.

What counts as one signal? One item in the sources list: a line of text or one object. Each successfully analyzed signal is one source-analyzed event.

Can I pass rows from a scraper directly? Yes, when each row has text in content, text, snippet or description. Rows with nested lists should be flattened first.

Do I have to set the type? No. It is inferred from the text, but setting it gives more accurate breakdowns.

How is the threat level decided? The model rates threat as high, medium or low with a reason for each batch of signals; the report keeps the highest one.

Can it compare several competitors? Run one report per competitor with the same focus and compare the tables side by side.

Which languages are supported? Reports can be written in English, Turkish, German, Spanish or French. Signals can be in any language the model understands.

Why is the price per signal? The analysis work grows with the number of signals. Paying per signal keeps a small report cheap and lets you see the cost before you run: count your signals, multiply by $0.02 and add $0.20.

Can I schedule it? Yes. Save the input as a task and add a schedule. Because the Actor analyzes the signals in the input, update the signals (by hand or with an automation that runs before it) so each run reflects fresh data.

Is my data stored? Only in your own Apify storage. Signal text is sent to the language model provider solely to produce your report.

Am I charged when something fails? An empty input is not charged. A batch that fails to analyze is not charged; the report fee is charged only when a report is produced.


Trademarks

This Actor is not affiliated with, endorsed by, or connected to Google, Instagram or Twitter. All product names are trademarks of their respective owners.