गूगल लोकल स्क्रैपर एपीआई: लोकल पैक को JSON में बदलें
Web Data Collection Specialist
मुख्य निष्कर्ष:
- एक अनुरोध, एक अभिनेता। Scrapeless Scraper API गूगल के स्थानीय पैक को
scraper.google.searchअभिनेता के खिलाफ एकलPOSTमें बदल देता है। कोई ब्राउज़र नहीं, कोई मार्कअप पार्स करने की आवश्यकता नहीं। tbm: "lcl"स्विच है। इनपुट भेजें{ "q": "सैन फ्रांसिस्को में कॉफी की दुकाने", "tbm": "lcl" }और अभिनेता वेब SERP के बजाय मानचित्र-सक्षम व्यावसायिक लिस्टिंग लौटाता है।- संरचित फ़ील्ड, कच्चा HTML नहीं। उत्तर एक पार्स किया हुआ स्थानीय ऑब्जेक्ट है —
local_results.places[]जिसमें शीर्षक, रेटिंग, समीक्षा संख्या, पते, मूल्य स्तर, और फोटो थंबनेल हैं — शीर्ष स्तर पर समतल किया गया है। - फ़िल्टर चिप्स भी आएंगे।
suggested_searches"अब खोलें / शीर्ष रेटेड / सस्ता" चिप्स को तैयार-से-फॉलो गूगल URLs के रूप में ले जाता है, ताकि आप बिना उसे फिर से बनाने के उसी क्वेरी को बदल सकें। - कोई प्रॉक्सी नहीं, आपकी ओर से कोई एंटी-बॉट हैंडलिंग नहीं। आवासीय ईग्रेस, जियो-राउटिंग, और रेंडरिंग सर्वर-साइड पर चलते हैं; आप क्वेरी भेजते हैं और JSON पढ़ते हैं।
- शुरू करने के लिए मुफ्त। नए Scrapeless खातों में मुफ्त Scraper API क्रेडिट शामिल हैं — app.scrapeless.com पर साइन अप करें।
परिचय: गूगल स्थानीय पैक को JSON में बदलें
गूगल स्थानीय पैक वह व्यवसाय लिस्टिंग का सेट है जो स्थानीय खोज के शीर्ष पर होता है — मानचित्र-सक्षम कार्ड जो गूगल तब दिखाता है जब कोई "सैन फ्रांसिस्को में कॉफी की दुकाने" या "मेरे निकट प्लंबर" खोजता है। प्रत्येक कार्ड में एक नाम, श्रेणी, स्टार रेटिंग, समीक्षा संख्या, पता, और मूल्य स्तर होता है। यह वह सतह है जिस पर स्थानीय-इरादा वाले खोज परिणाम वास्तव में क्लिक करते हैं, जो इसे बहुत सारे व्यावहारिक काम के पीछे का डेटा सेट बनाता है:
- स्थानीय रैंक ट्रैकिंग — देखें कि कौन सी व्यवसाय दिए गए शहर में एक क्वेरी के लिए 1 से N तक के पदों पर हैं।
- प्रतिस्पर्धात्मक निगरानी — समय के साथ एक प्रतियोगी की रेटिंग और समीक्षा संख्या को ट्रैक करें।
- लीड सूचियाँ — श्रेणी-प्लस-स्थानीयता क्वेरी के लिए रैंकिंग वाले व्यवसायों को एक संरचित तालिका में खींचें।
- समीक्षा और भावना सैंपलिंग — प्रत्येक कार्ड एक प्रतिनिधि समीक्षा स्निपेट को सतह पर लाता है जिसे आप पैमाने पर एकत्र कर सकते हैं।
- बाजार का आकार — गिनें कि एक प्रकार के कितने व्यवसाय एक मेट्रो में रैंक करते हैं और उनकी रेटिंग कैसे क्लस्टर होती है।
हाथ से उस पैक को खींचना यानी एक जावास्क्रिप्ट-भारी खोज पृष्ठ को रेंडर करना, गूगल की दर-सीमा को पार करना, और उस मार्कअप के खिलाफ चयनकर्ता लिखना जो बदलता है। Scraper API ये सभी तीन बातें सर्वर-साइड करता है और आपको पार्स किया हुआ ऑब्जेक्ट देता है।
Scraper API क्यों
एक पारंपरिक स्थानीय स्क्रैपर तीन कामों को एक साथ जोड़ना है: एंटी-बॉट परत को पार करना, पृष्ठ को रेंडर करना, और कार्ड्स को पार्स करना। Scrapeless Scraper API इन्हें एक कॉल में समाहित करता है। आप scraper.google.search अभिनेता का नाम देते हैं, उसे एक क्वेरी और tbm: "lcl" सौंपते हैं, और पार्स किया हुआ स्थानीय पैक वापस पाते हैं।
- कोई ब्राउज़र नहीं, कोई पार्सर बनाए रखने की आवश्यकता नहीं। अभिनेता गूगल के स्थानीय परिणामों को रेंडर और पार्स करता है; आप फील्ड प्राप्त करते हैं, न कि वाक्य संरचना को चलाने के लिए।
- आवासीय ईग्रेस और जियो-राउटिंग अंतर्निर्मित हैं। आप क्वेरी स्ट्रिंग भेजते हैं; अभिनेता नेटवर्क परत और जावास्क्रिप्ट रेंडर को संभालता है।
- एक कुंजी, एक आकार। एकल
x-api-tokenकॉल को प्रमाणित करता है, और स्थानीय पैक हमेशा एक ही पार्स किए गए आकार में वापस आता है, इसलिए एक बार लिखी गई क्लाइंट को क्वेरी और शहरों के बीच पुन: उपयोग किया जा सकता है।
अपने API कुंजी को मुफ्त योजना पर प्राप्त करें app.scrapeless.com पर। गूगल स्थानीय पैक Deep SerpApi परिवार के अंदर है और मूल्य निर्धारण कैटलॉग में अन्य गूगल खोज सतहों के साथ है।
पूर्वापेक्षाएँ
- एक Scrapeless खाता और API कुंजी — app.scrapeless.com पर साइन अप करें।
- त्वरित परीक्षण के लिए
curl, या नीचे दिए गए क्लाइंट के लिए Python 3.10+। - HTTP और JSON से बुनियादी परिचितता।
अपनी कुंजी को वातावरण में स्टोर करें ताकि यह कभी भी कोड में न पहुंचे:
bash
export SCRAPELESS_API_KEY=your_api_token_here
अनुरोध
स्थानीय पैक v1 Scraper API अंत बिंदु और गूगल खोज अभिनेता का उपयोग करता है। स्थानीय पैक का चयन एक इनपुट फ़ील्ड है — tbm को lcl पर सेट किया गया है।
- अंत बिंदु:
POST https://api.scrapeless.com/api/v1/scraper/request - प्रमाणन: हेडर
x-api-token: $SCRAPELESS_API_KEY - अभिनेता:
scraper.google.search(tbm: "lcl"स्थानीय पैक का चयन करता है न कि वेब SERP)
अनुरोध शरीर है { "actor": "<name>", "input": { … } }:
json
{
"actor": "scraper.google.search",
"input": { "q": "सैन फ्रांसिस्को में कॉफी की दुकाने", "tbm": "lcl" }
}
| इनपुट फ़ील्ड | आवश्यक | विवरण |
|---|---|---|
q |
हां | स्थानीय खोज क्वेरी — सबसे प्र relevantes पैक के लिए एक शहर या स्थानीयता शामिल करें (जैसे सैन फ्रांसिस्को में कॉफी की दुकाने) |
tbm |
हां | स्थानीय पैक का चयन करने के लिए lcl पर सेट करें; वेब SERP प्राप्त करने के लिए इसे छोड़ें या इसे बदलें |
उदाहरण
सबसे तेज़ जांच एक curl है। यह अभिनेता और इनपुट को पोस्ट करता है, और पार्स की गई स्थानीय वस्तु को प्रिंट करता है:
bash
curl -sS -X POST https://api.scrapeless.com/api/v1/scraper/request \
-H "Content-Type: application/json" \
-H "x-api-token: $SCRAPELESS_API_KEY" \
-d '{
"actor": "scraper.google.search",
"input": { "q": "coffee shops in San Francisco", "tbm": "lcl" }
}'
Python में वही कॉल वातावरण से की को पढ़ती है और पार्स की गई प्रतिक्रिया लौटाती है:
python
import os
import json
import requests
ENDPOINT = "https://api.scrapeless.com/api/v1/scraper/request"
def scrape_local(query: str) -> dict:
resp = requests.post(
ENDPOINT,
headers={
"Content-Type": "application/json",
"x-api-token": os.environ["SCRAPELESS_API_KEY"],
},
json={"actor": "scraper.google.search", "input": {"q": query, "tbm": "lcl"}},
timeout=120,
)
resp.raise_for_status()
return resp.json()
if __name__ == "__main__":
data = scrape_local("coffee shops in San Francisco")
for place in data["local_results"]["places"]:
print(place["position"], place["title"], place["rating"], place["address"])
scraper.google.search शीर्ष स्तर पर पार्स की गई स्थानीय पैक को समतल करता है — इसे अनपैक करने के लिए कोई result लपेटन नहीं है। local_results.places[] सीधे पढ़ें।
अपनी एपीआई कुंजी मुफ्त योजना पर प्राप्त करें: app.scrapeless.com
आपको क्या मिलता है
अभिनेता सीधे पार्स की गई स्थानीय वस्तु लौटाता है, साथ में एक metadata लिफाफा जो संगृहीत प्रदर्शित HTML की ओर इशारा करता है। q: "coffee shops in San Francisco", tbm: "lcl" के लिए कैप्चर की गई रन में 20 रैंक वाले स्थान वापस आए:
json
// लाइव scraper.google.search (tbm: "lcl") रन से शीर्ष-स्तरीय आकार।
// थंबनेल base64 और अधिकांश places[] प्रविष्टियाँ काट दी गईं; फ़ील्ड मान असली हैं।
{
"local_results": {
"places": [
{
"position": 1,
"title": "The Coffee Berry SF",
"type": " Coffee shop",
"rating": 4.9,
"reviews": 588,
"reviews_original": "(588)",
"price": "$",
"address": "1410 Lombard St",
"phone": " $1–10 ",
"hours": "4.9(588) ",
"extensions": ["एस्प्रेस्सो अद्भुत था, और स्टाफ बहुत मित्रवत और स्वागत करने वाला था।"],
"thumbnail": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABA…",
"place_id": "",
"place_id_search": "",
"lsig": "",
"gps_coordinates": { "latitude": 0, "longitude": 0 }
},
{
"position": 8,
"title": "Delah Coffee",
"type": " Coffee shop",
"rating": 4.7,
"reviews": 1100,
"reviews_original": "(1.1K)",
"price": "$",
"address": "370 4th St",
"phone": "Curbside pickup",
"hours": "Dine-in",
"extensions": ["Dine-in", "Curbside pickup", "No-contact delivery"],
"thumbnail": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABA…",
"place_id": "",
"place_id_search": "",
"lsig": "",
"gps_coordinates": { "latitude": 0, "longitude": 0 }
}
]
},
"search_information": {
"query_displayed": "coffee shops in San Francisco",
"organic_results_state": "सटीक वर्तनी के लिए परिणाम",
"total_results": 0,
"time_taken_displayed": ""
},
"suggested_searches": [
{
"name": "अभी खोलें",
"q": "अभी खोलें coffee shops in San Francisco",
"link": "https://www.google.com/search?…&udm=1&q=coffee+shops+in+San+Francisco+open+now",
"uds": "",
"thumbnail": ""
}
],
"pagination": {},
"metadata": {
"engine": "google.search",
"rawUrl": "https://api.scrapeless.com/storage/scrapeless.scraper.google.search/…html"
}
}
प्रत्येक places[] कार्ड पर फ़ील्ड:
| फ़ील्ड | प्रकार | विवरण |
|---|---|---|
position |
संख्या | स्थानीय पैक में रैंक, 1-आधारित |
title |
स्ट्रिंग | व्यवसाय का नाम |
type |
स्ट्रिंग | व्यवसाय श्रेणी, जैसे Coffee shop (कच्चा मान अग्रणी स्पेस ले जाता है) |
rating |
संख्या | स्टार रेटिंग, जैसे 4.9 |
reviews |
संख्या | समीक्षाओं की गिनती जो एक पूर्णांक में सामान्यीकृत है, जैसे 588 (3.4K 3400 में परिवर्तित होता है) |
reviews_original |
स्ट्रिंग | समीक्षा की गिनती जैसा कि Google इसे दर्शाता है, जैसे (3.4K) |
price |
स्ट्रिंग | मूल्य श्रेणी, जैसे $ |
address |
स्ट्रिंग | सड़क का पता, जैसे 1410 Lombard St |
phone |
स्ट्रिंग | मुक्त-ढाँचे का कार्ड स्लॉट — नीचे नोट देखें |
hours |
स्ट्रिंग | मुक्त-ढाँचे का कार्ड स्लॉट — नीचे नोट देखें |
extensions |
स्ट्रिंग[] | एक प्रतिनिधि समीक्षा स्निपेट, या उन कार्डों के लिए सेवा-पर्याय सूची जो ऑर्डरिंग को सतह पर लाते हैं |
thumbnail |
स्ट्रिंग | स्थान की फोटो का इनलाइन data:image/jpeg;base64,… ब्लॉब |
place_id / place_id_search / lsig |
स्ट्रिंग | स्थान निर्दर्शक; इस कैप्चर में खाली |
gps_coordinates |
ऑब्जेक्ट | { अक्षांश, देशांतर }; इस कैप्चर में 0/0 |
कार्ड के चारों ओर शीर्ष-स्तरीय कुंजी:
| कुंजी | इसमें क्या है |
|---|---|
local_results.places[] |
रैंक की गई व्यापारी कार्ड |
search_information |
प्रश्न की गूंज और परिणाम की स्थिति |
suggested_searches[] |
स्थानीय फ़िल्टर चिप्स (अब खुला / शीर्ष रैंकित / सस्ता / उच्च श्रेणी / डिलीवरी) Google URL के रूप में |
pagination |
पेजिंग लिंक (इस प्रश्न के लिए खाली) |
metadata |
engine और rawUrl, प्रदर्शित HTML की एक संग्रहीत प्रति |
कैप्चर किए गए आकार से कुछ ईमानदार अवलोकन:
- ऑब्जेक्ट को समतल किया गया है।
local_results.places[]वह ऐरे है जिसे आप अनुक्रमित करते हैं - इसमें कोईresultलपेटन नहीं है, जैसे कि कुछ अन्य कार्यों में। reviewsऔरreviews_originalएक ही गणना को दो तरीकों से ले जाते हैं। एक गणित के लिए एक पूर्णांक है, और एक Google का प्रदर्शन स्ट्रिंग है ((3.4K))। उपयोग करें जो आपकी पाइपलाइन को आवश्यकता है।phoneऔरhoursट्रैक करते हैं कि Google प्रत्येक कार्ड स्लॉट में क्या प्रदर्शित करता है। कई स्थानीय कार्डों के लिए, यह एक मूल्य बैंड (" $1–10 ") या एक सेवा फ़्लैग (Curbside pickup,Dine-in) है, न कि एक शाब्दिक फोन नंबर या खोने के घंटे। दोनों को स्वतंत्र पाठ के रूप में मानें और उन पर भरोसा करने से पहले मान्य करें।extensionsकार्ड द्वारा शाखाएँ। अधिकांश कार्ड एकल समीक्षा अंश लौटाते हैं; आदेश विकल्पों वाले कार्ड सेवा सूची लौटाते हैं (Dine-in,Curbside pickup,No-contact delivery)। देखें कि आपको कौन सा मिला।- पहचान और समन्वय क्षेत्र खाली लौट सकते हैं।
place_id,place_id_search,lsig, औरgps_coordinatesस्कीमामे हैं लेकिन प्रत्येक कार्ड के लिए खाली या शून्य हो सकते हैं - अनुपस्थित क्षेत्रों को संगीत के रूप में व्यवहार करें। metadata.rawUrlआपका एस्केप हैच है। यदि आपको कभी कोई फ़ील्ड चाहिए जो पार्स किया गया ऑब्जेक्ट प्रदर्शित नहीं करता है, तो यह प्रदर्शित HTML को संग्रहीत करता है।
निष्कर्ष
Google स्थानीय पैक को स्क्रैप करना एक निर्णय और एक अनुरोध में घटित होता है: scraper.google.search कार्यकर्ता चुनें, { "q": "<query>", "tbm": "lcl" } अपने x-api-token के साथ भेजें, और local_results.places[] को पार्स किए गए JSON के रूप में वापस पढ़ें। प्रॉक्सी रोटेशन, जावास्क्रिप्ट रेंडर, और पार्स सभी सर्वर-दिशा में चलते हैं, इसलिए एक ही क्लाइंट किसी भी शहर या श्रेणी को प्रश्न धागे को बदलकर इंगित करता है। Google खोज के AI-उत्तर पक्ष के लिए, Google AI अवलोकन स्क्रैपर गाइड उसी तरह उत्तर ब्लॉक और उसके संदर्भों को कैप्चर करने के माध्यम से चलता है। q में स्थानीयता को पिन करें, tbm: "lcl" सेट रखें, और स्वतंत्र पाठ और पहचान क्षेत्रों को संगीत के रूप में मानें।
क्या आप अपने AI-सशक्त स्थानीय खोज पाइपलाइन बनाने के लिए तैयार हैं?
हमारे समुदाय में शामिल हों, निःशुल्क योजना का दावा करें और स्थानीय खोज पाइपलाइन बनाने वाले डेवलपर्स से जुड़ें: डिस्कॉर्ड · टेलीग्राम.
app.scrapeless.com पर निःशुल्क स्क्रैपर API क्रेडिट के लिए साइन अप करें, और अपने पाइपलाइन की जरूरत के लिए scraper.google.search कार्यकर्ता को प्रश्नों, शहरों और श्रेणियों पर निर्देशित करें।
सामान्यीय प्रश्न
प्रश्न: क्या Google लोकल को स्क्रैप करना कानूनी है?
स्थानीय पैक सार्वजनिक दृश्य डेटा है। नियम क्षेत्राधिकार और Google की सेवा की शर्तों के अनुसार भिन्न होते हैं, इसलिए संबंधित सेवा की शर्तों की समीक्षा करें और अपने उपयोग परामर्शदाता से परामर्श लें। GDPR या CCPA के तहत सुरक्षित व्यक्तिगत डेटा एकत्र न करें।
प्रश्न: क्या मुझे एक प्रॉक्सी की आवश्यकता है?
नहीं। आवासीय निकासी और भू-निर्देशन कार्यकर्ता में बनाए गए हैं - आप प्रश्न भेजते हैं, कार्यकर्ता नेटवर्क परत और रेंडर को संभालता है।
प्रश्न: tbm: "lcl" क्या करता है?
यह Google के स्थानीय पैक का चयन करता है - मानचित्र-सहायता व्यापारी सूची - वेब SERP के बजाय। इसे छोड़ दें या बदलें और वही कार्यकर्ता प्रश्न के लिए जैविक वेब परिणाम लौटाता है।
प्रश्न: कितने स्थान वापस आते हैं?
कार्यकर्ता उन कार्डों को लौटाता है जो Google प्रश्न के लिए रैंक करता है; "सैन फ्रांसिस्को में कॉफी की दुकानों" के लिए कैप्चर किया गया रन 20 लौटाया। यह संख्या प्रश्न, श्रेणी, और स्थानीयता के अनुसार भिन्न होती है।
प्रश्न: मैं विभिन्न शहर को कैसे लक्षित करूं?
स्थानीयता को q में डालें। कार्यकर्ता प्रश्न धागे को पढ़ता है, इसलिए कॉफी की दुकानें ऑस्टिन में या प्लंबर शिकागो में उस क्षेत्र के लिए स्थानीय पैक लौटाता है।
प्रश्न: यदि फ़ील्ड गायब है तो कच्चा HTML कहाँ है?
metadata.rawUrl रेंडर किए गए पृष्ठ की एक प्रति संग्रहीत करता है। इसका उपयोग करें किसी भी फ़ील्ड को पार्स करने के लिए जो कार्यकर्ता पार्स किए गए ऑब्जेक्ट में प्रदर्शित नहीं करता।
प्रश्न: क्या मैं बिना AI एजेंट या SDK के इसे चला सकता हूँ?
हां। यह साधारण HTTP है - curl, पायथन requests, नोड fetch, या कोई भी HTTP क्लाइंट सीधे काम करता है। SDK की आवश्यकता नहीं है।
स्क्रैपलेस में, हम केवल सार्वजनिक रूप से उपलब्ध डेटा का उपयोग करते हैं, जबकि लागू कानूनों, विनियमों और वेबसाइट गोपनीयता नीतियों का सख्ती से अनुपालन करते हैं। इस ब्लॉग में सामग्री केवल प्रदर्शन उद्देश्यों के लिए है और इसमें कोई अवैध या उल्लंघन करने वाली गतिविधियों को शामिल नहीं किया गया है। हम इस ब्लॉग या तृतीय-पक्ष लिंक से जानकारी के उपयोग के लिए सभी देयता को कोई गारंटी नहीं देते हैं और सभी देयता का खुलासा करते हैं। किसी भी स्क्रैपिंग गतिविधियों में संलग्न होने से पहले, अपने कानूनी सलाहकार से परामर्श करें और लक्ष्य वेबसाइट की सेवा की शर्तों की समीक्षा करें या आवश्यक अनुमतियाँ प्राप्त करें।



