वापस ब्लॉग पर

गूगल सर्च एपीआई के साथ पायथन में रैंक ट्रैकर कैसे बनाएँ

Isabella Garcia
Isabella Garcia

Web Data Collection Specialist

16-Sep-2026

TL;DR:

  • एक रैंक ट्रैकर एक समय-श्रृंखला पाइपलाइन है, न कि एक एसईआरपी अनुरोध। इसे क्वेरी, स्थान, भाषा, डिवाइस, खोज डोमेन, अवलोकन समय, रैंकिंग यूआरएल और स्थिति को संरक्षित करना चाहिए।
  • कच्चे एसईआरपी अवलोकनों की आवश्यकता होने पर एक सर्च एपीआई का उपयोग करें। जब आपको कीवर्ड खोज, रिपोर्टिंग, अलर्ट और क्लाइंट वर्कफ़्लो की भी आवश्यकता होती है, तो एक पूर्ण एसईओ प्लेटफ़ॉर्म का उपयोग करें।
  • लक्ष्य डोमेन से मिलान करने से पहले होस्टनेम को सामान्य बनाएं। www.example.com, स्कीम में भिन्नताएं, पथ, और उपडोमेन को एक स्पष्ट नीति के अनुसार मानें।
  • “रैंक नहीं किया गया” को डेटा के रूप में रिकॉर्ड करें। अनुपस्थिति को स्थिति शून्य में परिवर्तित न करें, और कल की स्थिति को आगे न बढ़ाएं।
  • रैंकिंग यूआरएल को रैंक के साथ स्टोर करें। एक डोमेन अपनी स्थिति बनाए रख सकता है जबकि लैंडिंग पृष्ठ बदलता है।
  • स्क्रेपलेस गूगल सर्च एपीआई संरचित खोज डेटा लौटाता है। नीचे दी गई पायथन कार्यान्वयन एसईआरपी का अनुरोध करता है, जैविक परिणामों का पार्स करता है, और केवल जोड़ने वाले सीएसवी स्नैपशॉट लिखता है।

एक रैंक ट्रैकर वास्तव में क्या मापता है

एक रैंक ट्रैकर यह देखता है कि एक लक्ष्य डोमेन एक विशिष्ट समय पर एक विशिष्ट खोज परिणाम सेट में कहाँ दिखाई देता है।

यह परिभाषा जानबूझकर संकीर्ण है। स्थिति क्वेरी, देश या स्थान, भाषा, Google डोमेन, डिवाइस, परिणाम प्रकार, और पृष्ठांकन गहराई पर निर्भर करती है। एक आयाम बदलें और अवलोकन एक अलग श्रृंखला में आता है।

एक विश्वसनीय रिकॉर्ड में कम से कम शामिल होना चाहिए:

  • कीवर्ड
  • लक्ष्य डोमेन
  • अवलोकित स्थिति या एक स्पष्ट न-रेटेड स्थिति
  • रैंकिंग यूआरएल
  • परिणाम शीर्षक
  • देश या स्थान सेटिंग
  • भाषा
  • डिवाइस
  • Google डोमेन
  • अवलोकन टाइमस्टैम्प

ट्रैकर कभी भी यह संकेत नहीं देना चाहिए कि एक नमूना एसईआरपी एक सार्वभौमिक रैंक है। व्यक्तिगतकरण, प्रयोग, अनुक्रमणिका परिवर्तन, और क्षेत्रीय भिन्नताएँ खोज का हिस्सा हैं।

सर्च एपीआई बनाम रैंक-ट्रैकिंग प्लेटफ़ॉर्म

एक सर्च एपीआई और एक रैंक-ट्रैकिंग प्लेटफ़ॉर्म संबंधित लेकिन अलग कार्यों को हल करते हैं।

आवश्यकता सर्च एपीआई रैंक-ट्रैकिंग प्लेटफ़ॉर्म
कच्चे जैविक परिणाम रिकॉर्ड मजबूत फिट आमतौर पर प्लेटफॉर्म मॉडल के माध्यम से उपलब्ध
कस्टम मिलान लॉजिक पूर्ण नियंत्रण प्लेटफॉर्म पर निर्भर करता है
अपनी डेटाबेस और डैशबोर्ड आप इसे बनाते हैं अक्सर शामिल
कीवर्ड खोज अलग कार्यप्रवाह अक्सर शामिल
व्हाइट-लेबल रिपोर्ट आप उन्हें बनाते हैं अक्सर शामिल
असामान्य सैंपलिंग अनुसूची पूर्ण नियंत्रण योजना-निर्भर
आंतरिक डेटा के साथ एकीकरण प्रत्यक्ष निर्यात या एपीआई-निर्भर

जब रैंक अवलोकन एक आंतरिक उत्पाद, प्रयोग, या डेटा वेयरहाउस के लिए एक इनपुट हैं, तो एक एपीआई चुनें। जब विश्लेषकों को तैयार интерфेस और रिपोर्टिंग कार्यप्रवाह की आवश्यकता होती है, तो एक प्लेटफॉर्म चुनें।

गूगल सर्च एपीआई अनुरोध मॉडल

स्क्रेपलेस Google सर्च एपीआई खोज मापदंडों को स्वीकार करता है और संरचित डेटा लौटाता है। वर्तमान Google सर्च एपीआई दस्तावेज़ीकरण आम मापदंडों को दस्तावेज़ित करता है जिसमें क्वेरी, देश, भाषा, Google डोमेन, परिणाम प्रकार, ऑफसेट, और परिणाम गिनती शामिल हैं।

उत्पाद कॉपी में ग्राहकों का वर्तमान नाम, Google सर्च एपीआई, का उपयोग करें। स्थिर अभिनेता नाम और एपीआई मार्ग पुराने आंतरिक नामांकन को बनाए रख सकते हैं।

इस मार्गदर्शिका द्वारा उपयोग किया गया अनुरोध POST से /api/v1/scraper/request के लिए है जिसमें अभिनेता scraper.google.search है। प्रमाणीकरण x-api-token हेडर में होना चाहिए। इनपुट क्वेरी और खोज सेटिंग्स को एक साथ रखता है ताकि हर प्रतिक्रिया को इसके सैंपलिंग कॉन्फ़िगरेशन से ट्रेस किया जा सके।

ट्रैकर को पायथन में बनाएँ

नीचे दिया गया स्क्रिप्ट चार कार्य करता है:

  1. प्रति कीवर्ड एक Google सर्च एपीआई अनुरोध भेजता है;
  2. पहले जैविक परिणाम को ढूंढता है जिसका होस्टनेम लक्ष्य नीति से मेल खाता है;
  3. केवल जोड़ने वाले सीएसवी स्नैपशॉट को लिखता है;
  4. जब लक्ष्य नहीं मिलता है तो एक खाली स्थिति और यूआरएल बनाए रखता है।

पूर्वापेक्षा: लाइव अनुरोध के लिए SCRAPELESS_API_KEY में एक स्क्रेपलेस एपीआई कुंजी की आवश्यकता होती है। मिलान, सामान्यकरण, और सीएसवी लॉजिक को प्रमाणीकृत अनुरोध करने से पहले एक सहेजी गई प्रतिक्रिया फ़िक्सचर के साथ स्थानीय रूप से परीक्षण किया जा सकता है।

python Copy
import csv
import os
from datetime import datetime, timezone
from pathlib import Path
from urllib.parse import urlparse, urlunsplit

import requests

API_URL = "https://api.scrapeless.com/api/v1/scraper/request"


def normalized_host(value: str) -> str:
    candidate = value if "://" in value else urlunsplit(("https", value, "", "", ""))
    host = (urlparse(candidate).hostname or "").lower().rstrip(".")
    return host.removeprefix("www.")


def host_matches(result_url: str, target_domain: str, include_subdomains=True) -> bool:
    result_host = normalized_host(result_url)
    target_host = normalized_host(target_domain)
    if not result_host or not target_host:
        return False
    return result_host == target_host or (
        include_subdomains and result_host.endswith(f".{target_host}")
    )


def organic_results(payload: dict) -> list[dict]:
    if isinstance(payload.get("organic_results"), list):
        return payload["organic_results"]
    data = payload.get("data", {})
    if isinstance(data, dict) and isinstance(data.get("organic_results"), list):
        return data["organic_results"]
    return []


def find_rank(payload: dict, target_domain: str) -> dict:
    for fallback_position, item in enumerate(organic_results(payload), start=1):
        url = item.get("link") or item.get("url") or ""
        if host_matches(url, target_domain):
            return {
                "position": item.get("position", fallback_position),
                "ranking_url": url,
                "title": item.get("title", ""),
            }
    return {"position": None, "ranking_url": "", "title": ""}


def fetch_serp(keyword: str, *, gl="us", hl="en", device="desktop") -> dict:
    api_key = os.environ["SCRAPELESS_API_KEY"]
    response = requests.post(
        API_URL,
        headers={"x-api-token": api_key, "Content-Type": "application/json"},
        json={
            "actor": "scraper.google.search",
            "input": {
                "q": keyword,
                "gl": gl,
                "hl": hl,
                "google_domain": "google.com",
                "device": device,
                "start": 0,
            },
        },
        timeout=60,
    )
    response.raise_for_status()
    return response.json()


def append_snapshot(path: Path, row: dict) -> None:
    fields = [
        "observed_at", "keyword", "target_domain", "position",
        "ranking_url", "title", "gl", "hl", "device", "google_domain",
    ]
    exists = path.exists()
    with path.open("a", newline="", encoding="utf-8") as handle:
        writer = csv.DictWriter(handle, fieldnames=fields)
        if not exists:
            writer.writeheader()
        writer.writerow(row)


def track(keyword: str, target_domain: str, output="rank_history.csv") -> dict:
    settings = {"gl": "us", "hl": "en", "device": "desktop"}
    payload = fetch_serp(keyword, **settings)
    match = find_rank(payload, target_domain)
    row = {
        "observed_at": datetime.now(timezone.utc).isoformat(),
        "keyword": keyword,
        "target_domain": normalized_host(target_domain),
        "position": match["position"] or "",
        "ranking_url": match["ranking_url"],
        "title": match["title"],
        **settings,
        "google_domain": "google.com",
    }
    append_snapshot(Path(output), row)
    return row


if __name__ == "__main__":
    print(track("web scraping api", "scrapeless.com"))

मानक-लाइब्रेरी urlparse दस्तावेज़ीकरण बताता है कि होस्टनेम पार्सिंग को स्ट्रिंग स्लाइसिंग के बजाय एक यूआरएल पार्सर का उपयोग करना चाहिए। स्क्रिप्ट केवल एक अग्रणी www. को हटाती है और वैकल्पिक रूप से उपडोमेन को स्वीकार करती है; एक मल्टी-ब्रांड डोमेन एस्टेट को ट्रैक करने से पहले उस नीति को समायोजित करें।

स्थिति पार्सर को मान्य करें

लाइव क्रेडिट का उपयोग करने से पहले, एक असली एपीआई प्रतिक्रिया को खाते से सहेजें और इसके खिलाफ पार्सर चलाएँ। इनमें से कम से कम ये फ़िक्स्चर शामिल करें:

फ़िक्स्चर अपेक्षित परिणाम
सटीक एपीएक्स डोमेन मैच किया गया
www. संस्करण मैच किया गया
अनुमत उपडोमेन मैच किया गया
दृश्यता डोमेन जैसे example.com.attacker.test मैच नहीं किया गया
विकृत या अनुपस्थित परिणाम URL मैच नहीं किया गया
लक्षित नमूनों के पृष्ठों से अनुपस्थित स्थिति खाली है; राज्य रैंक नहीं किया गया है

जब API एक स्पष्ट position फ़ील्ड प्रदान करता है तो सूची क्रम से स्थिति की गणना न करें, पहले पृष्ठ संख्याकरण को समझे बिना। एक बाद के परिणाम पृष्ठ पर, सूची अनुक्रमांक एक वैश्विक स्थिति एक नहीं है। प्रदान की गई स्थिति को बनाए रखें या जानबूझकर पृष्ठ ऑफ़सेट जोड़ें।

इतिहास को फिर से लिखे बिना संग्रहित करें

केवल जोड़ने वाले स्नैपशॉट ऑडिट करने में सरल होते हैं एक बदलने वाले “वर्तमान रैंक” तालिका की तुलना में। एक बाद का रूपांतरण प्रत्येक कुंजीशब्द और बाजार के लिए नवीनतम पंक्ति का चयन कर सकता है।

CSV एक व्यक्तिगत ट्रैकर के लिए काम करता है। एक उत्पादन सेवा को एक डेटाबेस कुंजी का उपयोग करना चाहिए जो कुंजीशब्द, डोमेन, देश या स्थान, भाषा, उपकरण, Google डोमेन, और अवलोकन समय को अलग करता है। SQLite तालिका दस्तावेज़ एक संक्षिप्त स्थानीय सेवा के लिए पर्याप्त है; एक भंडार तब उपयोगी हो जाता है जब श्रृंखला डैशबोर्ड और अलर्ट को खिलाती है। यहां उपयोग की गई होस्टनेम नीति के अलावा URL पहचान नियमों के लिए, URI सामान्य मार्कअप मानक पर संपर्क करें।

position और ranking_url दोनों को बनाए रखें। ये परिवर्तन अलग-अलग अर्थ रखते हैं:

  • स्थिति में बदलाव, URL अपरिवर्तित: वही लैंडिंग पृष्ठ स्थानांतरित हुआ;
  • स्थिति अपरिवर्तित, URL में बदलाव: Google ने एक अलग पृष्ठ चुना;
  • स्थिति खाली: डोमेन नमूना परिणाम गहराई के भीतर नहीं मिला;
  • डोमेन से कई URLs प्रकट होते हैं: सर्वोत्तम स्थिति संग्रहीत करें और वैकल्पिक रूप से प्रत्येक मेल को विवरण तालिका में बनाए रखें।

भौगोलिक, भाषा, उपकरण, और समय को संभालें

खोज सेटिंग्स को आयामों के रूप में मानें, न कि बाद में जोड़े गए वैकल्पिक लेबल के रूप में।

  • gl एक देश संदर्भ को इंगीत करता है।
  • hl इंटरफेस भाषा को नियंत्रित करता है।
  • google_domain Google प्रॉपर्टी को चुनता है।
  • device समर्थित होने पर डेस्कटॉप और मोबाइल अवलोकनों को अलग करता है।
  • एक सटीक स्थान सेटिंग एक देश की तुलना में एक बाजार को और संकीर्णता से मॉडल कर सकती है।
  • टाइमस्टैम्प को संग्रहण में UTC का उपयोग करना चाहिए और केवल प्रदर्शन के लिए परिवर्तित होना चाहिए।

एक शहर-स्तरीय श्रृंखला को समान चार्ट रेखा के तहत एक देश-स्तरीय श्रृंखला के साथ न मिलाएं। इसी तरह, एक मोबाइल परिणाम को चुपचाप एक डेस्कटॉप अवलोकन के स्थान पर नहीं रखना चाहिए।

नमूनाकरण का समय भी महत्वपूर्ण है। एक सीमित विंडो में समान कुंजीशब्द समूह चलाएँ। यदि एक बैच कई घंटों में फैला हुआ है, तो पूरे कार्य के लिए एक तारीख के बजाय प्रत्येक अनुरोध का टाइमस्टैम्प संग्रहीत करें।

बेजान कीमत प्रकाशित किए बिना लागत की गणना करें

स्थिर गणना कॉपी किए गए योजना राशि की तुलना में अधिक उपयोगी है:

monthly requests = keywords × markets × devices × pages sampled × runs per month

फिर वर्तमान खाता दर और विफलता-प्रबंधन नीति को लागू करें। योजनाबद्ध अनुरोधों को दोहराए गए और विफल प्रयासों से अलग करें ताकि संचालन टीम चालान को स्पष्ट कर सके। कार्यान्वयन समय पर Scrapeless मूल्य निर्धारण की जाँच करें, न कि एक संख्या को एम्बेड करें जो पहले कोड से बूढ़ी हो सकती है।

Scrapeless के साथ स्क्रैपिंग शुरू करें

Scrapeless के साथ अपने वेब स्क्रैपिंग और स्वचालन कार्यप्रवाह को शक्ति दें!
आज साइन अप करें और $5 का मुफ्त क्रेडिट प्राप्त करें — क्रेडिट कार्ड की आवश्यकता नहीं

Scrapeless डैशबोर्ड में अभी अपना मुफ्त क्रेडिट प्राप्त करें।

उत्पादन चेकलिस्ट

  • पार्सर द्वारा उपभोग किए गए फ़ील्ड के लिए एक स्कीमा अनुबंध पिन करें।
  • API कुंजी को एक गोपनीय प्रबंधक या पर्यावरण चर में रखें।
  • अस्थायी सेवा विफलताओं के बाद केवल सीमित अनुरोधों को दोहराएं; अनंत लूप न बनाएं।
  • प्रत्येक अवलोकन के बगल में अनुरोध सेटिंग्स संग्रहीत करें।
  • अनुरोध विफल से न रैंक किए गए को अलग करें।
  • रैंकिंग URL को ट्रैक करें, केवल मात्रात्मक स्थिति नहीं।
  • पार्सर रिग्रेशन परीक्षणों के लिए एक संपादित प्रतिक्रिया फ़िक्स्चर को बनाए रखें।
  • लागू नियमों, गोपनीयता आवश्यकताओं, और स्थानीय कानून का सम्मान करें।
  • SEO आंदोलन पर अलर्ट करने से पहले गायब बैचों और स्कीमा की भिन्नता पर अलर्ट करें।

निष्कर्ष

एक उपयोगी रैंक ट्रैकर एक अनुशासित अवलोकन प्रणाली है। Scrapeless Google Search API संरचित SERP रिकॉर्ड प्रदान करता है; मूल्य स्पष्ट मेल, पूर्ण खोज आयाम, केवल जोड़ने का इतिहास, और अनुपस्थित परिणामों के ईमानदार उपचार से आता है।

एक कुंजीशब्द, एक बाजार, एक उपकरण, और एक सत्यापित फ़िक्स्चर के साथ शुरू करें। एक बार श्रृंखला स्थिर हो जाए, बैच का विस्तार करें और CSV या डेटाबेस को डैशबोर्ड से जोड़ें। निकटतम कार्यप्रवाहों के लिए, Google Search API गाइड देखें।


अपना पहला SERP स्नैपशॉट बनाएं

प्रवर्तन सहायता और डेटा-नली पैटर्न के लिए Scrapeless समुदाय में शामिल हों: Discord · Telegram
एक मुफ्त खाता बनाएं app.scrapeless.com, एक सीमित क्वेरी चलाएं, और ट्रैकर को शेड्यूल करने से पहले सहेजे गए उत्तर को मान्य करें।


सामान्य प्रश्न

प्रश्न: रैंक ट्रैकर एपीआई क्या है?

एक रैंक ट्रैकर एपीआई सॉफ़्टवेयर को स्टोर और विश्लेषण करने के लिए खोज परिणाम या रैंक अवलोकन प्रदान करता है। एक SERP एपीआई कच्चे परिणाम रिकॉर्ड लौटाता है; एक समर्पित रैंक-ट्रैकिंग एपीआई परियोजनाएं, इतिहास, अलर्ट और रिपोर्ट भी प्रदान कर सकता है।

प्रश्न: मैं अपने डोमेन की स्थिति जैविक परिणामों में कैसे खोजूं?

प्रत्येक जैविक परिणाम URL को एक URL पार्सर के साथ पार्स करें, होस्टनेम को सामान्य बनाएं, एक स्पष्ट एपेक्स/सबडोमेन नीति लागू करें, और पहले मेल खाने वाले परिणाम की दी गई स्थिति लौटाएं। उपस्ट्रिंग मिलान से बचें।

प्रश्न: जब डोमेन अनुपस्थित हो तो मुझे कौन सी स्थिति स्टोर करनी चाहिए?

एक null या खाली स्थिति के साथ एक स्पष्ट नॉन-रैंक की स्थिति सहेजें जो नमूना गहराई के लिए हो। शून्य का उपयोग न करें और पिछले अवलोकन को आगे न बढ़ाएं।

प्रश्न: एक रैंक ट्रैकर को कितनी बार चलाना चाहिए?

डेटा द्वारा समर्थित निर्णय के आधार पर एक लय चुनें। सक्रिय SEO निगरानी के लिए दैनिक नमूना लेना सामान्य है, जबकि धीमी रणनीतिक रिपोर्टिंग के लिए कम की आवश्यकता हो सकती है। लगातार और तुलनीय सेटिंग अधिक महत्वपूर्ण होती हैं बजाय अधिकतम आवृत्ति के।

प्रश्न: क्या यह स्क्रिप्ट एक सार्वभौमिक गूगल रैंकिंग को साबित करती है?

नहीं। यह परिभाषित क्वेरी, बाज़ार, भाषा, डिवाइस, डोमेन, गहराई और समय सेटिंग्स के लिए एक संरचित अवलोकन रिकॉर्ड करती है। खोज परिणाम उस नमूना कॉन्फ़िगरेशन के बाहर भिन्न हो सकते हैं।

स्क्रैपलेस में, हम केवल सार्वजनिक रूप से उपलब्ध डेटा का उपयोग करते हैं, जबकि लागू कानूनों, विनियमों और वेबसाइट गोपनीयता नीतियों का सख्ती से अनुपालन करते हैं। इस ब्लॉग में सामग्री केवल प्रदर्शन उद्देश्यों के लिए है और इसमें कोई अवैध या उल्लंघन करने वाली गतिविधियों को शामिल नहीं किया गया है। हम इस ब्लॉग या तृतीय-पक्ष लिंक से जानकारी के उपयोग के लिए सभी देयता को कोई गारंटी नहीं देते हैं और सभी देयता का खुलासा करते हैं। किसी भी स्क्रैपिंग गतिविधियों में संलग्न होने से पहले, अपने कानूनी सलाहकार से परामर्श करें और लक्ष्य वेबसाइट की सेवा की शर्तों की समीक्षा करें या आवश्यक अनुमतियाँ प्राप्त करें।

सबसे लोकप्रिय लेख

सूची