DeepSeek स्क्रैपर API: JSON के रूप में उत्तर, तर्क, और स्रोत कैप्चर करें
Expert in Web Scraping Technologies
TL;DR:
scraper.deepseekअभिनेता एक प्रॉम्प्ट DeepSeek को भेजता है और JSON में उत्तर लौटाता है। दो आवश्यक इनपुट्स —promptऔरcountry— भेजे जाते हैं; एकtask_resultवस्तु जिसमें 21 फ़ील्ड शामिल हैं वापस आती है, जिसमें प्रदर्शितmarkdown, कच्चाhtml, और एक टोकन गणना शामिल है।- तर्क ट्रेसpayload में है, इसे छिपाया नहीं गया है।
thinking: trueभेजने पर उत्तर में एकTHINKटुकड़ा शामिल होता है जो DeepSeek की स्टेप-बाय-स्टेप योजना पाठ के साथ-साथ इसे व्यतीत किए गए सेकंड को लाता है। - दो बूलियन ध्वज उत्तर की आकृति को बदलते हैं, न कि केवल इसकी सामग्री।
thinkingऔरsearchप्रत्येक टुकड़ा प्रकार जोड़ते हैं; दोनों भेजने पर DeepSeek एक एजेंटिक अनुक्रम में चला जाता है जो खोजता है, व्यक्तिगत पृष्ठ खोलता है, और चरणों के बीच फिर से योजना बनाता है। - अनजान इनपुट कुंजियाँ स्वीकार की जाती हैं और बिना टिप्पणी किए छोड़ दी जाती हैं।
web_search,thinking_enabled,search_enabled, औरmodelसभी HTTP 201 लौटाते हैं और कुछ नहीं बदलते — जबकि गलत प्रकार के सही नाम की कुंजी 400 लौटाती है। एक अन्य अभिनेता से कैप्चर स्क्रिप्ट को पोर्ट करें और इसके झंडे रास्ते में गायब हो जाते हैं। - उद्धरण तीन विभिन्न एन्कोडिंग में आते हैं जो आपने भेजे गए झंडों पर निर्भर करते हैं। साधारण खोज मोड
[citation:N]मार्करों का उपयोग करता हैcite_indexके खिलाफ; एजेंटिक मोड[reference:N]मार्करों का उपयोग करता है ज़ीरो-बेस्ड बैक-पॉइंटर एरे के खिलाफ। यह गाइड दोनों को हल करने का तरीका दिखाती है। - शुरू करने के लिए स्वतंत्र। नए Scrapeless खातों में मुफ्त ट्रायल क्रेडिट शामिल हैं — app.scrapeless.com पर साइन अप करें।
परिचय: उत्तर केवल payload का आधा हिस्सा है
एक DeepSeek स्क्रैपर API के लिए खोजें और लगभग जो कुछ भी आप पाएंगे वह DeepSeek मॉडल को पहले से फ़ेच किए गए HTML पर इंगित करने के बारे में है। यह एक वास्तविक तकनीक है, और Scrapeless इसे DeepSeek वेब स्क्रैपिंग गाइड में कवर करता है। यह गाइड दूसरी दिशा में चलती है: DeepSeek स्रोत है, और डेटा जो आप चाहते हैं वह है जो DeepSeek कहता है जब कोई उसे प्रश्न पूछता है।
यह डेटा उसी कारण से महत्वपूर्ण है जिस कारण ChatGPT और Gemini के उत्तर महत्वपूर्ण हैं। जब एक खरीदार एक सहायक से पूछता है कि कौन सा उपकरण चुनना है, उत्तर और इसके पीछे के पृष्ठ एक मार्केट सिग्नल होते हैं। DeepSeek दो चीजें जोड़ता है जो अन्य सहायक आसानी से नहीं देते: एक उजागर तर्क ट्रेस, और — जब आप इसके दोनों क्षमता ध्वजों को सक्रिय करते हैं — एक दृश्य रिकॉर्ड कि उसने कौन से पृष्ठ खोलने और पूरी तरह से पढ़ने का चयन किया।
scraper.deepseek अभिनेता इन सभी को दो HTTP कॉल में बदल देता है: एक प्रॉम्प्ट भेजने के लिए, एक परिणाम संकलित करने के लिए। यह गाइड अनुरोध रूप, पूर्ण प्रतिक्रिया स्कीमा जो लाइव रन से कैप्चर की गई है, एक चलने योग्य पायथन क्लाइंट, और उद्धरण-समाधान तर्क को कवर करती है जिसकी payload की आवश्यकता है और इसे दस्तावेजित नहीं किया गया है।
आप इसके साथ क्या कर सकते हैं
- ट्रैक करें कि DeepSeek आपकी श्रेणी का वर्णन कैसे करता है। एक निश्चित प्रॉम्प्ट सेट को शेड्यूल पर चलाएँ और
markdownउत्तर के साथ-साथ इसके पीछे के स्रोतों को संग्रहित करें। - निर्णय के पीछे के तर्क को कैप्चर करें।
THINKटुकड़ा दिखाता है कि DeepSeek ने उत्तर देने से पहले प्रश्न को कैसे फ्रेम किया — जब आप इस बारे में परवाह करते हैं कि क्यों एक उत्पाद की सिफारिश की गई। - उद्धरण के शेयर को मापें। खोज मोड में payload हर स्रोत को ले जाती है जिसे DeepSeek ने पुनः प्राप्त किया, जिसमें शीर्षक, URL, साइट का नाम, और प्रकाशन समय शामिल हैं।
- DeepSeek द्वारा खोले गए पृष्ठों को उन लोगों से अलग करें जिन्हें उसने केवल सूचीबद्ध किया। एजेंटिक मोड में,
TOOL_OPENटुकड़े विशिष्ट URLs को रिकॉर्ड करते हैं जिसे उसने अंत से अंत तक पढ़ा — जो खोज परिणामों की तुलना में कहीं अधिक संकीर्ण सेट है। - मार्केट्स की तुलना करें।
countryरन के आउटपुट को पिन करता है, इसलिए वही प्रॉम्प्ट कई क्षेत्रों के लिए कैप्चर किया जा सकता है और उसकी तुलना की जा सकती है। - उत्तर डेटा सेट बनाएं। प्रॉम्प्ट, उत्तर, तर्क, और स्रोत एक रन के लिए एक JSON वस्तु के रूप में आते हैं, जिसे संग्रहीत करने के लिए तैयार किया जाता है।
Scrapeless DeepSeek स्क्रैपर क्यों
scraper.deepseek अभिनेता Universal Scraping API लाइन के भीतर LLM चैट स्क्रैपर परिवार का हिस्सा है:
- एक प्रॉम्प्ट इन, संरचित उत्तर आउट। लॉगिन हैंडलिंग और स्ट्रीमिंग री-अस्सेम्बली सर्वर-साइड पर होती हैं, इसलिए आप कभी भी किसी इंटरफ़ेस को नहीं छूते जो विश्लेषण के लिए नहीं बनाया गया था।
- टुकड़ा स्ट्रीम संरक्षित है। तर्क, खोज क्वेरी, खोले गए पृष्ठ, और अंतिम उत्तर अलग-अलग टाइप की वस्तुओं के रूप में आते हैं, न कि एक समतल स्ट्रिंग के रूप में।
- देश-पिन्ड आवासीय आउटपुट। रन 195+ देशों के माध्यम से आवासीय प्रॉक्सी के माध्यम से मार्ग प्रशस्त करते हैं; आवश्यक
countryइनपुट पूरी कॉन्फ़िगरेशन है। - परिवार में एक अनुबंध। अंत बिंदु,
x-api-tokenहेडर, और सबमिट-फिर-संग्रह प्रवाह ChatGPT, Gemini, Perplexity, Copilot, और Grok अभिनेताओं के लिए समान हैं।
एक नोट दस्तावेज़ीकरण पर: LLM चैट स्क्रेपर क्विकस्टार्ट साझा कार्य प्रवाह को दस्तावेज़ करता है और परिवार में अन्य अभिनेताओं की सूची बनाता है, लेकिन अभी तक एक DeepSeek पृष्ठ नहीं है। नीचे वर्णित हर क्षेत्र और ध्वज को अभिनेता के खिलाफ लाइव चलानों से लिया गया था, न कि संदर्भ पृष्ठ से पढ़ा गया था।
पूर्वापेक्षाएँ
- एक Scrapeless खाता और API कुंजी — इसे app.scrapeless.com पर बनाएँ।
- त्वरित कैप्चर के लिए
curlऔरjq, या क्लाइंट के लिए Python 3.10+। - HTTP और JSON के साथ परिचितता।
कुंजी को वातावरण में रखें ताकि यह आपकी स्रोत पेड़ तक कभी न पहुँच सके:
bash
export SCRAPELESS_API_KEY=your_api_token_here
DeepSeek Scraper API कैसे काम करता है
अभिनेता असिंक्रोनस है। आप एक कार्य बनाते हैं, फिर उसे एकत्र करते हैं।
- सबमिट करें:
POST https://api.scrapeless.com/api/v2/scraper/request→201के साथ{"status": "pending", "task_id": "..."} - एकत्र करें:
GET https://api.scrapeless.com/api/v2/scraper/result/{task_id}→202के साथ{"status": "running"}जब रन हवा में हो, फिर पूर्ण परिणाम के साथ200 - ऑथ हेडर:
x-api-token: $SCRAPELESS_API_KEY
202 ठीक वही काम कर रहा है HTTP अर्थशास्त्र विनिर्देश इसके लिए परिभाषित करता है: अनुरोध स्वीकार किया गया, प्रोसेसिंग पूरी नहीं हुई है, और परिणाम एक अलग स्थान पर है। उस स्थान को एक निश्चित अंतराल पर पॉल करें जब तक यह 200 का उत्तर नहीं देता। पूर्ण परिणाम पाँच मिनट तक रखे जाते हैं, इसलिए तुरंत एकत्र करें या इसके बजाय एक वेबहुक पंजीकृत करें।
अनुरोध पैरामीटर
| इनपुट फ़ील्ड | आवश्यक | प्रकार | विवरण |
|---|---|---|---|
prompt |
हाँ | स्ट्रिंग | DeepSeek को भेजा जाने वाला प्रश्न |
country |
हाँ | स्ट्रिंग | रन के आवासीय ब्रोडबैंड के लिए दो-लेटर देश कोड, जैसे US |
thinking |
नहीं | बूलियन | DeepSeek की तर्क ट्रेस को THINK अंश के रूप में प्रकट करता है |
search |
नहीं | बूलियन | रन को लाइव वेब स्रोत प्राप्त करने की अनुमति देता है और उन्हें पे-लोड में लौटाता है |
दोनों आवश्यक फ़ील्ड्स सबमिट करते समय मान्य किए जाते हैं। country को छोड़ने पर 400 के साथ Key: 'deepseekParam.Country' Error:Field validation for 'Country' failed on the 'required' tag वापस मिलता है; prompt को छोड़ने पर Prompt के लिए मिलान संदेश प्राप्त होता है। देश कोड्स अनुसरण करते हैं ISO 3166-1 अल्फा-2 मानक।
कर्ल के साथ त्वरित कैप्चर
कार्य सबमिट करें, इसे पूर्णता तक पोल करें, और संरचनात्मक सारांश प्रिंट करें:
bash
TASK_ID=$(curl -sS -X POST https://api.scrapeless.com/api/v2/scraper/request \
-H "Content-Type: application/json" \
-H "x-api-token: ${SCRAPELESS_API_KEY}" \
-d '{
"actor": "scraper.deepseek",
"input": {"prompt": "Explain how HTTP caching headers work.", "country": "US"}
}' | jq -r '.task_id')
echo "task_id=${TASK_ID}"
for _ in $(seq 1 60); do
BODY=$(curl -sS -H "x-api-token: ${SCRAPELESS_API_KEY}" \
"https://api.scrapeless.com/api/v2/scraper/result/${TASK_ID}")
echo "${BODY}" | jq -e '.status == "success"' >/dev/null 2>&1 && break
sleep 4
done
echo "${BODY}" | jq -r '"status=" + .status,
"fragments=" + ([.task_result.fragments[].type] | join(",")),
"answer_chars=" + (.task_result.markdown | length | tostring),
"tokens=" + (.task_result.accumulated_token_usage | tostring)'
प्रतिक्रिया लिफाफा
पूर्ण एकत्र कॉल एक साधारण JSON दस्तावेज़ लौटाता है, जो JSON विनिमय प्रारूप मानक द्वारा परिभाषित के भीतर है, जिसमें दो शीर्ष-स्तरीय कुंजी हैं: status और task_result।
json
// illustrative sample — every key and type below is from live scraper.deepseek runs; long strings abridged
{
"status": "success",
"task_result": {
"markdown": "To handle caching, an HTTP response carries…",
"html": "<p class=\"ds-markdown-paragraph\">…</p>",
"fragments": [
{"type": "RESPONSE", "id": 2, "stage_id": 1, "content": "To handle caching…", "references": []}
],
"accumulated_token_usage": 637,
"thinking_enabled": false,
"search_enabled": false,
"search_triggered": false,
"status": "FINISHED",
"quasi_status": "FINISHED",
"role": "ASSISTANT",
"message_id": 2,
"parent_id": 1,
"conversation_mode": "DEFAULT",
"inserted_at": 1786037083.6987588,
"model": "",
"feedback": null,
"incomplete_message": null,
"auto_continue": false,
"ban_edit": false,
"ban_regenerate": false,
"has_pending_fragment": false
}
}
फ़ील्ड द्वारा फ़ील्ड:
| फ़ील्ड | प्रकार | इसमें क्या है |
|---|---|---|
task_result.markdown |
स्ट्रिंग | Markdown में उत्तर, CommonMark विनिर्देश के अनुसार — यह फ़ील्ड अधिकांश पाइपलाइनों की आवश्यकता होती है |
task_result.html |
स्ट्रिंग | HTML में उसी उत्तर को, DeepSeek के अपने ds-markdown-* वर्ग नामों के साथ ले जाते हुए |
task_result.fragments[] |
एरे | कदमों की क्रमबद्ध धारा जो उत्तर उत्पन्न करती है; अगले सेक्शन में देखें |
task_result.accumulated_token_usage |
नंबर | रन द्वारा उपयोग किए गए टोकन |
task_result.thinking_enabled |
बूलियन | यह दर्शाता है कि तर्क ट्रेस का अनुरोध किया गया था |
task_result.search_enabled |
बूलियन | यह दर्शाता है कि लाइव डेटा प्राप्त करने का अनुरोध किया गया था |
task_result.search_triggered |
बूलियन | क्या डेटा वास्तव में चलाया गया था |
task_result.status / quasi_status |
स्ट्रिंग | पूर्ण रन पर दोनों ने FINISHED पढ़ा |
task_result.role |
स्ट्रिंग | ASSISTANT |
task_result.message_id / parent_id |
नंबर | बातचीत में स्थिति; एक नया रन पेरेंट 1 के अंतर्गत संदेश 2 है |
task_result.inserted_at |
नंबर | दशमलव सेकंड के साथ यूनिक्स टाइमस्टैम्प |
task_result.conversation_mode |
स्ट्रिंग | हर कैप्चर किए गए रन पर DEFAULT |
task_result.model |
स्ट्रिंग | इस गाइड के लिए पूरक सभी रन में खाली, जिसमें model इनपुट प्रदान करने वाले रन शामिल हैं |
task_result.feedback / incomplete_message |
शून्य | आरक्षित; पूर्ण रन पर null |
task_result.auto_continue, ban_edit, ban_regenerate, has_pending_fragment |
बूलियन | इंटरफेस-राज्य ध्वज, सभी false पूर्ण रन पर |
model को पढ़ने वाले फ़ील्ड के रूप में नहीं बल्कि अनुपलब्ध के रूप में मानें। यदि आपको यह जानने की आवश्यकता है कि किस कॉन्फ़िगरेशन ने कैप्चर उत्पन्न किया, तो प्रतिक्रिया के साथ आपने भेजे गए ध्वजों को रिकॉर्ड करें।
अपनी API कुंजी नि:शुल्क योजना पर प्राप्त करें: app.scrapeless.com
फ़्रैगमेंट स्ट्रीम वह जगह है जहाँ विवरण रहता है
fragments इस अभिनेता को एक साधारण चैट कैप्चर से अलग करता है। इसकी लंबाई और संरचना उन ध्वजों के साथ परिवर्तित होती है जो आप भेजते हैं:
| sent flags | fragment sequence | what you gain |
|---|---|---|
| neither | RESPONSE |
केवल उत्तर |
thinking: true |
THINK, RESPONSE |
तर्क का टेक्स्ट और इसकी अवधि |
search: true |
SEARCH, RESPONSE |
उन प्रश्नों की सूची जो DeepSeek ने जारी किए और हर स्रोत जिसे उसने प्राप्त किया |
| both | THINK, TOOL_SEARCH, THINK, TOOL_OPEN × N, THINK, RESPONSE |
एक एजेंटिक लूप: योजना बनाना, खोज करना, पुनः योजना बनाना, व्यक्तिगत पृष्ठ खोलना, पुनः योजना बनाना, उत्तर देना |
फ्रAGMENT प्रकार विभिन्न कुंजी ले जाते हैं, जो इसे साधारण पार्सर को तोड़ने वाला भाग बनाता है:
RESPONSE—content,id,stage_id,type,references।contentवह उत्तर है जिसमें अभी भी उद्धरण मार्कर अंतर्निहित हैं।THINK— वही कुंजियाँ जिनमेंelapsed_secsभी शामिल है। केवल तर्क मोड में ट्रेस एक लंबा ब्लॉक है; एजेंटिक मोड में यह उपकरण कॉल के बीच कई छोटे योजना नोट बन जाता है।SEARCH—queries(खोज स्ट्रिंग्स जो DeepSeek ने तैयार कीं),results(स्रोत),status, और एकcontentजोnullहै। कोईstage_idनहीं है।TOOL_SEARCH—SEARCHका एजेंटिक-मोड समकक्ष है, जिसमें एकstage_idजोड़ा गया है।TOOL_OPEN—reference(URL को प्रकट करने वाले खोज खंड के लिए एक बिंदु) और एक हीresultवस्तु उस एक पृष्ठ के लिए जो खोला गया था। कोईcontentनहीं, कोईreferencesनहीं।
हर स्रोत वस्तु — SEARCH.results, TOOL_SEARCH.results, और TOOL_OPEN.result — वही आठ कुंजियाँ ले जाती हैं: title, url, snippet, site_name, site_icon, published_at, query_indexes, और cite_index।
इस मार्गदर्शिका के लिए एक एजेंटिक रन ने 13 फ्रैगमेंट उत्पन्न किए: एक उद्घाटन योजना, एक TOOL_SEARCH जिसने चार प्रश्न चलाए और 38 अद्वितीय URLs लौटाए, आठ TOOL_OPEN फ्रैगमेंट उन पृष्ठों के लिए जिन्हें DeepSeek ने पूरा पढ़ने के लिए चुना, दो और योजना नोट, और उत्तर। TOOL_OPEN सेट दिलचस्प है — वे आठ URLs हैं जिन्हें DeepSeek ने वास्तव में पढ़ा, 38 से भिन्न जो उसने केवल देखे।
यह तर्क व्यवहार वही क्षमता है जिसका वर्णन DeepSeek-R1 सुदृढीकरण-शिक्षण पेपर में किया गया है; अभिनेता का योगदान ट्रेस को एक क्षेत्र के रूप में उपलब्ध कराना है बजाय कि इसे एक प्रदर्शित पैनल के।
Python में API को एकीकृत करना
एक पूर्ण ग्राहक: सबमिट करें, पूर्णता के लिए पूछें, और स्रोतों को उनके उद्धरण संख्या के द्वारा सूचीबद्ध करें।
python
# deepseek_client.py — submit a prompt to scraper.deepseek and collect the result
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 ask_deepseek(prompt, country="US", thinking=False, search=False, interval=4):
created = requests.post(
f"{BASE}/request",
headers=HEADERS,
json={
"actor": "scraper.deepseek",
"input": {
"prompt": prompt,
"country": country,
"thinking": thinking,
"search": search,
},
},
timeout=60,
)
created.raise_for_status()
task_id = created.json()["task_id"]
while True:
collected = requests.get(f"{BASE}/result/{task_id}", headers=HEADERS, timeout=120)
if collected.status_code == 200:
return collected.json()
if collected.status_code != 202:
raise RuntimeError(f"task {task_id} did not complete: {collected.text}")
time.sleep(interval)
def sources_by_citation(result):
"""Every source the run produced, keyed by the cite_index used in the answer."""
found = {}
for fragment in result.get("fragments") or []:
for source in fragment.get("results") or []:
found[source.get("cite_index")] = source
if fragment.get("result"):
found[fragment["result"].get("cite_index")] = fragment["result"]
return found
if __name__ == "__main__":
payload = ask_deepseek(
"What are the latest developments in fusion energy research?",
search=True,
)
result = payload["task_result"]
fragments = result.get("fragments") or []
cited = sources_by_citation(result)
print(f"status={payload['status']} search_triggered={result['search_triggered']}")
print("fragments=" + ",".join(f.get("type", "?") for f in fragments))
print(f"answer_chars={len(result['markdown'])} tokens={result['accumulated_token_usage']}")
print(f"sources={len(cited)}")
for index in sorted(k for k in cited if isinstance(k, int))[:3]:
source = cited[index]
print(f" [citation:{index}] {source['site_name']} -> {source['url']}")
एक कैप्चर किया गया रन:
text
status=success search_triggered=True
fragments=SEARCH,RESPONSE
answer_chars=7664 tokens=926
sources=11
[citation:1] Lawrence Livermore National Laboratory (.gov) -> https://lasers.llnl.gov/news/llnl-experts-help-advance-inertial-fusion-energy-us-ife-conference
[citation:2] Reuters -> https://www.reuters.com/business/energy/fusion-energy-developer-tae-signs-helium-3-future-fuel-supply-option-agreement-2026-08-05/
[citation:3] Oak Ridge National Laboratory (.gov) -> https://www.ornl.gov/news/oak-ridge-national-lab-cleveland-clinic-and-ibm-achieve-first-known-computations-fusion?utm_source=Sutor-Group-Intelligence-and-Advisory&utm_medium=daily-links&utm_campaign=Substack
वे [citation:N] लेबल वही मार्कर हैं जो उत्तर पाठ में अंतर्निहित हैं, इसलिए प्रिंट की गई पंक्तियाँ पहले से ही एक कार्यशील उद्धरण सूची हैं। तीसरे URL को भी नोट करें — स्रोत URLs उसी तरह आते हैं जैसे DeepSeek ने उन्हें देखा, संदर्भ ट्रैकिंग पैरामीटर सहित, इसलिए डोमेन द्वारा कैप्चर को समूहित करने से पहले उन्हें सामान्य करें या उन्हें दोबारा न दें।
thinking=True, search=True को कॉल पर स्विच करने से फ्लैट SEARCH फ्रैगमेंट को एजेंटिक अनुक्रम के लिए स्वैप किया जाता है और इसके बजाय खोले गए पृष्ठ सेट को प्राप्त होता है। उस मोड में तर्क ट्रेस होता है, और यह भी जहां पेलोड सबसे कम भविष्यवाणी योग्य होता है — इस पर आधारित दो अनुभागों को देखें इससे पहले कि आप इसका विस्तार करें।
उद्धरणों का निराकरण
DeepSeek अपने स्रोतों को उत्तर पाठ के अंदर चिह्नित करता है, और मार्कर प्रारूप इस बात पर निर्भर करता है कि कौन से ध्वज ने रन का उत्पादन किया। दो ध्वज संयोजन, तीन कोडिंग उनके बीच, सभी लाइव कैप्चर के खिलाफ पुष्टि की गई:
खोज केवल। RESPONSE फ्रैगमेंट का content [citation:N] मार्कर ले जाता है, जहाँ N cite_index क्षेत्र में SEARCH फ्रैगमेंट के प्रविष्टियों पर मेल खाता है results। इस मोड में शीर्ष-स्तरीय markdown उसी जानकारी का एक दूसरा कोडिंग ले जाता है: वे मार्कर पहले से ही अंतर्निहित Markdown लिंक में हल किए गए हैं। एक पाइपलाइन जिसे केवल पठनीय गद्य की आवश्यकता है वह markdown पढ़ सकती है और पूरी तरह से जोड़ने को छोड़ सकती है।
सोच और खोज एक साथ। मार्कर [reference:N] बन जाते हैं, और N एक शून्य-आधारित अनुक्रमांक RESPONSE फ्रैगमेंट के references ऐरे में — न कि cite_index। उस ऐरे में प्रत्येक प्रविष्टि एक वापस-पॉइंटर होती है जो {"id": 5, "type": "TOOL_OPEN"} के रूप में होती है जो उस खंड की पहचान करती है जिसने स्रोत प्रदान किया। इस मोड में शीर्ष स्तर का markdown RESPONSE सामग्री के लिए बाइट-समान है, मार्कर और सभी, इसलिए जुड़ना आपके ऊपर है।
उस दूसरे मामले में एक ईमानदार सीमा है जिसे जानना महत्वपूर्ण है इससे पहले कि आप इसके आधार पर एक रिपोर्ट तैयार करें। एक TOOL_OPEN बैक-पॉइंटर साफ-सुथरा ठीक हो जाता है, क्योंकि उस खंड में बिल्कुल एक result है और इसलिए बिल्कुल एक URL है। एक TOOL_SEARCH बैक-पॉइंटर ऐसा नहीं है — यह एक खंड का नाम देता है जिसमें दर्जनों परिणाम होते हैं, इसलिए यह आपको बताता है कि दावा खोज चरण से आया, बिना यह बताए कि स्रोत कौन सा था। एक एजेंटिक कैप्चर में, 69 संदर्भों में से 45 ने TOOL_OPEN खंडों की ओर इशारा किया और विशिष्ट URLs की ओर लौटे; शेष 24 ने पूरे खोज खंड की ओर इशारा किया। यह भी नोट करें कि cite_index एजेंटिक-मोड खंडों के अंदर परिणामों पर null है, इसलिए इसे वहां बैकअप के रूप में उपयोग नहीं किया जा सकता है।
व्यावहारिक परिणाम: यदि प्रति-दावा स्रोत अट्रिब्यूशन वितरण है, तो search: true के साथ ही चलाएं और cite_index का उपयोग करें। यदि आप तर्क ट्रेस और वास्तव में खोले गए पन्नों की सूची चाहते हैं, तो दोनों ध्वजों के साथ चलाएं और उद्धरण बाइंडिंग को आंशिक समझें।
सामान्य डेटा-आकार समस्याएँ
- अज्ञात इनपुट कीज़ स्वीकार की जाती हैं और चुपचाप अनदेखी की जाती हैं।
web_search: true,thinking_enabled: true,search_enabled: true, याmodel: "deepseek-reasoner"भेजने पर सभी ने201वापस किया और बिना किसी चेतावनी के बिना ध्वज बंद होने वाली एक रन का उत्पादन किया। कार्यशील नाम बिल्कुलthinkingऔरsearchहैं। एक सही नामित कुंजी गलत प्रकार के साथ अलग व्यवहार करती है —thinking: "true"एक स्ट्रिंग के रूप में400 invalid paramsलौटाता है — इसलिए API उन कुंजियों पर प्रकारों को मान्य करता है जिन्हें वह पहचानता है और शेष को हटा देता है। यदि आप एक ChatGPT कैप्चर स्क्रिप्ट का पोर्ट कर रहे हैं, तो इसकाweb_searchध्वज गायब हो जाएगा और हर DeepSeek उत्तर बिना स्रोत के लौटेगा। - एक अप्रयुक्त देश संग्रहन पर विफल रहता है, सबमिट पर नहीं।
country: "ZZ"एक सामान्य201के साथtask_idलौटाता है; विफलता संग्रहन पर कॉल पर400के रूप में{"message": "execution failed", "status": "failed"}के साथ प्रकट होती है। अपने पक्ष पर देश कोडों को मान्य करें बजाय सबमिट स्थिति को पुष्टि के रूप में पढ़ने के। markdownऔरRESPONSEसामग्री हमेशा एक ही स्ट्रिंग नहीं होती। खोज-केवल मोड मेंmarkdownलंबा है, क्योंकि उद्धरण मार्कर लिंक में विस्तारित हो गए हैं। अन्य सभी मोड में दोनों मेल खाते हैं। एक फ़ील्ड चुनें और उसी के साथ रहें।referencesएक उद्धरण सूची नहीं है। यह{id, type}बैक-पॉइंटर्स का एक एरे है, और यह एजेंटिक मोड के अलावा खाली है। स्रोत स्वयं खोज और खुले खंडों पर रहते हैं।- खंड कुंजी सेट प्रकार द्वारा भिन्न होते हैं।
SEARCHमेंqueriesऔरresultsहै लेकिन कोईstage_idनहीं है;TOOL_OPENमेंreferenceहै और एकलresultहै लेकिन कोईcontentनहीं है। खंडों कोtypeद्वारा पढ़ें, कभी भी स्थिति द्वारा नहीं। - एजेंटिक मोड सपाट मोड की तुलना में कहीं अधिक विविध है। खोज-केवल रन इस गाइड के लिए किए गए प्रत्येक कैप्चर में
SEARCH, RESPONSEके रूप में वापस आए। दोनों ध्वजों को सेट करने पर, समान प्रॉम्प्ट के अनुक्रमिक कैप्चर ने 8, 15, और 13 पृष्ठ खोले, उत्तर की लंबाई 3,720 से 6,707 अक्षरों के बीच थी, और कई रन सीधेTOOL_SEARCHसेRESPONSEमें गए बिना एक पृष्ठ खोले। यदि आपकी पाइपलाइन को खोले गए पृष्ठ सेट की आवश्यकता है, तो एक खाली को एक सामान्य परिणाम के रूप में मानें और श्रृंखला को पढ़ें बजाय एक एकल रन के। - एक कार्य एक विफल स्थिति में समाप्त हो सकता है, और यह संग्रहण कॉल पर प्रकट होता है। एजेंटिक रन के एक अल्पसंख्यक विफल के रूप में समाप्त हुए न कि सफल के रूप में; संग्रहण कॉल फिर
400का उत्तर देता है बजाय200के, ठीक ऐसा ही जैसा एक अप्रयुक्त देश करता है। उपरोक्त क्लाइंट आगे बढ़ने से पहले एक202की जांच करता है और किसी अन्य सामग्री पर उठता है, इसलिए कार्य आईडी और सर्वर का संदेश आपके लॉग तक पहुंचता है। एक विफल कार्य को अपने डेटा सेट में एक रिकॉर्डेड परिणाम के रूप में मानें, न कि कुछ ऐसा जो छुपाने के लिए।
साथी अभिनेता
अंत बिंदु, शीर्षलेख, और सबमिट-फिर-लेना प्रवाह परिवार के भीतर समान रहते हैं — केवल अभिनेता का नाम और इसके प्लेटफ़ॉर्म-विशिष्ट इनपुट बदलते हैं:
scraper.chatgpt—promptप्लसcountry, अपनी खुद कीweb_searchफ्लैग के साथ।scraper.gemini— वही दो-फील्ड इनपुट, उत्तर लौटाना प्लस उद्धरणों का एरे।scraper.perplexity— आवश्यकcountryऔरweb_searchफ्लैग; वेब परिणाम और संबंधित प्रॉम्प्ट लौटाता है।scraper.grok— एक तर्कmodeकी आवश्यकता होती है और खुले-जाल और X उद्धरणों को अलग-अलग एरे के रूप में लौटाता है; Grok स्क्रैपर API गाइड में कवर किया गया।scraper.copilotऔरscraper.alexa— Copilot और Alexa उत्तर एक ही अनुबंध के तहत सतह में आते हैं।
क्योंकि प्रत्येक अभिनेता अपने ध्वजों को अलग तरह से नामांकित करता है, इनपुट बिल्डर को अभिनेता-विशिष्ट बनाकर रखें न कि उन्हें साझा करने के लिए एक डिक्शनरी। पंक्ति के लिए उपयोग-आधारित मूल्य निर्धारण, साइन अप पर मुफ्त परीक्षण क्रेडिट के साथ, मूल्य निर्धारण पृष्ठ पर है।
निष्कर्ष: दो कॉल, और एक.payload जो ध्यान से पढ़ने योग्य है
DeepSeek को पकड़ने के लिए दो HTTP कॉल की आवश्यकता होती है: एक कार्य बनाने के लिए POST { actor: "scraper.deepseek", input: { prompt, country } }, फिर यह परिणाम प्राप्त करने के लिए GET करें जब तक कि यह 200 का उत्तर नहीं देता। उत्तर markdown में है। जो कुछ भी DeepSeek को अद्वितीय बनाता है — तर्क ट्रेस, खोज प्रश्न, पृष्ठ जो इसने खोले — यह fragments में है, और केवल यदि आपने इसे thinking और search के साथ पूछा। उन दो ध्वजों के नाम ठीक उसी तरह रखें, क्योंकि API जो कुछ भी आप भेजते हैं उसे स्वीकार करेगा और चुपचाप अनदेखा करेगा।
डेटा के रूप में DeepSeek उत्तर प्राप्त करने के लिए तैयार?
हमारे समुदाय में शामिल हों, एक मुफ्त योजना का दावा करने और उन डेवलपर्स के साथ नोट्स की तुलना करने के लिए जो AI-उत्तर पाइपलाइन बना रहे हैं: Discord · Telegram।
app.scrapeless.com पर मुफ्त परीक्षण क्रेडिट के लिए साइन अप करें, और scraper.deepseek को उस संकेत और बाजारों पर इंगित करें जो आपका मॉनिटरिंग प्रोग्राम कवर करता है।
सामान्य प्रश्न
प्रश्न: मैं DeepSeek स्क्रैपर API अनुरोध को कैसे प्रमाणित करूं?
प्रत्येक कॉल में प्रमुख x-api-token: <your key> होता है, दोनों प्रस्तुत और संग्रह अनुरोध पर। एक खाता कुंजी scraper.deepseek और अन्य सभी Scrapeless अभिनेताओं को कवर करती है। ऐप.scrapeless.com पर मुफ्त योजना पर एक कुंजी बनाएं।
प्रश्न: अनुरोध कार्य_id लौटाने के बजाय उत्तर क्यों लौटाता है?
अभिनेता असामग्रिक है, इसलिए एक प्रस्तुत 201 के साथ और {"status": "pending", "task_id": "..."} लौटाता है और उत्तर /api/v2/scraper/result/{task_id} पर दूसरी कॉल से आता है। वह एंडपॉइंट 202 को {"status": "running"} के साथ लौटाता है जब तक कि रन समाप्त नहीं हो जाता, फिर 200 के साथ पूरा task_result लौटाता है। पूर्ण परिणाम पांच मिनट तक बनाए रखे जाते हैं; एक वेबहुक URL धारा के लिए एक विकल्प है।
प्रश्न: मैं DeepSeek का तर्क ट्रेस कैसे प्राप्त करूं?
इनपुट में "thinking": true भेजें। फिर प्रतिक्रिया में THINK फ़्रैगमेंट होता है, जिसका content तर्क पाठ है और जिसका elapsed_secs पर इस पर बिताया गया समय है। बिना उस ध्वज के तर्क उत्पन्न नहीं होता है और thinking_enabled false के रूप में वापस आता है।
प्रश्न: क्या DeepSeek स्क्रैपर स्रोत और उद्धरण लौटाता है?
हाँ, जब आप "search": true भेजते हैं। स्रोत ऑब्जेक्ट के रूप में आते हैं जिनमें title, url, snippet, site_name, site_icon, published_at, query_indexes, और cite_index होते हैं, जो SEARCH या TOOL_SEARCH फ़्रैगमेंट से जुड़े होते हैं। बिना ध्वज के, कोई स्रोत प्राप्त नहीं होता है और उत्तर केवल मॉडल से उत्पन्न होता है।
प्रश्न: मेरा web_search पैरामीटर कोई प्रभाव क्यों नहीं डाल रहा है?
क्योंकि यह ChatGPT अभिनेता का पैरामीटर नाम है। DeepSeek का ध्वज search है, और अज्ञात कुंजी को एक 201 के साथ स्वीकार किया जाता है और बिना त्रुटि के छोड़ दिया जाता है। यह thinking_enabled, search_enabled, और model पर भी लागू होता है — ठीक से thinking और search का उपयोग करें।
प्रश्न: कौन से फ़ील्ड खाली या नल हैं?
model इस गाइड के लिए कैद किए गए हर रन पर एक खाली स्ट्रिंग के रूप में वापस आया, feedback और incomplete_message पूर्ण रन पर null हैं, और references खाली है जब तक रन ने दोनों ध्वज नहीं का उपयोग किया। search_triggered जब false में नहीं मांगा गया था, तब बना रहता है। रक्षा से पढ़ें और अनुपस्थित फ़ील्ड को अनुपस्थित मानें न कि असफलताओं के रूप में।
प्रश्न: क्या मैं बिना SDK के इसको चला सकता हूं?
हाँ। यह सामान्य HTTP है — curl, Python requests, Node fetch, या कोई भी क्लाइंट जो एक JSON POST और एक GET भेज सकता है जिसमें एक हेडर हो।
प्रश्न: क्या DeepSeek उत्तर प्राप्त करना वैध है?
अभिनेता सार्वजनिक रूप से उत्पन्न उत्तर सामग्री को पकड़ता है, लेकिन नियम क्षेत्राधिकार और प्लेटफ़ॉर्म सेवा की शर्तों के आधार पर भिन्न होते हैं। लागू शर्तों की समीक्षा करें और अपने उपयोग के मामले के लिए परामर्श करें, विशेष रूप से कैद को पुनर्वितरित करने से पहले, और GDPR या CCPA के अंतर्गत सुरक्षित व्यक्तिगत डेटा को न एकत्रित करें। जब आपकी पाइपलाइन स्रोत URLs को प्राप्त करती है जिन्हें DeepSeek संदर्भित करता है, तो उन सभी साइटों पर रोबोट छ excl वसन प्रोटोकॉल द्वारा मानकीकृत क्रॉलर निर्देशों का सम्मान करें।
स्क्रैपलेस में, हम केवल सार्वजनिक रूप से उपलब्ध डेटा का उपयोग करते हैं, जबकि लागू कानूनों, विनियमों और वेबसाइट गोपनीयता नीतियों का सख्ती से अनुपालन करते हैं। इस ब्लॉग में सामग्री केवल प्रदर्शन उद्देश्यों के लिए है और इसमें कोई अवैध या उल्लंघन करने वाली गतिविधियों को शामिल नहीं किया गया है। हम इस ब्लॉग या तृतीय-पक्ष लिंक से जानकारी के उपयोग के लिए सभी देयता को कोई गारंटी नहीं देते हैं और सभी देयता का खुलासा करते हैं। किसी भी स्क्रैपिंग गतिविधियों में संलग्न होने से पहले, अपने कानूनी सलाहकार से परामर्श करें और लक्ष्य वेबसाइट की सेवा की शर्तों की समीक्षा करें या आवश्यक अनुमतियाँ प्राप्त करें।



