आपने Mercado Libre से 40 हजार कार्ड निकाले, अर्जेंटीना में औसत कीमत की गणना की और रिपोर्ट प्रस्तुत की। समस्या यह है कि ये अर्जेंटीना की कीमतें नहीं हैं। ये पोस्टल कोड 1430 के लिए कीमतें हैं - डिफ़ॉल्ट क्षेत्र, जिसे प्लेटफ़ॉर्म उन सभी के लिए लागू करता है, जिन्होंने नहीं बताया कि कहाँ भेजना है।
Mercado Libre 18 लैटिन अमेरिकी देशों में काम करता है, समूह की आय 2025 में 28.9 बिलियन डॉलर थी, कंपनी में 123,670 कर्मचारी हैं। ई-कॉमर्स विश्लेषण के लिए यह क्षेत्र में डेटा का मुख्य स्रोत है और साथ ही सबसे कम आंका गया जाल: प्लेटफ़ॉर्म विभिन्न कीमतें, विभिन्न डिलीवरी और विभिन्न बाय-बॉक्स विजेताओं को उस अनुरोध के आधार पर देता है, जहाँ से अनुरोध आया है और कौन सा डिलीवरी क्षेत्र सत्र देखता है। आइए देखें कि क्या टूटता है और सही तरीके से कैसे इकट्ठा करें।
2026 में क्या बदला: API वास्तव में बंद है
कुछ साल पहले "Mercado Libre का पार्सिंग" सार्वजनिक API द्वारा हल किया गया था: GET api.mercadolibre.com/sites/MLA/search?q=iphone बिना प्रमाणीकरण के परिणाम देता था। आज यह ऐसा नहीं है।
12 सितंबर 2026 की जांच सामान्य सर्वर IP से, बिना टोकन के:
/sites— HTTP 403, शरीर{"code":"PA_UNAUTHORIZED_RESULT_FROM_POLICIES","blocked_by":"PolicyAgent","message":"At least one policy returned UNAUTHORIZED."}/sites/MLA/search?q=iphone&limit=1— HTTP 403,{"message":"forbidden","error":"forbidden"}/items/{id}— HTTP 403, वहीPolicyAgent
यहां तक कि यह केवल टोकन की अनुपस्थिति का मामला नहीं है। विक्रेता और एकीकरणकर्ता सार्वजनिक शिकायतों में उसी चित्र का वर्णन करते हैं सही एक्सेस टोकन के साथ: /users/me और ऑर्डर सामान्य रूप से प्रतिक्रिया देते हैं, जबकि कैटलॉग और रेटिंग एंडपॉइंट्स blocked_by: PolicyAgent लौटाते हैं। API तक पहुँचने की नीति बिंदुवार कड़ी हो रही है, एंडपॉइंट्स के अनुसार, और दस्तावेज़ इसके साथ नहीं चल पा रहे हैं।
साथ ही प्लेटफ़ॉर्म के लिए दो तकनीकी समय सीमा हैं, जो अभी भी आधिकारिक API पर रहते हैं:
- 30 अगस्त 2026 से अनुप्रयोगों को विभाजित किया जाना चाहिए: Mercado Libre के लिए एक अलग अनुप्रयोग, Mercado Pago के लिए एक अलग।
GET applications/$APP_IDके माध्यम से जांच की जाती है - यदि स्कोप मेंurn:mp:...जैसे अधिकार हैं, तो अनुप्रयोग को फिर से प्रस्तुत करना आवश्यक है, अन्यथा यह Mercado Libre API तक पहुँच खो देता है; - क्वेरी पैरामीटर में एक्सेस टोकन का स्थानांतरण असुरक्षित माना गया है: ऐसे अनुरोधों को प्लेटफ़ॉर्म 301 के उत्तर के साथ अस्वीकार करना शुरू कर देगा। टोकन केवल
Authorization: Bearerहेडर में भेजा जाना चाहिए।
व्यावहारिक निष्कर्ष सरल है: 2026 में आधिकारिक API एक विक्रेता के लिए चैनल है, जो अपने खाते के साथ काम कर रहा है, न कि बाजार विश्लेषण का उपकरण। यदि कार्य प्रतिस्पर्धियों और क्षेत्रीय कीमतों की निगरानी करना है, तो आप सार्वजनिक विंडो के साथ काम कर रहे हैं। विशिष्ट कार्य के लिए क्या चुनना है, हमने सामग्री में चर्चा की आधिकारिक API, तैयार डेटा सेट या अपना पार्सर.
एक वेबसाइट के बजाय सात विंडो
Mercado Libre एक देश के लिए फ़िल्टर के साथ एक कैटलॉग नहीं है, बल्कि स्वतंत्र प्लेटफ़ॉर्म का एक सेट है, जिनके अपने डोमेन, मुद्राएँ और उत्पाद प्रस्ताव हैं। API में इन्हें site_id कहा जाता है:
- MLA — अर्जेंटीना (mercadolibre.com.ar, ARS)
- MLB — ब्राज़ील (mercadolivre.com.br, BRL)
- MLM — मेक्सिको (mercadolibre.com.mx, MXN)
- MLC — चिली, MCO — कोलंबिया, MLU — उरुग्वे, MPE — पेरू, MLV — वेनेजुएला
MLA और MLB में एक ही लेख दो अलग-अलग कार्ड हैं, दो अलग-अलग विक्रेता, दो अलग-अलग लॉजिस्टिक योजनाएँ। इन्हें "सामने से" तुलना करना बेकार है: मुद्रा और डिलीवरी की शर्तों के अनुसार सामान्यीकरण की आवश्यकता है। मुद्रा के बारे में बात करते हुए - प्लेटफ़ॉर्म स्वयं HTML में स्वरूपण के नियम देता है: अर्जेंटीना के लिए "currency_id":"ARS", "decimal_separator":",", "thousands_separator":".", "time_zone":"GMT-03:00"। पार्सर जो कीमत को नियमित अभिव्यक्ति द्वारा बिंदु पर काटते हैं, लैटिन अमेरिकी विंडो पर हजार गुना गलत होते हैं।
मुख्य: कीमत और डिलीवरी प्राप्तकर्ता के क्षेत्र से गणना की जाती है
यहाँ एक अंश है, जो बिना पते के अनुरोध पर listado.mercadolibre.com.ar के परिणाम HTML में सीधे एम्बेड किया गया है:
"location_info":{"zipcode":"1430","inferred_zipcode":false,"default_zipcode":true,"user_zone":"X19"}
इसे इस तरह पढ़ा जाता है: कोड 1430, यह आपके IP से निकाला नहीं गया है (inferred_zipcode: false), यह डिफ़ॉल्ट (default_zipcode: true) है। शीर्ष पर "Enviar a Capital Federal" लिखा है - अर्थात्, प्लेटफ़ॉर्म चुपचाप मानता है कि आप ब्यूनस आयर्स के राजधानी क्षेत्र में हैं, और आगे सब कुछ उसी के लिए गणना करता है।
और यह बहुत कुछ गणना करता है। उसी HTML में डिलीवरी के बैनर होते हैं, जो क्षेत्र से जुड़े होते हैं: same_day_free_shipping के साथ "Llega gratis hoy" पाठ, आइकन vpp_full_icon - "Enviado por FULL" (प्लेटफ़ॉर्म के गोदाम से उत्पाद)। "आईफोन" के अनुरोध पर एक परिणाम पृष्ठ पर मुफ्त डिलीवरी के ऐसे उल्लेख 96 थे। क्षेत्र पर निर्भर करता है और buy_box खंड "Otra opción de compra": कौन सा विक्रेता कार्ड जीतता है, यह इस बात पर निर्भर करता है कि कौन सस्ता और तेज़ी से विशेष कोड तक पहुँचाता है।
निष्कर्ष: एक पार्सर, जिसने कभी भी डिलीवरी क्षेत्र नहीं पूछा, "अर्जेंटीना का बाजार" नहीं इकट्ठा करता है, बल्कि एक शहर का एक कट है। देश के लिए रिपोर्ट के लिए, जो राजधानी से हजार किलोमीटर दूर मिलियन-शहरों में है, यह एक दोष है, जो किसी भी तरह से प्रकट नहीं होता है - संख्याएँ विश्वसनीय लगती हैं, बस वे सही प्रश्न का उत्तर नहीं देती हैं।
प्रवेश पर अवरोध: /gz/account-verification
दूसरा आश्चर्य परिवहन स्तर पर इंतज़ार कर रहा है। listado.mercadolibre.com.ar/iphone के लिए अनुरोध तुरंत परिणाम नहीं देता: HTTP 302 पर /gz/account-verification?go=...&tid=... - अपने उपकरण की जांच के लिए पृष्ठ। यह Cloudflare नहीं है और न ही DataDome: अवरोध के कोड में न तो reCAPTCHA है, न ही Turnstile, न ही तीसरे पक्ष के एंटी-बॉट मार्कर, बल्कि डिवाइस मैकेनिक्स के लिए दर्जनों अनुरोध हैं। पृष्ठ का आकार लगभग 41 KB है, यह JavaScript पर आधारित है और इसके बिना कुछ नहीं दिखाता।
जांच के दौरान व्यवहार संकेतक साबित हुआ। पहले अनुरोध को साफ सर्वर IP से अवरोध ने पास कर दिया: वास्तविक परिणाम 2,425,906 बाइट्स पर आया - 50 ब्लॉक ui-search-layout और 120 मूल्य नोड्स andes-money-amount__fraction, सब कुछ सर्वर पर चित्रित किया गया। उसी पते से दोबारा अनुरोध /gz/account-verification पर अटक गए और आगे नहीं बढ़े। इसी IP से ब्राज़ीलियाई और मेक्सिकन विंडो ने बिल्कुल भी अनुमति नहीं दी।
यह एक सामान्य "प्रतिष्ठा" तंत्र है: पता एक छोटा विश्वास क्रेडिट प्राप्त करता है, कुछ अनुरोधों में इसे खर्च करता है और बंद हो जाता है। यहाँ कोई एकल परीक्षण कुछ भी साबित नहीं करता - महत्वपूर्ण यह है कि डेटा सेंटर पूल से स्थायी पहुँच नहीं है, और व्यवहार देश से देश में भिन्न होता है।
उत्तर के हेडर से एक और विवरण: प्लेटफ़ॉर्म _d2id (एक वर्ष की वैधता के साथ उपकरण पहचानकर्ता, जो x-request-device-id में भी दोहराया जाता है) और _mldataSessionId के साथ Max-Age=1800 सेट करता है। तीस मिनट - यही सत्र की प्राकृतिक लंबाई है, जिसके लिए IP को बनाए रखना चाहिए।
robots.txt क्या कहता है
संग्रह बनाने से पहले, प्लेटफ़ॉर्म के नियम पढ़ना उचित है। robots.txt दोनों विंडो (अर्जेंटीना और ब्राज़ील) में ऊपरी ब्लॉक समान और पूरी तरह से स्पष्ट है:
- AI-क्रॉलर के लिए पूर्ण निषेध (
Disallow: /): Amazonbot, GPTBot, ChatGPT-User, ClaudeBot, Claude-User, PerplexityBot, Perplexity-User; - सोशल मीडिया प्रीव्यू बॉट्स के लिए अनुमति: FacebookExternalHit, FacebookBot, Twitterbot, LinkedInBot;
- Bingbot के लिए -
Crawl-delay: 5और बंद किए गए अनुभागों की लंबी सूची:/gz/cart/,/gz/checkout/,/perfil/vendedor/,/perfil/comprador/,/navigation/,/noindex/और अन्य।
इससे दो व्यावहारिक बातें निकलती हैं। पहली: कार्ट, चेकआउट और उपयोगकर्ता प्रोफाइल स्पष्ट रूप से बंद हैं - वहाँ तकनीकी या कानूनी रूप से नहीं जाना चाहिए। दूसरी: Crawl-delay: 5 खोज बॉट के लिए एक ईमानदार मार्गदर्शक है, जिसकी गति प्लेटफ़ॉर्म स्वचालन से अपेक्षा करता है। एक पते से अनुरोध के बीच पांच सेकंड एक उचित प्रारंभिक बिंदु है, न कि हवा से कोई संख्या।
सही तरीके से कैसे इकट्ठा करें: कार्रवाई का क्रम
- संग्रह मैट्रिक्स को ठीक करें। "Mercado Libre" नहीं, बल्कि "देश × डिलीवरी क्षेत्र" के जोड़े की सूची। अर्जेंटीना के लिए यह, उदाहरण के लिए, कैपिटल फेडरल, कॉर्डोबा, रोसारियो, मेंडोज़ा है; ब्राज़ील के लिए - साओ पाउलो, रियो, बेलो होरिज़ोंटे, रेसिफ़। क्षेत्र निर्दिष्ट किए बिना कीमत का कोई अर्थ नहीं है, और यह निर्णय पहले कोड की पंक्ति से पहले लिया जाता है।
- ज़रूरत के देश का निवासी IP लें। ब्राज़ीलियाई और मेक्सिकन विंडो पर सर्वर पते ने पूरी तरह से अवरोध को पार नहीं किया, जबकि अर्जेंटीनी पर पहले अनुरोध के बाद थक गए। स्थानीय निवास पता पहुंच और विश्वसनीयता दोनों का समाधान करता है: प्लेटफ़ॉर्म आपको वही दिखाता है जो यह स्थानीय खरीदार को दिखाएगा।
- संपूर्ण सत्र के लिए IP बनाए रखें। सत्र कुकी 30 मिनट तक जीवित रहती है - प्रत्येक अनुरोध पर रोटेशन इसे और चुने गए क्षेत्र को रीसेट करता है, और आप फिर से डिफ़ॉल्ट कोड प्राप्त करते हैं। एक क्षेत्र के लिए 10-30 मिनट की चिपचिपी सत्र, फिर बदलाव। हम खिड़की की लंबाई कैसे चुनें, इस पर चर्चा की है चिपचिपी सत्रों पर गाइड में।
- ब्राउज़र इंजन का उपयोग करें, न कि कच्चे HTTP क्लाइंट का।
/gz/account-verificationपृष्ठ पूरी तरह से JavaScript पर आधारित है: स्क्रिप्ट निष्पादन के बिना आप हमेशा अवरोध पर रहेंगे। Playwright या चरणों के बीच स्थिति बनाए रखने वाले समकक्ष। - स्पष्ट रूप से डिलीवरी क्षेत्र निर्धारित करें। लिंक
/addresses/v3/navigation/hubपर जाता है; पते को स्थापित करने के बाद स्थिति सत्र कुकी में जीवित रहती है। इस प्रक्रिया को एक बार सत्र में चलाएँ, न कि प्रत्येक कार्ड पर। - सुनिश्चित करें कि
location_infoचेकसम है। प्रत्येक सहेजे गए पृष्ठ पर जांचें किzipcodeलक्षित के साथ मेल खाता है, औरdefault_zipcodefalseहो गया है। यदि फ्लैगtrueपर बना रहा - डेटा विंडो में पंक्ति नहीं लिखते हैं, यह उस क्षेत्र के लिए नहीं इकट्ठा किया गया है। यह एक जांच मुख्य रूप से चुप्पी दोष को समाप्त करती है। - सर्वर HTML से कीमतें लें। मूल्य और डिलीवरी के बैनर पहले से ही सर्वर पर चित्रित किए गए हैं - आंतरिक JSON एंडपॉइंट्स का पीछा करने की आवश्यकता नहीं है। कीमत के साथ
zipcode,user_zone,currency_idऔर समय की मुहर को पास रखें: इनके बिना संख्या की पुष्टि नहीं की जा सकती। - गति बनाए रखें। प्लेटफ़ॉर्म से मार्गदर्शक - एक पते से अनुरोधों के बीच पांच सेकंड। गति की आवश्यकता है - पते के पूल को बढ़ाएँ, न कि एक IP से आवृत्ति: एक पते से स्पाइक ही अवरोध को बंद कर देता है।
छिपे हुए खतरे, जिनके बारे में बाद में पता चलता है
डिफ़ॉल्ट क्षेत्र का चुप्पा दोष। सबसे महंगी गलती अपवाद के साथ नहीं गिरती। डेटा इकट्ठा किया जाता है, रिपोर्ट बनाई जाती है, मूल्य निर्धारण का निर्णय लिया जाता है - और केवल एक तिमाही बाद पता चलता है कि ब्राज़ील के लिए सभी विश्लेषण साओ पाउलो के एक क्षेत्र का वर्णन करता है।
पृष्ठों का वजन। एक परिणाम पृष्ठ - 2.4 MB। चार देशों और चार क्षेत्रों में प्रति दिन एक हजार पृष्ठ - यह महीने में दर्जनों गीगाबाइट ट्रैफ़िक है। निवासी दर पर गीगाबाइट के लिए भुगतान करने पर यह मुख्य व्यय है, इसलिए ब्राउज़र इंजन में छवियों और फ़ॉन्ट्स को लोड करना तुरंत बंद करना समझदारी है: कीमतें HTML में होती हैं, पार्सर के लिए चित्र - शुद्ध अधिशेष।
निष्क्रियता के बिना देशों की तुलना। ARS, BRL, MXN और विभिन्न विभाजक। संग्रह की तारीख पर विनिमय दर के अनुसार एक मुद्रा में लाएँ और मूल कीमत और मुद्रा को अलग से रखें, अन्यथा पीछे की ओर गणना करना संभव नहीं होगा।
आधिकारिक API पर निर्भरता। यदि एकीकरण वास्तव में API पर है, तो 30 अगस्त 2026 से अलग अनुप्रयोगों की आवश्यकता और क्वेरी से हेडर में टोकन के स्थानांतरण की आवश्यकता को ध्यान में रखें। API तक पहुँच खोने का मौन नुकसान आपके कोड में बग के समान दिखता है।
इस कार्य के लिए कौन से प्रॉक्सी की आवश्यकता है
निवासी - कीमतों और डिलीवरी को इकट्ठा करने के लिए कार्यशील विकल्प। आपको उसी देश का पता चाहिए, जिसकी विंडो आप खींच रहे हैं, और बेहतर है कि वह क्षेत्र हो, जिसकी डिलीवरी क्षेत्र आप जांच रहे हैं: इस तरह डेटा प्राप्त होते हैं और विश्वसनीय बने रहते हैं। निवासी प्रॉक्सी सत्र को बनाए रखने के साथ दोनों आवश्यकताओं को तुरंत पूरा करती हैं।
मोबाइल - जहाँ अवरोध विशेष रूप से जिद्दी है। लैटिन अमेरिका एक ऐसा क्षेत्र है जहाँ मोबाइल ट्रैफ़िक का उच्च हिस्सा है, और एक सेलुलर ऑपरेटर का पता प्लेटफ़ॉर्म के लिए अधिकतम सामान्य दिखता है। यह संकीर्ण, लेकिन महत्वपूर्ण कटों पर उचित है, न कि बड़े पैमाने पर निकासी पर।
डेटा सेंटर प्रॉक्सी - разведक और सेवा कार्यों के लिए: robots.txt पढ़ना, पृष्ठ की संरचना को निकालना, डोमेन की उपलब्धता की जांच करना। नियमित रूप से कीमतों को इकट्ठा करने के लिए, जैसा कि जांच से पता चला, संसाधन पर्याप्त नहीं हैं।
संक्षेप में
2026 में Mercado Libre डेटा को अनामित रूप से नहीं देता। आधिकारिक API PolicyAgent द्वारा नीतियों के कारण बंद हो गया है, विंडो अपने उपकरण की जांच से मिलती है, और मुख्य संख्या - कीमत और डिलीवरी - प्राप्तकर्ता के क्षेत्र से गणना की जाती है, जिसे प्लेटफ़ॉर्म डिफ़ॉल्ट रूप से लागू करता है, यदि इसे निर्दिष्ट नहीं किया गया है। यहाँ सही पार्सर गलत से चालाकी से नहीं, बल्कि अनुशासन से भिन्न होता है: देश, क्षेत्र, मुद्रा और location_info प्रत्येक पंक्ति के साथ। बाकी सब इस बात का सवाल है कि आपके अनुरोध कहाँ से आते हैं।
