ScavioScavio
产品定价文档
登录开始使用
  1. 首页
  2. 教程
  3. 如何使用搜索 API 每日跟踪地理指标
教程

如何使用搜索 API 每日跟踪地理指标

自动执行每日针对地理区域的 SERP 跟踪。使用简单的 Python cron 作业监控本地排名、地图包位置和区域 SERP 差异。

获取免费API密钥API文档

通过使用位置参数查询搜索 API、存储一段时间内的位置数据以及比较跨区域的排名,每天跟踪地理定位 SEO 指标。本地 SEO 性能因地理位置而异,而国家级排名跟踪完全忽略了这些差异。每日地理跟踪管道捕获每个目标位置的地图包位置、有机排名和 SERP 功能存在,构建早期检测区域排名变化所需的历史数据。

前置条件

  • 已安装 Python 3.8+
  • 请求已安装库
  • 来自 scavio.dev 的 Scavio API 密钥
  • 定义目标关键字和位置

操作指南

步骤 1: 定义跟踪目标

配置每日监控的关键词和地理位置。

Python
import os, requests, json, datetime

API_KEY = os.environ['SCAVIO_API_KEY']

TARGETS = [
    {'keyword': 'plumber near me', 'locations': ['New York', 'Los Angeles', 'Chicago']},
    {'keyword': 'best coffee shop', 'locations': ['San Francisco', 'Seattle', 'Portland']},
    {'keyword': 'emergency dentist', 'locations': ['Houston', 'Phoenix', 'Dallas']},
]

HISTORY_FILE = 'geo_metrics_history.json'

print(f'Tracking {len(TARGETS)} keywords across {sum(len(t["locations"]) for t in TARGETS)} locations')

步骤 2: 使用地理参数查询

使用特定于位置的查询搜索每个关键字以获取区域排名。

Python
def search_geo(keyword: str, location: str) -> dict:
    query = f'{keyword} in {location}'
    resp = requests.post('https://api.scavio.dev/api/v1/search',
        headers={'x-api-key': API_KEY},
        json={'platform': 'google', 'query': query}, timeout=15)
    data = resp.json()
    return {
        'keyword': keyword,
        'location': location,
        'date': datetime.date.today().isoformat(),
        'organic_count': len(data.get('organic_results', [])),
        'top_3': [{'title': r.get('title', ''), 'url': r.get('link', ''), 'position': i+1}
                  for i, r in enumerate(data.get('organic_results', [])[:3])],
        'has_map_pack': 'local_results' in data or 'map_pack' in str(data.keys()),
        'has_featured_snippet': 'featured_snippet' in data or 'answer_box' in data,
    }

result = search_geo('plumber near me', 'New York')
print(f"{result['location']}: {result['organic_count']} results, map_pack={result['has_map_pack']}")

步骤 3: 运行每日扫描

对所有关键字位置组合执行扫描并收集结果。

Python
import time

def daily_scan(targets: list) -> list:
    results = []
    for target in targets:
        for location in target['locations']:
            result = search_geo(target['keyword'], location)
            results.append(result)
            print(f"  {result['keyword']} / {result['location']}: {result['organic_count']} results")
            time.sleep(0.3)
    return results

today_results = daily_scan(TARGETS)
print(f'\nScanned {len(today_results)} keyword-location pairs')

步骤 4: 存储和比较历史记录

保存每日结果并与前几天进行比较以检测排名变化。

Python
def store_results(results: list):
    history = []
    try:
        with open(HISTORY_FILE) as f:
            history = json.load(f)
    except FileNotFoundError:
        pass
    history.extend(results)
    with open(HISTORY_FILE, 'w') as f:
        json.dump(history, f, indent=2)
    print(f'Stored {len(results)} results (total history: {len(history)})')

def compare_days(keyword: str, location: str) -> dict:
    try:
        with open(HISTORY_FILE) as f:
            history = json.load(f)
    except FileNotFoundError:
        return {}
    entries = [h for h in history if h['keyword'] == keyword and h['location'] == location]
    entries.sort(key=lambda x: x['date'])
    if len(entries) < 2:
        return {'change': 'insufficient data'}
    prev = entries[-2]
    curr = entries[-1]
    return {
        'keyword': keyword,
        'location': location,
        'prev_date': prev['date'],
        'curr_date': curr['date'],
        'organic_change': curr['organic_count'] - prev['organic_count'],
        'map_pack_change': curr['has_map_pack'] != prev['has_map_pack'],
    }

store_results(today_results)

步骤 5: 生成地理报告

生成所有跟踪位置的排名绩效摘要报告。

Python
def geo_report(targets: list) -> str:
    lines = [f'Geo SEO Report - {datetime.date.today().isoformat()}', '']
    for target in targets:
        lines.append(f'Keyword: {target["keyword"]}')
        for location in target['locations']:
            diff = compare_days(target['keyword'], location)
            status = 'NEW' if diff.get('change') == 'insufficient data' else ''
            if not status:
                change = diff.get('organic_change', 0)
                status = f'+{change}' if change > 0 else str(change) if change < 0 else 'stable'
            lines.append(f'  {location}: {status}')
        lines.append('')
    report = '\n'.join(lines)
    print(report)
    return report

geo_report(TARGETS)

Python 示例

Python
import requests, os
H = {'x-api-key': os.environ['SCAVIO_API_KEY']}

def geo_rank(keyword, location):
    data = requests.post('https://api.scavio.dev/api/v1/search', headers=H,
        json={'platform': 'google', 'query': f'{keyword} in {location}'}).json()
    top = data.get('organic_results', [])[:3]
    return {'location': location, 'top': [r.get('title', '')[:50] for r in top]}

print(geo_rank('plumber near me', 'New York'))

JavaScript 示例

JavaScript
const H = {'x-api-key': process.env.SCAVIO_API_KEY, 'Content-Type': 'application/json'};
async function geoRank(keyword, location) {
  const r = await fetch('https://api.scavio.dev/api/v1/search', {
    method: 'POST', headers: H,
    body: JSON.stringify({platform: 'google', query: `${keyword} in ${location}`})
  });
  const top = ((await r.json()).organic_results || []).slice(0, 3);
  return {location, top: top.map(r => (r.title || '').slice(0, 50))};
}
geoRank('plumber near me', 'New York').then(console.log);

预期输出

JSON
A daily geo-targeted SERP tracking pipeline that monitors rankings across multiple locations, detects regional changes, and produces summary reports for local SEO optimization.

相关教程

  • 如何通过搜索 API 跟踪 Google 趋势
  • 如何将 Surfer SEO 与搜索 API 结合起来

常见问题

大多数开发者在15到30分钟内完成本教程。您需要一个Scavio API密钥(免费套餐即可)和可用的Python或JavaScript环境。

已安装 Python 3.8+. 请求已安装库. 来自 scavio.dev 的 Scavio API 密钥. 定义目标关键字和位置. Scavio API密钥注册即送50个免费积分。

可以。免费套餐注册即送50个积分,完全足够完成本教程并构建一个可运行的原型解决方案。

Scavio提供原生LangChain包(langchain-scavio)、MCP服务器以及适用于任何HTTP客户端的REST API。本教程使用 the raw REST API, 但您可以根据需要适配您选择的框架。

相关资源

Best Of

2026年最佳代理机构 SEO 报告 API

Read more
Best Of

2026 年最佳基于队列的 SERP API

Read more
Comparison

Semrush API vs Raw SERP API

Read more
Solution

构建可预测成本的SEO API层

Read more
Use Case

SEO 仪表板原始 API

Read more
Glossary

SERP API

Read more

开始构建

自动执行每日针对地理区域的 SERP 跟踪。使用简单的 Python cron 作业监控本地排名、地图包位置和区域 SERP 差异。

获取免费API密钥阅读文档
ScavioScavio

面向AI智能体的实时搜索API。搜索所有平台,不仅仅是Google。

产品

  • 功能
  • 定价
  • 控制台
  • 联盟计划

开发者

  • 文档
  • API参考
  • 快速开始
  • MCP集成
  • Python SDK

替代方案

  • Tavily替代方案
  • SerpAPI替代方案
  • Firecrawl替代方案
  • Exa替代方案

工具

  • JSON格式化
  • cURL转代码
  • Token计数器
  • 全部工具

© 2026 Scavio. 保留所有权利。

Featured on TAAFT
服务条款隐私政策