# Scraping Naver: Search Results, Images, Products, Ads using Python > Source: https://scrape.do/blog/naver-scraping/ Published: 2025-05-09 · Updated: 2025-09-01 · Authors: Onur Mese · Categories: Scraping Use Cases [Working plug-and-play codes on Github. 🛠](https://github.com/scrape-do/scrapedo-scrapers/tree/main/naver-scraper) Naver dominates **over 60% of Korea’s search market**, powers countless Smart Stores (its e-commerce platform), and handles everything from news to payments. \*If you’re scraping Korean web data, you’ll hit Naver **FIRST THING.\*** And Naver might hit you back with an outrageous CAPTCHA like this that will break your scrapers fast: ![naver captcha](/uploads/blog/scraping-naver-bypass-blocks-and-extract-product-data/naver-captcha_hu05f438db361f499f3be983c151bd0493_145168_1200x0_resize_q80_h2_box_3.webp) In this comprehensive guide, you'll learn, **without running into blocks or CAPTCHAs,** how to scrape: * [Organic Search Results from Naver's Search Engine](#scraping-all-organic-search-results-from-navers-search-engine) * [Paid Ads from Naver Search Ads](#scraping-all-paid-ads-from-naver-search-ads) * [Image Results Exported from Naver's Backend](#scraping-naver-image-search-results-through-backend-api) * [E-Commerce Product Pages from smartstore.naver.com and brand.naver.com](#scraping-naver-e-commerce-product-pages) We will build absolutely cost-effective, unblockable, and scalable scrapers that will help you get the data you need. ## Scraping All Organic Search Results from Naver's Search Engine Naver’s search engine powers the majority of Korean web traffic so scraping its organic results is often your first step, especially if you have SEO in your crosshairs. The search results pages use a modern JavaScript-rendered approach, where results are embedded in JavaScript data structures rather than traditional HTML elements. We'll use Python with `requests`, `BeautifulSoup`, and Scrape.do. ### Setup We’ll install the required libraries and define our token and search query. ```bash pip install requests beautifulsoup4 ``` > **Note:** As of September 2025, Naver has updated their search results to use JavaScript-rendered content. This guide reflects the modern approach using JavaScript data extraction. Make sure to insert your Scrape.do token and define the search query you're going for: ```python token = "" query = "게이밍 헤드셋" ``` > Since we're scraping the Korean search results, I'm using the Korean-translation of "gaming headset" as my target search query so that results work as intended. ### Scraping First Page of Naver Search Results Let’s start by scraping just the first page of organic results for a search term, **by scraping the second results page.** Unlike what we come across when [scraping Google Search](https://scrape.do/blog/scraping-google-search-results/), Naver's first page is a mix of everything their Search products have to offer. And even though the first page contains a few organic results **the second and so on pages include only organic results starting from first ranking URL, so we lose nothing if we start from page 2.** This is the URL format Naver uses for its web search results: ```text https://search.naver.com/search.naver?where=web&query=게이밍+헤드셋&page=2&start=1 ``` Here’s what each part means: * `where=web`: We're asking for regular web search results. * `query=게이밍+헤드셋`: The actual search term (in this case, “gaming headset” in Korean), URL-encoded. * `page=1`: Which page of results we want (first page here). * `start=1`: The index of the first result to display. For page 2, this would be 16; page 3, it’s 31, and so on. To scrape this page without getting blocked, we’ll route it through the Scrape.do API and use `geoCode=kr` so the request originates from Korea. Here's how we construct the request: ```python import requests import urllib.parse from bs4 import BeautifulSoup import re import json # Your Scrape.do token token = "" # Define the search query query = "게이밍 헤드셋" # Build Naver URL for first page of results naver_url = f"https://search.naver.com/search.naver?where=web&query={urllib.parse.quote(query)}&page=2&start=1" # Wrap it in Scrape.do API api_url = f"https://api.scrape.do?token={token}&url={urllib.parse.quote_plus(naver_url)}&geoCode=kr&super=true" # Send the request response = requests.get(api_url) soup = BeautifulSoup(response.text, 'html.parser') ``` Now let's parse the actual search results. **Modern Naver Structure (2025+):** Naver now embeds search results in JavaScript data structures within `