Grok X खोज एपीआई: संरचित JSON के रूप में X (Twitter) पोस्ट डेटा कैप्चर करें
Advanced Data Extraction Specialist
TL;DR:
- Grok उत्तर X पोस्टों का हवाला देते हैं, और Scrapeless
scraper.grokअभिनेता उन पोस्टों को एक अलग संरचित ऐरे के रूप में वापस करता है।x_search_resultsweb_search_resultsके बगल में बैठता है उसी पेलोड में, इसलिए एक अनुरोध दोनों ओपन-व webb हवाले और X (Twitter) हवाले बिना किसी HTML पार्सिंग के प्राप्त करता है। - प्रत्येक X हवाले में ग्यारह कुंजियां होती हैं, जिनमें से सात हर कैप्चर में भरी हुई आईं।
post_id,user_name,name,text,create_time,view_count, औरprofile_image_urlसभी 167 पोस्ट इनट्रीज़ के लिए इस गाइड में गैर-खाली थीं;citation_id,community_note,parent, औरquoteउनमें से सभी में खाली थीं। - प्रॉम्प्ट नियंत्रण सतह है, खोज पैरामीटर नहीं। एक सामान्य परिभाषात्मक प्रश्न ने शून्य टूल कॉल और दो खाली पैनल लौटाए। प्रॉम्प्ट जो Grok को X की ओर इशारा करते हैं, 3 से 35 पोस्टों के बीच लौटाते हैं।
tool_usagesGrok द्वारा चलाए गए असली X क्वेरी को दर्शाता है। ऐरे टूल नाम और इसके तर्कों को रिकॉर्ड करता है, इसलिए आप प्राप्त पोस्टों को उत्पन्न करने वाले सटीक खोज स्ट्रिंग को पढ़ सकते हैं - जिसमेंfrom:,since:,until:, औरmin_faves:ऑपरेटर शामिल हैं।- पैनल का यह गारंटी नहीं है कि यह डुप्लिकेटेड है। ओवरलैपिंग टूल कॉल एक ही पोस्ट को दोहराने में सक्षम होते हैं, और कितनी बार यह कैप्चर के अनुसार बदलता है: सात कैप्चर में डुप्लिकेट शेयर 0% (18 प्रविष्टियाँ, 18 विशिष्ट
post_idमान) से 48% (25 प्रविष्टियाँ, 13 विशिष्ट) तक होती है। कुछ भी गिनने से पहले डुप्लिकेट हटाएँ: सात कैप्चर में से दो बिना किसी पुनरावृत्ति के आए, और प्रतिक्रिया में कुछ भी आपको यह नहीं बताता कि आपने किस प्रकार प्राप्त किया। - कारण बताने का मोड X स्रोत गहराई को नियंत्रित नहीं करता। एक ही प्रॉम्प्ट पर दो
MODEL_MODE_FAST/MODEL_MODE_EXPERTजोड़े उलट गए, इसलिए मोड को वोल्यूम डायल के बजाय एक तर्क सेटिंग के रूप में मानें। - शुरुआत करने के लिए मुफ़्त। नए Scrapeless खातों में मुफ्त ट्रायल क्रेडिट शामिल हैं - app.scrapeless.com पर साइन अप करें।
Grok से पूछें कि लोग एक दूरबीन लॉन्च के बारे में क्या पोस्ट कर रहे हैं, और उत्तर उसके नीचे X पोस्टों की एक सूची के साथ आता है। वे पोस्ट इस बात का प्रमाण हैं जो मॉडल ने चुना है, और Scrapeless scraper.grok अभिनेता उन्हें JSON पंक्तियों के रूप में लेखक हैंडल, टाइमस्टैम्प, दृश्य गणना, और पोस्ट IDs के साथ पहले से ही क्षेत्रों में विभाजित करके लौटाता है।
यह Grok के लिए X डेटा पहुंचाने का एक अलग मार्ग बनाता है जो सामान्य एक से अलग है। सामान्य दृष्टिकोण सीधे मंच से पोस्ट खींचता है और पूर्णता पर ध्यान केंद्रित करता है। इस गाइड में विपरीत दिशा को कवर किया गया है: एक उत्तर इंजन द्वारा हवाले किए गए पोस्टों को कैप्चर करना, जो एक छोटा और पहले से ही फ़िल्टर किया हुआ हिस्सा है, साथ ही वह क्वेरी जो मॉडल ने उन्हें खोजने के लिए उपयोग की।
यह गाइड अनुरोध आकार, X हवाले का सटीक फ़ील्ड स्कीमा, पैनल को व्यवस्थित करने के तरीके, और tool_usages ऐरे को कवर करती है जो दिखाती है कि Grok ने वास्तव में क्या खोजा। सामान्य अभिनेता अनुबंध के लिए — लिफाफा, मोड, साथी अभिनेता — देखें Grok scraper API guide।
What the Grok X Search API Gives You
एक अनुरोध Grok का उत्तर लौटाता है साथ ही इसके दो हवाला पैनल अलग-अलग ऐरे के रूप में। X पैनल वही है जिसके बारे में यह गाइड है।
- पोस्ट-स्तरीय पंक्तियाँ, न कि एक प्रस्तुत फीड। प्रत्येक प्रविष्टि एक वस्तु है जिसमें एक स्थिर
post_id, लेखक का हैंडल और डिस्प्ले नाम, पोस्ट पाठ, एक RFC 3339 टाइमस्टैम्प, और एक पूर्णांक के रूप में दृश्य संख्या होती है। - मॉडल की अपनी क्वेरी, रिकॉर्ड की गई।
tool_usagesउस खोज को सुरक्षित करता है जो Grok ने जारी की, इसलिए एक कैप्चर दोहराने योग्य और जांच योग्य है न कि एक काले बॉक्स। - एक कॉल से दोनों पैनल। एक प्रॉम्प्ट जो सामाजिक प्रतिक्रिया और आधिकारिक दस्तावेज को कवर करता है, उसी पेलोड में X पोस्ट और ओपन-व webb पृष्ठ लौटाता है, पहले से ही अलग किए गए।
- समय-सीमित हिस्से। चूंकि Grok अपनी X खोजों में दिनांक ऑपरेटरों को जोड़ता है, जो प्रॉम्प्ट एक विंडो का नाम लेते हैं उनमें उस विंडो के अंदर पोस्ट उत्पन्न होती हैं।
- खाता-स्कोप वाले कैप्चर। एक प्रॉम्प्ट जो एक खाते का नाम लेता है, एक X उपयोगकर्ता लुकअप के माध्यम से मार्गदर्शित करता है और उस खाते की हाल की पोस्टों को लौटाता है।
पैनल एक हवाला सेट है न कि एक पूर्ण अभिलेखागार। यह दर्शाता है कि एक उत्तर ने किन चीजों का हवाला दिया, जो हवाला ट्रैकिंग और भावना sampling के लिए संपूर्ण संग्रह की तुलना में बेहतर है।
Endpoint, Actor, and Parameters
- संकल्पनात्मक एंडपॉइंट:
POST https://api.scrapeless.com/api/v2/scraper/execute— ब्लॉक करता है और समाप्त परिणाम लौटाता है। - असिंक्रोनस एंडपॉइंट:
POST https://api.scrapeless.com/api/v2/scraper/requestएकtask_idलौटाता है;GET https://api.scrapeless.com/api/v2/scraper/result/{task_id}परिणाम लौटाता है जब यह तैयार हो जाता है। - अभिनेता:
scraper.grok - प्रमाण पत्र हैडर:
x-api-token: $SCRAPELESS_API_KEY
| इनपुट फ़ील्ड | आवश्यक | विवरण |
|---|---|---|
prompt |
हाँ | सवाल जो Grok को भेजा गया; यही वह है जो निर्धारित करता है कि क्या X पैनल भरता है |
country |
हाँ | रन के आवासीय निकास के लिए दो-अक्षर वाला देश कोड, उदाहरण के लिए US |
mode |
हाँ | तर्क गहराई — MODEL_MODE_FAST या MODEL_MODE_EXPERT |
इस गाइड के लिए कैप्चर लगभग 16 से 60 सेकंड में समाप्त हो गए। समकालिक एंडपॉइंट कमांड लाइन से जल्दी चेक करने के लिए उपयुक्त है। कुछ भी स्क्रिप्टेड के लिए, असमकालिक जोड़ी को प्राथमिकता दें: यह सबमिट कॉल का उत्तर HTTP 201 और एक task_id के साथ देता है, फिर यह HTTP सेमांटिक्स विनिर्देशन में परिभाषित 202 स्वीकृत स्थिति लौटाता है जबकि कार्य अभी भी चल रहा है और परिणाम तैयार होने पर 200 के साथ status: "success" लौटाता है। उस संक्रमण के लिए मतदान यह सुनिश्चित करता है कि क्लाइंट निश्चित हो चाहे कोई भी अंतराल लगे।
कोड के बजाय पर्यावरण में कुंजी रखें:
bash
export SCRAPELESS_API_KEY="your_api_token_here"
आपका पहला कैप्चर
यह अनुरोध एक खाता नामित करता है, जो पहले प्रयास में एक भरे हुए X पैनल प्राप्त करने का सबसे विश्वसनीय तरीका है। jq फ़िल्टर दो पैनल आकार और उपकरणों को मुद्रित करता है जो ग्रोक ने लागू किए।
bash
curl -sS -X POST https://api.scrapeless.com/api/v2/scraper/execute \
-H "Content-Type: application/json" \
-H "x-api-token: ${SCRAPELESS_API_KEY}" \
-d '{
"actor": "scraper.grok",
"input": {
"prompt": "What has @NASA posted on X recently?",
"country": "US",
"mode": "MODEL_MODE_FAST"
}
}' | jq '{
x_posts: (.task_result.x_search_results | length),
web_pages: (.task_result.web_search_results | length),
tools: [.task_result.tool_usages[].tool_name]
}'
उस अनुरोध का एक कैप्चर {"x_posts": 20, "web_pages": 0, "tools": ["x_keyword_search", "x_keyword_search"]} लौटाता है — बीस X पोस्ट, कोई ओपन-विवरण पृष्ठ, और दो कीवर्ड खोजें। गिनतियाँ रन के बीच बदलती हैं, इसलिए आकृति को अनुबंध के रूप में और संख्याओं को एक नमूने के रूप में मानें। यदि x_posts 0 है और tools खाली है, तो ग्रोक ने अपने स्वयं के ज्ञान से उत्तर दिया और कुछ भी नहीं खोजा — नीचे X पैनल को भरने के लिए देखें।
X पोस्ट स्कीमा, क्षेत्र दर क्षेत्र
x_search_results में प्रत्येक प्रविष्टि एक सपाट वस्तु है जिसमें समान ग्यारह कुंजियाँ हैं। यह ऊपर बताई गई @NASA अनुरोध का एक वास्तविक कैप्चर है:
json
// captured from a live scraper.grok run; a single x_search_results entry
{
"citation_id": "",
"community_note": "",
"create_time": "2026-08-06T11:00:59Z",
"name": "NASA",
"parent": null,
"post_id": "2085320225776427457",
"profile_image_url": "https://pbs.twimg.com/profile_images/1321163587679784960/0ZxKlEKB_normal.jpg",
"quote": null,
"text": "LIVE: Time for a spacewalk! Watch as @Astro_Jessica and @Astro_Anil step outside the @Space_Station to prepare the orbiting lab for a new solar array.",
"user_name": "NASA",
"view_count": 714862
}
इस गाइड के लिए कैप्चर किए गए 167 पोस्ट प्रविष्टियों में, फ़ील्ड्स साफ-सुथरे दो समूहों में बंट गए:
| फ़ील्ड | प्रकार | भरा हुआ | यह क्या रखता है |
|---|---|---|---|
post_id |
स्ट्रिंग | हमेशा | संख्यात्मक पोस्ट पहचानकर्ता, एक स्ट्रिंग के रूप में; स्वाभाविक प्राथमिक कुंजी |
user_name |
स्ट्रिंग | हमेशा | लेखक का हैंडल — @ नाम, @ के बिना |
name |
स्ट्रिंग | हमेशा | लेखक का डिस्प्ले नाम, जो अक्सर हैंडल से भिन्न होता है |
text |
स्ट्रिंग | हमेशा | पोस्ट सामग्री, जिसमें नए लाइन, उल्लेख, और t.co शॉर्टलिंक्स शामिल हैं |
create_time |
स्ट्रिंग | हमेशा | RFC 3339 दिनांक और समय प्रारूप में पोस्ट टाइमस्टैम्प, UTC, Z-स्यूफिक्स के साथ |
view_count |
पूर्णांक | हमेशा | संख्या के रूप में दृश्य गणना; कैप्चर के दौरान देखा गया रेंज 0 से 6,937,545 थी |
profile_image_url |
स्ट्रिंग | हमेशा | लेखक की अवतार, प्लेटफॉर्म की छवि CDN पर |
citation_id |
स्ट्रिंग | कभी नहीं | सभी 167 प्रविष्टियों में खाली स्ट्रिंग |
community_note |
स्ट्रिंग | कभी नहीं | सभी 167 प्रविष्टियों में खाली स्ट्रिंग |
parent |
नगर | कभी नहीं | सभी 167 प्रविष्टियों में null |
quote |
नगर | कभी नहीं | सभी 167 प्रविष्टियों में null |
चार कभी न भरे गए फ़ील्ड में एक चेतावनी होनी चाहिए। ये प्रत्येक प्रविष्टि में स्कीमा में मौजूद हैं, इसलिए उन्हें पढ़ने वाला कोड नहीं उठाएगा, लेकिन इस कैप्चर सेट में इनमें से कोई भी भरा नहीं गया। उन सात पर निर्माण करें जो भरे हुए आते हैं, और अन्य चार को एक उत्तर-थ्रेडिंग या कम्युनिटी नोट्स सुविधा के बजाय आरक्षित के रूप में मानें जिस पर आप भरोसा कर सकते हैं।
user_name और post_id मिलकर एक मानक पोस्ट URL को https://x.com/<user_name>/status/<post_id> के रूप में पुनर्निर्माण करते हैं, जो स्रोत के लिए एक लिंक रखने के लिए उपयोगी है।
मुफ्त योजना पर अपनी API कुंजी प्राप्त करें: app.scrapeless.com
क्वेरी पढ़ना जो वास्तव में ग्रोक ने चलाया
tool_usages वह फ़ील्ड है जो इस कैप्चर मार्ग को एक साधारण X खोज से अलग करता है। प्रत्येक प्रविष्टि एक उपकरण का नाम देती है और इसके तर्कों को एक JSON स्ट्रिंग के रूप में ले जाती है, इसलिए आप पीछे की ओर पढ़ सकते हैं कि वास्तव में क्या खोजा गया था।
python
import json
import os
import time
import requests
BASE = "https://api.scrapeless.com/api/v2/scraper"
HEADERS = {
"Content-Type": "application/json",
"x-api-token": os.environ["SCRAPELESS_API_KEY"],
}
def capture(prompt, country="US", mode="MODEL_MODE_FAST"):
"""Submit a Grok capture, then poll until the task_result is ready."""
submit = requests.post(
f"{BASE}/request",
headers=HEADERS,
json={
"actor": "scraper.grok",
"input": {"prompt": prompt, "country": country, "mode": mode},
},
timeout=60,
)
submit.raise_for_status()
task_id = submit.json()["task_id"]
for _ in range(120):
poll = requests.get(f"{BASE}/result/{task_id}", headers=HEADERS, timeout=60)
poll.raise_for_status()
body = poll.json()
if body.get("status") == "success":
return body["task_result"]
time.sleep(5)
raise TimeoutError(f"task {task_id} did not finish in the allotted window")
result = capture("Search X for posts from:NASA about Artemis since:2026-07-01 and summarize them.")
for call in result.get("tool_usages") or []:
print(call["tool_name"])
for key, value in json.loads(call["tool_args"]).items():
print(f" {key}: {value}")
print(f"x_search_results: {len(result.get('x_search_results') or [])}")
यह प्रॉम्प्ट दो X खोज ऑपरेटरों को एम्बेड करता है, और वे टूल कॉल में अपरिवर्तित रहते हैं:
text
x_keyword_search
query: from:NASA Artemis since:2026-07-01
limit: 10
mode: Latest
x_search_results: 3
प्रॉम्प्ट में आप जो ऑपरेटर लिखते हैं, वे क्वेरी में ऑपरेटर बनते हैं। कैप्चर के दौरान, ग्रोक ने from:, since:, until:, lang:, और min_faves: को अपने खोजों में संयोजित किया, साथ में mode के Top या Latest का। उनमें से कुछ प्लेटफ़ॉर्म के प्रकाशित खोज ऑपरेटर संदर्भ में मेल खाते हैं, जो from: और lang: को संलग्नता फ़िल्टर के साथ सूचीबद्ध करता है; दिनांक-बाउंडिंग since: और until: फ़ार्म खोज इंटरफ़ेस से आते हैं, न कि उस संदर्भ से। तीन अलग-अलग X उपकरण प्रकट हुए:
| उपकरण | अवलोकन किए गए तर्क | यह क्या करता है |
|---|---|---|
x_keyword_search |
query, limit, mode |
ऑपरेटर-चालित कीवर्ड खोज; mode Top या Latest का चयन करता है |
x_semantic_search |
query, limit, from_date, to_date, min_score_threshold |
एक तारीख विंडो में अर्थ-आधारित खोज |
x_user_search |
query, count |
खाता लुकअप, जब एक प्रॉम्प्ट एक हैंडल नामित करता है तब प्रयोग किया जाता है |
दो गैर-X उपकरणों में श्रृंखला साझा होती है: web_search के साथ query और num_results, और open_page के साथ url और start_line, जो web_search_results को भरता है।
हर कैप्चर के साथ tool_usages का लॉगिंग करना एक संग्रहीत परिणाम को कुछ ऐसा बना देता है जिसे आप बाद में समझा सकते हैं — जो पोस्ट आपने रखी हैं, और जो क्वेरी उन्हें खोजने में मदद करती है।
X पैनल को Populate करना
एक खाली x_search_results एक त्रुटि स्थिति नहीं है। इसका मतलब है कि ग्रोक ने X को खोजे बिना उत्तर दिया। यह भेद एक ही पेलोड में स्पष्ट है: जब पैनल खाली होता है क्योंकि कुछ खोजा नहीं गया है, tool_usages भी खाली है।
एक साधारण परिभाषात्मक प्रॉम्प्ट — "हेडलेस ब्राउज़र क्या है?" — ने शून्य उपकरण कॉल, शून्य X पोस्ट और शून्य वेब पृष्ठ लौटाए। हर प्रॉम्प्ट जो X की ओर इशारा करता है, पोस्ट लौटाता है। इस गाइड के लिए कैप्चर के पार मापी गई:
| प्रॉम्प्ट आकार | X पोस्ट | वेब पृष्ठ | उपकरणों को सक्रिय किया गया |
|---|---|---|---|
| साधारण परिभाषात्मक प्रश्न | 0 | 0 | कोई नहीं |
| "X पर लोग … के बारे में क्या कह रहे हैं" | 15 | 0 | कीवर्ड × 2, सामीकरण |
| "@account ने हाल ही में X पर क्या पोस्ट किया है" | 10 | 0 | कीवर्ड, उपयोगकर्ता |
| "X पर … में क्या ट्रेंड कर रहा है" | 10 | 10 | वेब, सामीकरण, कीवर्ड |
| स्पष्ट ऑपरेटर, "from:… since:… के लिए X खोजें" | 3 | 0 | कीवर्ड |
| सामाजिक प्रतिक्रिया और आधिकारिक स्रोत | 35 | 16 | वेब × 2, सामीकरण × 3, कीवर्ड × 4, open_page |
तीन प्रॉम्प्ट पैटर्न ने पैनल को निर्भरता के साथ भर दिया:
- प्लेटफॉर्म का नाम बताएं। प्रॉम्प्ट में "X पर" सबसे मजबूत एकल संकेत है।
- एक खाता नामित करें। एक हैंडल
x_user_searchके माध्यम से रूट करता है और उस खाते की पोस्ट लौटाता है। - प्रतिक्रिया, भावना, या चर्चा के लिए पूछें। ये ऐसे पोस्ट खींचते हैं जहां एक तथ्यात्मक प्रश्न खुली वेब से हल हो सकता है।
अंतिम पंक्ति कुछ ऐसा करती है जो अन्य नहीं करते। एक प्रॉम्प्ट जो सामाजिक प्रतिक्रिया और आधिकारिक स्रोत दोनों के लिए पूछती है, दोनों पैनल को भरती है, इसलिए एक कॉल वह लौटाती है जो लोग पोस्ट कर रहे हैं alongside प्रमुख स्रोत क्या कहता है।
Python में संरचित-आउटपुट हैंडलिंग
पैनल को उपयोग करने से पहले एक परिवर्तन की आवश्यकता है: डुप्लिकेशन। ओवरलैपिंग उपकरण कॉल एक ही पोस्ट को कई बार लौटा सकती है, इसलिए श्रृंखला की लंबाई विभिन्न पोस्टों की संख्या पर एक अधिकतम सीमा है न कि उनकी गिनती पर। कुछ कैप्चर बिना किसी पुनरावृत्ति के वापस आते हैं; दूसरों में उनके आधे प्रविष्टियाँ दोहराती हैं। चूंकि आप बिना जांचे नहीं जान सकते कि आपको कौन सा मिला है, सभी को बिना शर्त डुप्लिकेट करें।
python
import json
import os
import time
import requests
BASE = "https://api.scrapeless.com/api/v2/scraper"
HEADERS = {
"Content-Type": "application/json",
"x-api-token": os.environ["SCRAPELESS_API_KEY"],
}
def capture(prompt, country="US", mode="MODEL_MODE_FAST"):
"""Submit a Grok capture, then poll until the task_result is ready."""
submit = requests.post(
f"{BASE}/request",
headers=HEADERS,
json={
"actor": "scraper.grok",
"input": {"prompt": prompt, "country": country, "mode": mode},
},
timeout=60,
)
submit.raise_for_status()
task_id = submit.json()["task_id"]
print(f"submitted task_id={task_id}")
for _ in range(120):
poll = requests.get(f"{BASE}/result/{task_id}", headers=HEADERS, timeout=60)
poll.raise_for_status()
body = poll.json()
if body.get("status") == "success":
return body["task_result"]
time.sleep(5)
raise TimeoutError(f"task {task_id} did not finish in the allotted window")
def x_rows(task_result):
"""Flatten x_search_results into unique rows keyed by post_id."""
seen, rows = set(), []
for post in task_result.get("x_search_results") or []:
post_id = post.get("post_id")
if not post_id or post_id in seen:
continue
seen.add(post_id)
handle = post.get("user_name") or ""
rows.append(
{
"post_id": post_id,
"handle": handle,
"display_name": post.get("name") or "",
"posted_at": post.get("create_time") or "",
"views": post.get("view_count") or 0,
"text": " ".join((post.get("text") or "").split()),
"url": f"https://x.com/{handle}/status/{post_id}",
}
)
return rows
result = capture("What are people saying on X about the James Webb Space Telescope this week?")
rows = x_rows(result)
raw_count = len(result.get("x_search_results") or [])
print(f"raw={raw_count} unique={len(rows)}")
for row in sorted(rows, key=lambda r: r["views"], reverse=True)[:3]:
print(f"@{row['handle']} · {row['posted_at']} · {row['views']:,} views")
print(f" {row['text'][:100]}")
print(f" {row['url']}")
print(json.dumps(rows[:1], ensure_ascii=False, indent=2))
x_rows ठीक वही रूप लौटाता है जो एक तालिका या गोदाम कॉलम सेट चाहता है: एक स्पष्ट पोस्ट प्रति पंक्ति, एक हल करने योग्य URL, और एक पूर्णांक दृश्य संख्या जिस पर आप क्रमबद्ध कर सकते हैं। सूची साधारण JSON-सीरियलाईज़ेबल डिक्शनरी होती है, इसलिए यह सीधे एक DataFrame या एक इन्सर्ट स्टेटमेंट में जाती है।
views द्वारा क्रमबद्ध करना आमतौर पर सही कदम होता है, क्योंकि पैनल बहुत बड़े खातों को बहुत छोटे के साथ मिलाता है — एक कैप्चर सेट में देखी गई सीमा 0 से लेकर लगभग 7 मिलियन दृश्य तक थी वही प्रॉम्प्ट पर।
सामान्य डेटा-आकार की समस्याएँ
- श्रृंखला की लंबाई पोस्ट की गिनती नहीं है। गिनने या चार्टिंग करने से पहले
post_idपर डुप्लिकेट करें। सात कैप्चर के बीच मापी गई: 15 प्रविष्टियाँ / 13 अद्वितीय, 35 / 29, 34 / 31, 25 / 13, 15 / 14, और दो कैप्चर जो कुछ भी दोहराते नहीं थे (10 / 10 और 18 / 18)। डुप्लिकेट शेयर भविष्यवाणी के लिए स्थिर नहीं है — डुप्लिकेशन चरण को अनिवार्य रूप से बनाएं, क्योंकि कच्ची लंबाई पर आधारित एक शेयर-ऑफ-वॉयस संख्या हर खाते को अधिक बताती है जिसे दो उपकरण कॉल दोनों ने बाहर लाया। - चार फ़ील्ड संरचनात्मक रूप से मौजूद हैं लेकिन हमेशा खाली थे।
citation_id,community_note,parent, औरquoteहर प्रविष्टि पर दिखाई दिए और सभी 167 में खाली थे। उनके लिए उत्तर-थ्रेड या सामुदायिक नोट्स फीचर डिजाइन न करें बिना यह पुष्टि किए कि वे आपकी प्रॉम्प्ट्स के लिए populate होते हैं। view_countएक पूर्णांक है,post_idएक स्ट्रिंग है। यहाँ देखे गए पोस्ट पहचानकर्ता 2×10^18 तक चलते हैं, जो एक दोहरे-सटीक फ्लोट द्वारा सटीक रूप से दर्शाए जाने की सीमा से परे हैं — यही कारण है कि JSON विनियमन के संख्यात्मक पारस्परिकता पर दिशा-निर्देश कार्यान्वयन के बीच संख्यात्मक सटीकता पर भरोसा न करने की चेतावनी देता है।post_idको अंत से अंत तक पाठ के रूप में रखें; इसे फ्लोट में परिवर्तित करना पोस्ट आईडी के मूल्य को चुपचाप बदल देता है।- मोड एक वॉल्यूम डायल नहीं है। एक समान प्रांप्ट पर दो
FAST/EXPERTजोड़ियों ने 15 बनाम 20 पोस्ट, फिर 25 बनाम 15 लौटाए - क्रम उलट गया। पैनल का आकार एक ही सेटिंग की दो रनों के बीच अधिक भिन्न था। मेथोडोलॉजिकल स्थिरता के लिए एक ट्रैक की गई श्रृंखला में मोड को स्थिर रखें, न कि क्योंकि यह गहरे स्रोतों की गारंटी देता है। - एक समान प्रांप्ट हर बार एक अलग पैनल लौटाता है। ग्रोक हर रन के लिए अपने प्रश्न को फिर से तैयार करता है, इसलिए शब्दों में बदलाव होता है और परिणाम सेट भी। एक श्रृंखला पढ़ें न कि एकल कैप्चर, और
tool_usagesको स्टोर करें ताकि आप देख सकें कि कौन सी रन अलग प्रश्न पूछ रही थीं। - पैनल स्वतंत्र रूप से भरते हैं। एक प्रांप्ट X पैनल को भर सकता है और
web_search_resultsको खाली छोड़ सकता है, या दोनों को भर सकता है। एक दूसरे को संकेत करते हुए मानने के बजाय प्रत्येक ऐरे की लंबाई को अलग से जांचें।
निष्कर्ष
एक ग्रोक कैप्चर में X पैनल एक छोटा, अच्छी तरह से टाइप किया हुआ डेटासेट है जो एक उत्तर पेलोड के अंदर स्थित है। एक POST से scraper.grok के साथ एक प्रांप्ट जो X का नाम देता है, पोस्ट आईडी, हैंडल, डिस्प्ले नाम, पोस्ट टेक्स्ट, UTC टाइमस्टैम्प, और व्यू काउंट को सपाट JSON के रूप में लौटाता है - सात फ़ील्ड जो इस गाइड के लिए कैप्चर की गई हर एंट्री में भरी गई थीं। post_id पर डुप्लिकेट हटाएं, पहचानकर्ता को एक स्ट्रिंग के रूप में रखें, और tool_usages को लॉग करें ताकि हर स्टोर की गई पंक्ति उस प्रश्न को ले जाए जो इसे खोजा। परिणाम प्लेटफॉर्म का एक संकीर्ण टुकड़ा कवर करता है न कि इसका आर्काइव: वह पोस्ट जो एक उत्तर मशीन ने संदर्भित करने के योग्य माना, जिस खोज के साथ उन्हें सामने लाया गया।
ग्रोक उत्तरों से X उद्धरण कैप्चर करना शुरू करें
हमारी सामुदायिक में शामिल हों ताकि मुफ्त योजना का दावा कर सकें और उत्तर-इंजन पाइपलाइनों का निर्माण कर रहे डेवलपर्स के साथ नोट्स की तुलना कर सकें: डिस्कॉर्ड · टेलीग्राम.
app.scrapeless.com पर मुफ्त परीक्षण क्रेडिट के लिए साइन अप करें, फिर scraper.grok को उन खातों, विषयों, और विंडोज़ पर इंगित करें जिन्हें आपका मॉनिटरिंग प्रोग्राम ट्रैक करता है। यूनिवर्सल स्क्रेपिंग API पृष्ठ व्यापक अभिनेता परिवार को कवर करता है, और वर्तमान उपयोग स्तर प्राइसिंग पृष्ठ पर हैं।
सामान्य प्रश्न
प्रश्न: क्यों x_search_results मेरी अनुरोध पर खाली है?
क्योंकि ग्रोक ने X को खोजे बिना उत्तर दिया। उसी पेलोड में tool_usages की जांच करें: यदि यह भी खाली है, तो कोई खोज नहीं चली। प्रांप्ट जो प्लेटफॉर्म का नाम देते हैं ("X पर"), एक खाते का नाम देते हैं, या प्रतिक्रिया और चर्चा के बारे में पूछते हैं, इस गाइड के लिए हर कैप्चर में पैनल को भरते हैं, जबकि एक साधारण परिभाषात्मक प्रश्न ने शून्य उपकरण और शून्य पोस्ट लौटाए।
प्रश्न: प्रत्येक X पोस्ट में वास्तव में क्या फ़ील्ड होते हैं?
ग्यारह कुंजियाँ, जो हर एंट्री में मौजूद हैं। सात यहां कैप्चर की गई सभी 167 एंट्री में भरी गई थीं: post_id, user_name, name, text, create_time, view_count, और profile_image_url। शेष चार — citation_id, community_note, parent, और quote — हर एक में खाली थीं।
प्रश्न: क्या मैं नियंत्रित कर सकता हूँ कि ग्रोक कौन सी X पोस्ट खोजता है?
हाँ, प्रांप्ट के माध्यम से। प्रांप्ट में लिखे गए खोज ऑपरेटर ग्रोक द्वारा जारी किए गए प्रश्न में प्रसारित होते हैं: एक प्रांप्ट जिसमें from:NASA और since:2026-07-01 शामिल हैं, ने उपकरण कॉल query: from:NASA Artemis since:2026-07-01 का उत्पादन किया। प्रत्येक रन के बाद tool_usages पढ़ें ताकि यह पुष्टि हो सके कि क्या खोजा गया था।
प्रश्न: मैं मूल पोस्ट के लिए लिंक को कैसे पुनः बनाएँ?
दो हमेशा-भरे हुए फ़ील्ड को मिलाएं: https://x.com/<user_name>/status/<post_id>। post_id को एक स्ट्रिंग के रूप में बनाए रखें - यह लंबा है और यदि एक JSON पार्सर इसे एक फ्लोटिंग-पॉइंट नंबर के रूप में पढ़ता है तो सटीकता खोने के लिए काफी लंबा है।
प्रश्न: क्या MODEL_MODE_EXPERT MODEL_MODE_FAST की तुलना में अधिक X पोस्ट लौटाता है?
नहीं, निर्भरता से। एक समान प्रांप्ट पर दो जोड़ी रनों ने FAST के तहत 15 पोस्ट और EXPERT के तहत 20 लौटाए, फिर FAST के तहत 25 और EXPERT के तहत 15। रन-से-रन विविधता मोड के बीच के अंतर से अधिक बड़ी थी। एक मोड चुनें और इसे स्थिर रखें ताकि एक ट्रैक की गई श्रृंखला तुलनीय बनी रहे।
प्रश्न: यह प्लेटफॉर्म से सीधे पोस्ट इकट्ठा करने से कैसे भिन्न है?
दायरा और चयन। यह मार्ग उन पोस्ट को लौटाता है जिन्हें एक उत्तर ने उद्धृत किया - एक संपादकीय रूप से फ़िल्टर किया गया नमूना, जो सामान्यतः 3 से 35 पोस्ट के बीच होता है, इसके मॉडल के प्रश्न के साथ संलग्न होता है। सीधी संग्रहता पूर्णता को लक्षित करती है। जब प्रश्न यह होता है कि एक उत्तर मशीन ने क्या प्रदर्शित किया और श्रेय दिया; एक समर्पित संग्रहण मार्ग का उपयोग करें जब आपको किसी हैशटैग या खाते का व्यापक कवरेज चाहिए।
प्रश्न: मुझे पोस्ट डेटा के बारे में क्या ध्यान में रखना चाहिए?
पोस्ट टेक्स्ट और लेखक नाम सार्वजनिक सामग्री हैं जो असली लोगों द्वारा लिखित हैं, इसलिए संग्रहीत कैप्चर को व्यक्तियों के बारे में एक डेटासेट के रूप में मानें। संग्रह को सीमित और उद्देश्यपूर्ण रखें, केवल उन क्षेत्रों को बनाए रखें जिन्हें आपके विश्लेषण की आवश्यकता है, और जांचें कि क्या ईयू सामान्य डेटा संरक्षण विनियमन या एक तुलनीय शासन आपके उपयोग पर लागू होता है, विशेष रूप से पोस्ट टेक्स्ट या प्रोफ़ाइल छवियों को पुन: प्रकाशित करने से पहले। प्लेटफ़ॉर्म के नियम डेटा-प्रोटेक्शन कानून से स्वतंत्र रूप से पुन: उपयोग को नियंत्रित करते हैं; दोनों की समीक्षा करें और अपने विशेष मामले के लिए वकील से परामर्श लें।
प्रश्न: क्या मुझे एक प्रॉक्सी की आवश्यकता है?
नहीं। देश-पिन किए गए आवासीय निकास अभिनेता में निर्मित हैं, और आवश्यक country इनपुट पूरी कॉन्फ़िगरेशन है।
स्क्रैपलेस में, हम केवल सार्वजनिक रूप से उपलब्ध डेटा का उपयोग करते हैं, जबकि लागू कानूनों, विनियमों और वेबसाइट गोपनीयता नीतियों का सख्ती से अनुपालन करते हैं। इस ब्लॉग में सामग्री केवल प्रदर्शन उद्देश्यों के लिए है और इसमें कोई अवैध या उल्लंघन करने वाली गतिविधियों को शामिल नहीं किया गया है। हम इस ब्लॉग या तृतीय-पक्ष लिंक से जानकारी के उपयोग के लिए सभी देयता को कोई गारंटी नहीं देते हैं और सभी देयता का खुलासा करते हैं। किसी भी स्क्रैपिंग गतिविधियों में संलग्न होने से पहले, अपने कानूनी सलाहकार से परामर्श करें और लक्ष्य वेबसाइट की सेवा की शर्तों की समीक्षा करें या आवश्यक अनुमतियाँ प्राप्त करें।



