Google SERP API:如何使用 Talordata 采集 Google 搜索结果

了解如何使用 Talordata SERP API 采集 Google 搜索结果,并用 Python 收集 organic results、titles、URLs、snippets、ranking positions,最后导出为 CSV。

talor ai
Last updated on
5 min read

Google 搜索结果很适合用于 SEO research、competitor tracking、market monitoring 和 AI workflows。

你可能需要采集:

  • organic result titles

  • URLs

  • snippets

  • ranking positions

  • domains

  • related questions

  • ads

  • local or shopping results

  • SERP features

你可以用 browser automation 直接抓 Google,但通常会遇到 page rendering、layout changes、blocks、CAPTCHA challenges 和 parsing logic 等问题。

Google SERP API 会让流程更干净。你只要传入 query、location、language 和 device,就能得到 structured search data,后续可以存入数据库、分析平台,或传给 AI workflow。

Talordata SERP API 用于获取 Google 和其他主要搜索引擎的 real-time structured search results,支持 JSON / HTML response formats 和 geo-targeted SERP data,也支持 Google、Bing、Yandex、DuckDuckGo。

我们要做什么?

这篇会建立一个小型 Python script:

Search query
→ Talordata SERP API
→ Google organic results
→ Clean title, URL, snippet, domain, position
→ Export results to CSV

适合用于:

  • SEO rank tracking

  • competitor monitoring

  • content research

  • AI agent source discovery

  • RAG workflows

  • market research dashboards

  • search result archiving

Step 1:准备 API Key

创建 Talordata 账号,并从 dashboard 获取 SERP API key。

Talordata 产品页说明,新用户可获得 1,000 free API responses,SERP API pricing 采用 response-based 方案。

把 API key 存成 environment variable。

export TALORDATA_API_KEY="your_api_key_here"

Windows PowerShell:

$env:TALORDATA_API_KEY="your_api_key_here"

安装 Python package:

pip install requests

Step 2:发送 Google SERP Request

Talordata examples 使用 SERP endpoint,并通过 engineqlocationnum参数处理搜索 workflow。Google SERP example 中也提到常见参数包含 qglhldevicenumstart

下面是一个基本 Python request:

import os
import requests


TALORDATA_API_KEY = os.getenv("TALORDATA_API_KEY")
TALORDATA_ENDPOINT = "https://api.talordata.com/v1/serp"


def search_google(query, location="United States", language="en", country="us"):
    if not TALORDATA_API_KEY:
        raise RuntimeError("Missing TALORDATA_API_KEY environment variable")

    payload = {
        "engine": "google",
        "q": query,
        "location": location,
        "hl": language,
        "gl": country,
        "num": 10
    }

    headers = {
        "Authorization": f"Bearer {TALORDATA_API_KEY}",
        "Content-Type": "application/json"
    }

    response = requests.post(
        TALORDATA_ENDPOINT,
        json=payload,
        headers=headers,
        timeout=30
    )

    response.raise_for_status()
    return response.json()

实际 endpoint 或 authentication method 可能取决于你的 Talordata dashboard 设置。如果 dashboard 显示不同 endpoint,请以账号中的 endpoint 为准。

Step 3:提取 Organic Results

Google SERP response 可能包含很多区块,例如 organic results、ads、related questions、maps、knowledge panels 等。

这篇先从 organic results 开始。

from urllib.parse import urlparse


def clean_text(value):
    if not value:
        return ""
    return " ".join(str(value).split())


def get_domain(url):
    if not url:
        return ""

    parsed = urlparse(url)
    return parsed.netloc.replace("www.", "")


def extract_organic_results(serp_json, query):
    organic_results = serp_json.get("organic_results", [])
    rows = []

    for index, item in enumerate(organic_results, start=1):
        url = item.get("link") or item.get("url") or ""

        rows.append({
            "query": query,
            "position": item.get("position") or item.get("rank") or index,
            "title": clean_text(item.get("title")),
            "url": url,
            "domain": get_domain(url),
            "snippet": clean_text(item.get("snippet") or item.get("description"))
        })

    return rows

Talordata 的 SEO use case page 将 organic search data 描述为包含 ranking positions、titles、URLs、snippets 和 ranking changes,这些也是多数 SEO workflow 最需要的字段。

Step 4:导出结果到 CSV

CSV 适合 quick checks、content research 和简单 rank tracking。

import csv


CSV_COLUMNS = [
    "query",
    "position",
    "title",
    "url",
    "domain",
    "snippet"
]


def export_to_csv(rows, filename="google_serp_results.csv"):
    if not rows:
        print("No organic results found.")
        return

    with open(filename, mode="w", newline="", encoding="utf-8") as file:
        writer = csv.DictWriter(file, fieldnames=CSV_COLUMNS)
        writer.writeheader()
        writer.writerows(rows)

    print(f"Exported {len(rows)} results to {filename}")

完整 Python 示例

import os
import csv
import requests

from urllib.parse import urlparse


TALORDATA_API_KEY = os.getenv("TALORDATA_API_KEY")
TALORDATA_ENDPOINT = "https://api.talordata.com/v1/serp"

CSV_COLUMNS = [
    "query",
    "position",
    "title",
    "url",
    "domain",
    "snippet"
]


def clean_text(value):
    if not value:
        return ""
    return " ".join(str(value).split())


def get_domain(url):
    if not url:
        return ""

    parsed = urlparse(url)
    return parsed.netloc.replace("www.", "")


def search_google(query, location="United States", language="en", country="us"):
    if not TALORDATA_API_KEY:
        raise RuntimeError("Missing TALORDATA_API_KEY environment variable")

    payload = {
        "engine": "google",
        "q": query,
        "location": location,
        "hl": language,
        "gl": country,
        "num": 10
    }

    headers = {
        "Authorization": f"Bearer {TALORDATA_API_KEY}",
        "Content-Type": "application/json"
    }

    response = requests.post(
        TALORDATA_ENDPOINT,
        json=payload,
        headers=headers,
        timeout=30
    )

    response.raise_for_status()
    return response.json()


def extract_organic_results(serp_json, query):
    organic_results = serp_json.get("organic_results", [])
    rows = []

    for index, item in enumerate(organic_results, start=1):
        url = item.get("link") or item.get("url") or ""

        rows.append({
            "query": query,
            "position": item.get("position") or item.get("rank") or index,
            "title": clean_text(item.get("title")),
            "url": url,
            "domain": get_domain(url),
            "snippet": clean_text(item.get("snippet") or item.get("description"))
        })

    return rows


def export_to_csv(rows, filename="google_serp_results.csv"):
    if not rows:
        print("No organic results found.")
        return

    with open(filename, mode="w", newline="", encoding="utf-8") as file:
        writer = csv.DictWriter(file, fieldnames=CSV_COLUMNS)
        writer.writeheader()
        writer.writerows(rows)

    print(f"Exported {len(rows)} results to {filename}")


if __name__ == "__main__":
    query = "best project management software"

    serp_json = search_google(
        query=query,
        location="United States",
        language="en",
        country="us"
    )

    rows = extract_organic_results(serp_json, query)
    export_to_csv(rows)

执行后会得到:

google_serp_results.csv

Example Output

CSV 可能像这样:

query,position,title,url,domain,snippet
best project management software,1,Example Title,https://example.com,example.com,Short search snippet...
best project management software,2,Another Result,https://example.org,example.org,Another snippet...

接下来可以把结果发送到 database、Google Sheets、Notion、Slack 或 AI workflow。

常用参数

多数 Google SERP scraping workflow 会用到这些参数:

Parameter

Meaning

engine

Search engine,例如 google

q

Search query

location

Target location

gl

Country or market

hl

Language

device

Desktop or mobile

num

Number of results

start

Pagination offset

locationglhl 要特别注意。Google results 会因 country、city、language 和 device 有明显差异。

常见使用场景

SEO rank tracking

定期跑同一组 keywords,保存 ranking position、domain、title、URL 和 snippet,再比较变化。

Competitor monitoring

追踪哪些 competitor domains 出现在 top 10,也可以监测 title、snippet 和 landing page 的变化。

Content research

采集某个 topic 的 top-ranking pages,按 page type、domain、title pattern 和 search intent 分组。

AI and RAG workflows

把 Google SERP results 当成 discovery layer。SERP API 找到 current URLs 和 snippets,你的应用再抓取 full pages、切分 content,最后把选中的文字传给 LLM。

Talordata 产品页也将 AI search and agent integration 列为 real-time SERP data 的使用场景,包括 RAG pipelines 和 AI agents。

Best Practices

开发阶段保留 raw responses,方便 debug missing fields。

先 normalize 再存储,不要让 dashboard 直接依赖 raw API response。

保存 timestamps。Search results 会变,production 中每条 row 都应该有 collection time。

分离 discovery 和 page extraction。SERP data 告诉你什么正在排名,full-page extraction 才告诉你页面实际写了什么。

遵守合规要求。Talordata 说明其 SERP API 是围绕 publicly available search-result data 设计,但用户仍应确认自己的使用方式符合 applicable laws、search engine terms 和 internal compliance rules。

FAQ

可以用 Python 采集 Google Search results 吗?

可以。你可以用 Python 搭配 Google SERP API 发送 query,并获取 structured results。使用 Talordata 时,可以请求 Google results,然后提取 organic titles、URLs、snippets 和 ranking positions。

为什么不用手动抓取 Google?

手动抓取通常需要处理 page rendering、anti-bot checks、changing HTML 和 parsing。Talordata 返回 structured SERP data,让你把精力放在 analysis 和 automation 上。

Google SERP results 可以采集哪些数据?

常见数据包括 title、URL、snippet、ranking position、domain、ads、related questions、local results 和其他 SERP features,具体取决于 search type。

可以把 Google SERP API results 导出为 CSV 吗?

可以。收到 SERP API 的 JSON 后,可以 normalize organic results,然后用 Python 内置的 csv module 写入 CSV。

可以用于 AI agents 或 RAG 吗?

可以。Google SERP data 可以作为 AI agents 和 RAG workflows 的 live discovery layer。可以先用 SERP results 找到 current URLs,再根据需要抓取和处理页面内容。

Scale Your Data
Operations Today.

Join the world's most robust proxy network.

Start Free Trial