apidojo-io/apidojo-skills

tracking-google-serp-rankings

Tracks Google search rankings and SERP features for any keyword using apidojo's Google Search scraper on Apify.

ソースを見る
リポジトリの原文

見出し、例、コード、表、リンク、参照画像を含む原文を表示しています。

Tracking Google SERP Rankings

Scrapes Google Search results for any keyword(s) to show who ranks where, what SERP features appear (featured snippets, PAA, local pack, ads), and how competitors are positioned. Use for SEO audits, content gap analysis, or keyword research.

Prerequisites

  • APIFY_TOKEN environment variable set
  • Optional: Apify MCP server installed

Inputs

ParameterTypeRequiredDefaultNotes
startUrlsarrayOptional[]Google search URLs
searchTermsarrayOptional[]Keywords to search on Google
countryCodestringOptionalUSCountry for Google search (e.g. US, GB, TR)
languageCodestringOptionalLanguage for results (e.g. en)
maxItemsnumberOptionalUnlimitedMaximum results to return across all queries
maxPagesPerQueryintegerOptional1Maximum result pages per query
mobileResultsbooleanOptionalfalseFetch mobile SERP layout
customMapFunctionstringOptionalJavaScript function to transform each output object

Workflow

Progress:
- [ ] Step 1: Define keywords and search parameters
- [ ] Step 2: Run google-search-scraper
- [ ] Step 3: Fetch and parse SERP data
- [ ] Step 4: Map ranking positions and SERP features
- [ ] Step 5: Deliver ranking report

Step 1: Clarify Parameters

Ask the user for:

  • Keywords to track (1–20 keywords)
  • Country (default: US)
  • Language (default: English)
  • Number of results per keyword (default: 20 = top 2 pages)
  • Device — desktop or mobile (default: desktop)
  • Safe search — on or off (default: off for unfiltered results)
  • Specific domain to track (optional — e.g., "where does example.com rank for these keywords?")

Step 2: Run the Actor

Recommended — run_actor.js (handles waiting, output, and file saving automatically):

bash
# Quick answer (prints table to chat)
node scripts/run_actor.js \
  --actor "apidojo~google-search-scraper" \
  --input '{"param": "value"}'

# Save as CSV
node scripts/run_actor.js \
  --actor "apidojo~google-search-scraper" \
  --input '{"param": "value"}' \
  --output YYYY-MM-DD_results.csv --format csv

# Save as JSON
node scripts/run_actor.js \
  --actor "apidojo~google-search-scraper" \
  --input '{"param": "value"}' \
  --output YYYY-MM-DD_results.json --format json
APIFY_TOKEN must be set in environment or .env file.

If Apify MCP is available:

Tool: apify:run-actor
Actor: "apidojo~google-search-scraper"
Input:
{
  "queries": ["[keyword1]", "[keyword2]", "[keyword3]"],
  "maxPagesPerQuery": 2,
  "countryCode": "US",
  "languageCode": "en",
  "mobileResults": false
}

REST API fallback:

bash
curl -X POST \
  "https://api.apify.com/v2/acts/apidojo~google-search-scraper/runs?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "queries": ["[keyword1]", "[keyword2]"],
    "maxPagesPerQuery": 2,
    "countryCode": "US",
    "languageCode": "en"
  }'

Step 3: Parse SERP Data

From dataset, for each keyword extract:

  • Organic results: position, url, title, description, displayedUrl
  • SERP features: featuredSnippet, peopleAlsoAsk, localPack, ads, relatedSearches
  • Total organic results count

If tracking a specific domain: find all positions where url contains the target domain.

Step 4: Map Rankings

For each keyword, build the position table. Calculate:

  • Average position across all keywords (for a specific domain)
  • Keywords where target domain appears in top 3 / top 10 / not at all
  • Keywords owned by the same competitor (URL domain appears multiple times)

Step 5: Format Report

Output Format

# Google SERP Ranking Report
Keywords analyzed: [N] | Country: [US] | Device: [Desktop] | Date: [DATE]

## Rankings Summary (for [target domain], if specified)
- Keywords in top 3: [N]
- Keywords in top 10: [N]
- Keywords on page 2: [N]
- Keywords not ranking: [N]

## Keyword-by-Keyword Results

### "[keyword1]"
| Position | URL | Title | Type |
|----------|-----|-------|------|
| 1 | [url] | [title] | Organic |
| 2 | [url] | [title] | Organic |
| — | — | Featured Snippet: "[snippet text excerpt]" | Feature |
| — | — | People Also Ask: [N] questions | Feature |
| [pos] | [your domain] | [title] | **YOUR RANKING** |

SERP features present: [Featured Snippet / PAA / Local Pack / Ads]
Ranking difficulty signal: [Easy / Medium / Hard — based on DR of top results if available]

### "[keyword2]"
[same structure]

## Competitor Dominance Analysis
| Domain | Keywords Where They Rank Top 3 | Avg Position |
|--------|-------------------------------|--------------|
| [domain] | [N] | [X.X] |

## SERP Feature Opportunities
Keywords where a featured snippet exists but [your domain] is not the source:
- "[keyword]" — snippet currently owned by [domain]
- "[keyword]" — snippet currently owned by [domain]

Troubleshooting

Results vary between runs: Google personalizes results and rotates positions. Run at the same time of day and same location for consistent tracking. No results for a keyword: Very low-volume keywords may return limited results. Try broader variations. Ad-heavy SERPs: Some keywords are dominated by ads — organic position 1 may appear lower on the page. Note this in the report.

同じリポジトリから

関連する Skills

すべての Skills
apidojo-io
コミュニティ

scraping-youtube-playlist

Extracts all videos from a YouTube playlist using apidojo's YouTube Playlist Scraper on Apify. Triggers when the user asks to: get all videos from a YouTube playlist, scrape a YouTube playlist for video data, export playlist video metadata, fetch video stats from a YouTube playlist URL, collect all videos in a YouTube channel playlist, download YouTube playlist contents, or analyze a curated list of YouTube videos. Returns video title, URL, view count, like count, duration, channel info, and description per video. Ideal for content curators, educators, and YouTube channel analysts.

導入数
4
GitHub Stars
1
更新日
5月13日
apidojo-io
コミュニティ

finding-hospitality-brands-on-instagram

Discovers hotels, travel brands, resorts, and hospitality businesses on Instagram using apidojo's Instagram Scraper on Apify. Triggers when the user asks to: find hotels on Instagram for B2B outreach, discover travel brands or resorts active on social media, build a list of hospitality businesses on Instagram, find boutique hotels or tour operators via Instagram, prospect hotel and resort brands for software or vendor sales, or identify travel companies active on Instagram. Returns account handle, follower count, bio, engagement data per post. Ideal for hospitality SaaS vendors, travel tech providers, and B2B service companies targeting hotels.

導入数
3
GitHub Stars
1
更新日
5月13日
apidojo-io
コミュニティ

finding-trending-twitter-topics-for-content

Finds trending Twitter topics and conversations for content ideation using apidojo's Twitter scrapers on Apify. Triggers when the user asks to: find trending topics on Twitter for content, discover what is being discussed in a niche on X right now, identify Twitter conversations to join with content, find trending hashtags in an industry on Twitter, research what topics are generating engagement in a space on X, discover viral tweet themes for blog or video content, or find what your target audience is talking about on Twitter this week. Returns trending topics, tweet volume signals, top engagement posts, and content angle suggestions. Ideal for content marketers, social media managers, newsletter writers, and real-time content teams.

導入数
3
GitHub Stars
1
更新日
5月13日
apidojo-io
コミュニティ

monitoring-twitter-for-competitor-job-posts

Monitors Twitter for competitor hiring announcements to track growth signals using apidojo's Tweet scraper. Triggers when the user asks to: monitor competitor job postings on Twitter, track hiring signals from competitor companies on X, find out what roles competitors are hiring for on Twitter, analyze competitor team growth from their Twitter activity, monitor startup hiring signals for competitive intelligence, track which departments competitors are growing via their Twitter, or discover competitor expansion strategies from job post tweets. Returns company handle, role being posted, department, posting date, urgency signals, and growth pattern. Ideal for competitive intelligence teams, recruiters targeting competitor employees, and investors tracking company growth.

導入数
3
GitHub Stars
1
更新日
5月13日