Welcome to Decodo Blog!

Build knowledge on our solutions and streamline your workflows with step-by-step guides and expert tips.

FAQ widget showing 'Find out everything you need to know' and 'Start the chat' button on dark dotted gradient background

Python Try and Except: How to Handle Errors Without Crashing Your Script

An unhandled runtime error crashes a Python program immediately. The try/except is the standard mechanism for handling those failures and keeping the script under control. This guide covers all the exception-handling clauses: tryexceptelsefinally, and raise, alongside practical guidelines for keeping exception handlers narrow, explicit, and maintainable.
Node Fetch Proxy

How to Use a Proxy With node-fetch: Setup, Rotation, and Troubleshooting Guide

node-fetch proxy routes your fetch requests through an intermediary server, so the target site sees the proxy's IP instead of yours. It's the standard fix for IP blocks, geo-restrictions, and rate limiting in Node.js scraping. The catch: neither node-fetch nor Node's native fetch supports proxies natively, so you need an external agent library to bridge the gap.
Neon video camera icon glowing on a rounded square tile with rainbow wave streaks across a dark textured background

How to Scrape IMDb Data: Step-by-Step Guide with Python

To scrape IMDb data with Python at scale, you work with the 6 data layers IMDb sends to the browser instead of parsing the rendered HTML. IMDb is a Next.js application sitting behind AWS Web Application Firewall (AWS WAF) Bot Control, and the data lives in JSON-LD blocks, hydration payloads, and an internal GraphQL endpoint. To reach any of them past IMDb's WAF, you need more than plain requests and a real User-Agent, and the rest of this guide builds the setup that holds up.
Cursor AI

Using Cursor AI To Build a Web Scraper: From Setup to Production With Decodo

Cursor AI is a code-aware IDE that generates, debugs, and refines scraper code through natural language, advancing AI-assisted scraping from concept to production. Building scrapers by hand means dealing with selector breakage, anti-bot walls, and proxy rotation logic that compounds every time a target site changes. This article covers setup, Cursor rules, scraper types, Decodo MCP integration, and project maintenance.
'Notice' panel with placeholder text, colorful status lines, shield icon, and progress bar with controls on dark background

Selecting Elements by Class in XPath: Syntax, Examples, and Pitfalls

Class names are often the quickest way to target elements when you scrape a page. But in XPath, they are not as simple as they look. Because HTML stores multiple classes inside a single space-separated attribute value, a selector that seems correct can still match the wrong element or miss the right one entirely. In this blog post, you’ll learn how to select elements by class in XPath, when to use exact or partial matching, and how to avoid common class matching pitfalls.
Authentication method panel showing users and quotas above Endpoint generator with code snippet on dark dotted background

urllib3 vs. Requests: Which Python HTTP Library to Use?

Choosing between urllib3 and Requests is like choosing between a manual and an automatic transmission, except one (Requests) is built into the other (urllib3). The automatic gets you moving in seconds, but the manual gives you control over every shift. Both libraries power web scraping, API calls, and automation, and this article will tell you which belongs in your project.
Globe with location pin centered, orbital colored paths encircling it against dark dotted background

Smartproxy.org Impersonates Our Brand And Routes Users Into IPs Tied To IPIDEA

Smartproxy.org has nothing to do with us. The website impersonates the former name of our company, Smartproxy, which we dropped back in April 2025. Independent research from Proxyway now shows something worse than name confusion. Roughly 38% of Smartproxy.org’s IPs overlap with IPIDEA, the proxy network Google disrupted in January 2026.
Python code panel showing 'import requests' and a requests.post scraping example on a dark background with colorful waves

What is Charles Proxy: Traffic Inspection, Debugging, And Web Scraping Guide

Charles Proxy (or simply Charles) is an HTTP debugging proxy that acts as a man-in-the-middle between the computer and the internet, which developers and QA teams use to monitor, inspect, and modify data flow. In web scraping, it allows users to intercept, decrypt, and manipulate network traffic to extract data. This guide covers setup, core features, SSL handling, practical use cases, scraping workflows, troubleshooting, and notable alternatives of Charles Proxy.
Authentication window displaying Account_1, Account_2, Account_3 tabs and sign-up buttons on dark dotted gradient background

How to Send JSON With cURL: Syntax, Flags, and Practical Examples

If you work with APIs, webhooks, automation scripts, or web scraping, chances are you've needed to send JSON with cURL. cURL is one of the most widely used command line tools for making HTTP requests, and modern APIs almost always rely on JSON payloads. In this guide, you’ll learn how to send JSON with cURL, work with files and authentication, debug requests, and route traffic through proxies when needed.
The End of “Free” Public Data?

The End of "Free" Public Data? How AI Is Challenging the Industry

Cloudflare customers now send more than one billion HTTP 402 "Payment Required" responses on an average day. That figure, mentioned in passing in a recent Cloudflare blog post, signals a real shift. A 20-year convention around free public data is being repriced through pay-per-crawl and AI bot management. And businesses that depend on fresh public data now need to figure out how to react and how to do it fast.
Line chart plotting purple trend with toolbar 'Last 24 Hours   Last week   Last month   Custom' on dark dotted background

Elixir Web Scraping: A Practical Step-by-Step Guide

Elixir web scraping solves one of the hardest problems in high-volume data collection: concurrency without thread overhead. The BEAM virtual machine (Erlang's runtime) runs each HTTP request as a lightweight process, not an OS thread, so you can fetch thousands of pages concurrently. If a process crashes, the supervisor restarts it automatically. This guide builds a complete Elixir scraper from scratch, covering static pages, paginated targets, JavaScript-heavy sites, and anti-bot countermeasures.
JSON Response panel showing scraped API output with 'Live preview' button inside dark Decodo dashboard UI

Asynchronous Web Scraping in Python: Build Faster Scrapers With asyncio and aiohttp

A scraper that fetches pages one at a time spends most of its time waiting on the network. Asynchronous web scraping in Python (built on asyncio and aiohttp) fixes that by handling many requests at once on a single event loop. This guide walks through building a working async scraper, then covers the proxy, retry, and anti-bot escalation patterns you'll need at scale.
HTML code panel displaying <!DOCTYPE html> and head meta tags on a dark background with colorful wavy lines

XPath Using Text: How to Select Elements by Text Value

​​HTML structure shifts constantly, but the visible text on a page tends to remain more stable. That stability is what makes text-based selectors useful in web scraping. This guide covers the core functions you need to work with text in XPath: text()contains()starts-with()normalize-space(), and translate(), including where each one breaks and how to combine them to build selectors that survive page updates.

Search UI 'Best Memorial Day Sales' showing a downward chart above 'Outdoor' results listing 'Patio dining set, six-piece'

Memorial Day Sales 2026: Best Days and Deals to Shop

Memorial Day weekend lands on Monday, May 25, 2026, opening one of the most aggressive sales events on the U.S. retail calendar. With more shoppers planning to participate but spending less per trip, the next two weeks will reveal which retailers, categories, and days deliver real savings, and which discounts simply look loud.

eCommerce store UI behind JSON "response" panel, "Scraping" label on dark dotted background

Playwright XPath: How to Locate and Interact With Elements

If you're building a Playwright scraper and not using Xpath, you're probably leaving your most precise location strategy on the table. Think of the DOM as a tree of nodes, and an XPath expression as the specific zip code to reach any node. In this article, we'll explain XPath fundamentals, how to construct XPath expressions, and how to interact with elements, including real-world examples.

Discount voucher labeled "DISCOUNT", showing barcode and binary code, beside a glowing stopwatch on dark neon background

The Cart Abandonment Discount: How Long Each Retailer Category Makes You Wait

You add a pair of jeans to your cart, get distracted, and close the tab. Ten hours later, an email lands in your inbox with the subject line "Forgot something? Here's 15% off." That email was scheduled for you, on a timer someone set 18 months ago, and every retail category has its own version of it.


I lead product marketing at Decodo, where we tracked 1.5K products across 120 retailers in 40+ countries throughout 2025, and here’s what we found about cart abandonment discounts.

Line chart showing spikes and a time filter 'Last 24 hours | Last week | Last month | Custom' on a dark dotted background

JSON.parse() in JavaScript: A Complete Guide

Every JSON payload a JavaScript app receives passes through JSON.parse(). The method has to handle malformed payloads, lossy type round-trips, files that exceed Node's default heap, and APIs that change shape without warning. Each of those failures surfaces at parse time. This guide covers them all, including practical patterns for web scraping.
Notice document showing lines of text over dark gradient UI with colorful code-like bars and a progress bar below

Puppeteer vs. Selenium: Which Tool Should You Use for Web Scraping?

Puppeteer and Selenium are the 2 most-used browser automation tools for scraping JavaScript-heavy pages. Comparing puppeteer vs selenium for web scraping isn't just about speed. Browser support, language support, and anti-bot handling all play a role. This guide covers what each tool does well, what it doesn't, and how to pick the right one.

© 2018-2026 decodo.com (formerly smartproxy.com). All Rights Reserved