ScavioScavio
产品定价文档
登录开始使用
  1. 首页
  2. 教程
  3. 如何使用 Scavio 搜索 API 构建预算排名跟踪器
教程

如何使用 Scavio 搜索 API 构建预算排名跟踪器

使用 Scadio Search API 每天跟踪 50 个关键字,每周只需 0.035 美元。在 SQLite 中存储排名历史记录,并在排名移动 3 个以上位置时收到警报。

获取免费API密钥API文档

企业排名跟踪器每月收取 50-200 美元的费用来监控少数关键字。通过 Scavio Search API(每信用额 0.005 美元),您每天可以跟踪 50 个关键字,每周只需 0.035 美元,每年不到 2 美元。本教程构建了一个完整的排名跟踪器,具有 SQLite 存储、每日 cron 调度和位置变化警报。

前置条件

  • Python 3.11+
  • 来自 https://scavio.dev 的 Scavio API 密钥
  • SQLite3(包含在 Python 中)
  • 用于每日运行的 cron 调度程序或任务调度程序

操作指南

步骤 1: 设置 SQLite 数据库和关键字列表

创建一个 SQLite 数据库来存储每日排名快照。每行记录关键字、目标域的位置、日期和排名的 URL。

Python
import sqlite3
from pathlib import Path

DB_PATH = Path("rank_tracker.db")

def init_db():
    conn = sqlite3.connect(DB_PATH)
    conn.execute("""
        CREATE TABLE IF NOT EXISTS rankings (
            id INTEGER PRIMARY KEY AUTOINCREMENT,
            keyword TEXT NOT NULL,
            position INTEGER,
            url TEXT,
            checked_at TEXT NOT NULL,
            domain TEXT NOT NULL
        )
    """)
    conn.execute("""
        CREATE INDEX IF NOT EXISTS idx_keyword_date
        ON rankings(keyword, checked_at)
    """)
    conn.commit()
    conn.close()

KEYWORDS = [
    "best API for web scraping 2026",
    "cheap search API for agents",
    "MCP server search tool",
    # ... add up to 50 keywords
]

TARGET_DOMAIN = "scavio.dev"
init_db()

步骤 2: 通过 Scavio 搜索 API 检查排名

对于每个关键字,搜索并找到您的目标域在结果中的位置。将位置(如果在顶部结果中找不到,则为 null)存储在数据库中。

Python
import httpx
from datetime import date

SCAVIO_API_KEY = "your-api-key"

async def check_ranking(client: httpx.AsyncClient, keyword: str) -> dict:
    resp = await client.post(
        "https://api.scavio.dev/api/v1/search",
        headers={"x-api-key": SCAVIO_API_KEY},
        json={"query": keyword, "num_results": 10}
    )
    resp.raise_for_status()
    results = resp.json().get("results", [])
    for i, r in enumerate(results):
        url = r.get("url", "")
        if TARGET_DOMAIN in url:
            return {"position": i + 1, "url": url}
    return {"position": None, "url": None}

async def check_all_keywords():
    conn = sqlite3.connect(DB_PATH)
    today = date.today().isoformat()
    async with httpx.AsyncClient(timeout=15) as client:
        for keyword in KEYWORDS:
            result = await check_ranking(client, keyword)
            conn.execute(
                "INSERT INTO rankings (keyword, position, url, checked_at, domain) VALUES (?, ?, ?, ?, ?)",
                (keyword, result["position"], result["url"], today, TARGET_DOMAIN)
            )
    conn.commit()
    conn.close()

步骤 3: 检测位置变化并生成警报

将今天的排名与昨天的排名进行比较。标记向任一方向移动 3 个或更多位置的任何关键字。

Python
def get_position_changes(threshold: int = 3) -> list[dict]:
    conn = sqlite3.connect(DB_PATH)
    rows = conn.execute("""
        SELECT
            r1.keyword,
            r2.position AS prev_position,
            r1.position AS curr_position,
            r1.url,
            r1.checked_at
        FROM rankings r1
        JOIN rankings r2
            ON r1.keyword = r2.keyword
            AND r1.domain = r2.domain
            AND r2.checked_at = date(r1.checked_at, '-1 day')
        WHERE r1.checked_at = date('now')
            AND r1.position IS NOT NULL
            AND r2.position IS NOT NULL
            AND ABS(r1.position - r2.position) >= ?
        ORDER BY ABS(r1.position - r2.position) DESC
    """, (threshold,)).fetchall()
    conn.close()
    changes = []
    for keyword, prev, curr, url, checked in rows:
        direction = "up" if curr < prev else "down"
        changes.append({
            "keyword": keyword,
            "previous": prev,
            "current": curr,
            "change": prev - curr,
            "direction": direction,
            "url": url
        })
    return changes

步骤 4: 生成每日成本和摘要报告

打印一份摘要,显示跟踪的关键字总数、使用的积分、成本以及任何重大的排名变化。使用 cron 安排此脚本以实现日常自动化。

Python
import asyncio

async def daily_report():
    await check_all_keywords()

    credits_used = len(KEYWORDS)  # 1 credit per search
    cost = credits_used * 0.005
    weekly_cost = cost * 7

    changes = get_position_changes(threshold=3)

    print(f"Rank Tracker Report - {date.today().isoformat()}")
    print(f"Keywords tracked: {len(KEYWORDS)}")
    print(f"Credits used: {credits_used}")
    print(f"Daily cost: {cost:.3f}")
    print(f"Weekly cost: {weekly_cost:.3f}")
    print(f"Position changes (3+): {len(changes)}")
    for c in changes:
        arrow = "improved" if c["direction"] == "up" else "dropped"
        print(f"  {c['keyword']}: #{c['previous']} -> #{c['current']} ({arrow} by {abs(c['change'])})")

asyncio.run(daily_report())

# Cron: 0 8 * * * cd /path/to/tracker && python rank_tracker.py

Python 示例

Python
import asyncio
import sqlite3
import httpx
from datetime import date
from pathlib import Path

SCAVIO_API_KEY = "your-api-key"
TARGET_DOMAIN = "scavio.dev"
DB_PATH = Path("rank_tracker.db")

KEYWORDS = [
    "best API for web scraping 2026",
    "cheap search API for agents",
    "MCP server search tool",
]

def init_db():
    conn = sqlite3.connect(DB_PATH)
    conn.execute("""
        CREATE TABLE IF NOT EXISTS rankings (
            id INTEGER PRIMARY KEY AUTOINCREMENT,
            keyword TEXT, position INTEGER, url TEXT,
            checked_at TEXT, domain TEXT
        )
    """)
    conn.commit()
    conn.close()

async def check_ranking(client, keyword):
    resp = await client.post(
        "https://api.scavio.dev/api/v1/search",
        headers={"x-api-key": SCAVIO_API_KEY},
        json={"query": keyword, "num_results": 10}
    )
    resp.raise_for_status()
    for i, r in enumerate(resp.json().get("results", [])):
        if TARGET_DOMAIN in r.get("url", ""):
            return i + 1, r["url"]
    return None, None

async def main():
    init_db()
    conn = sqlite3.connect(DB_PATH)
    today = date.today().isoformat()
    async with httpx.AsyncClient(timeout=15) as client:
        for kw in KEYWORDS:
            pos, url = await check_ranking(client, kw)
            conn.execute(
                "INSERT INTO rankings VALUES (NULL,?,?,?,?,?)",
                (kw, pos, url, today, TARGET_DOMAIN)
            )
    conn.commit()
    cost = len(KEYWORDS) * 0.005
    print(f"Tracked {len(KEYWORDS)} keywords | Cost: {cost:.3f} | Weekly: {cost * 7:.3f}")
    conn.close()

asyncio.run(main())

JavaScript 示例

JavaScript
const SCAVIO_API_KEY = "your-api-key";
const TARGET_DOMAIN = "scavio.dev";
const KEYWORDS = [
  "best API for web scraping 2026",
  "cheap search API for agents",
  "MCP server search tool"
];

async function checkRanking(keyword) {
  const resp = await fetch("https://api.scavio.dev/api/v1/search", {
    method: "POST",
    headers: { "x-api-key": SCAVIO_API_KEY, "Content-Type": "application/json" },
    body: JSON.stringify({ query: keyword, num_results: 10 })
  });
  const data = await resp.json();
  const results = data.results || [];
  for (let i = 0; i < results.length; i++) {
    if ((results[i].url || "").includes(TARGET_DOMAIN)) {
      return { position: i + 1, url: results[i].url };
    }
  }
  return { position: null, url: null };
}

async function main() {
  const rankings = [];
  for (const kw of KEYWORDS) {
    const rank = await checkRanking(kw);
    rankings.push({ keyword: kw, ...rank });
  }
  const cost = KEYWORDS.length * 0.005;
  console.log("Rankings:", JSON.stringify(rankings, null, 2));
  console.log("Daily cost: $" + cost.toFixed(3));
  console.log("Weekly cost: $" + (cost * 7).toFixed(3));
}

main();

预期输出

JSON
Tracked 3 keywords | Cost: $0.015 | Weekly: $0.105

相关教程

  • 如何使用 Scavio 搜索 API 构建营销研究代理
  • 如何使用 Scavio Search API 构建代理工具后备链
  • 如何通过 Scavio 搜索 API 将 YouTube 评论提取为结构化 JSON

常见问题

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

Python 3.11+. 来自 https://scavio.dev 的 Scavio API 密钥. SQLite3(包含在 Python 中). 用于每日运行的 cron 调度程序或任务调度程序. Scavio API密钥注册即送50个免费积分。

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

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

相关资源

Best Of

2026最佳本地商业数据API

Read more
Best Of

2026年最佳域名权威度API

Read more
Comparison

Google Places API vs SERP Local Pack API

Read more
Solution

Sonar API

Read more
Solution

从 Brave Search API 迁移到 Scavio 获得更好覆盖

Read more
Use Case

纯 Python 智能体搜索工具集成

Read more

开始构建

使用 Scadio Search API 每天跟踪 50 个关键字,每周只需 0.035 美元。在 SQLite 中存储排名历史记录,并在排名移动 3 个以上位置时收到警报。

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

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

产品

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

开发者

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

替代方案

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

工具

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

© 2026 Scavio. 保留所有权利。

Featured on TAAFT
服务条款隐私政策