Naver Blog Scraper (Search + Full Posts) avatar

Naver Blog Scraper (Search + Full Posts)

Pricing

from $1.50 / 1,000 full blog posts

Go to Apify Store
Naver Blog Scraper (Search + Full Posts)

Naver Blog Scraper (Search + Full Posts)

Scrape Naver Blog by keyword, blog ID or post URL. Get clean full post text, images, tags, places, like and comment counts and a sponsored-post hint, or cheap search rows only. Supports incremental monitoring.

Pricing

from $1.50 / 1,000 full blog posts

Rating

0.0

(0)

Developer

Juddroid

Juddroid

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

9 days ago

Last modified

Share

Turn Naver Blog into clean, structured data: search by keyword, crawl whole blogs, or paste post URLs, and get full post text with images, tags, places, likes, comments and a sponsored-post hint.

What does Naver Blog Scraper do?

Naver Blog is where Korean consumers write reviews of restaurants, cafes, cosmetics, apps, hospitals and travel spots, so it is the main source for Korean word-of-mouth research. This Actor searches the Naver Blog tab by keyword (sorted by relevance or newest first, with a date range), reads the newest posts of any public blog, and scrapes individual post URLs in any format. For every post it returns the clean body text with paragraph breaks, plus metadata such as author, KST publish time, category, tags, images, place pins, like and comment counts. If you only need the search listing, switch off full posts and pay a third of the price per row.

Why use it

  • Three input modes in one run. Keywords, blog IDs and post URLs can be combined. A post found by several keywords is returned once, with every matching keyword listed in matchedQueries.
  • Clean text from every editor generation. It reads SmartEditor ONE (se-main-container), SmartEditor 3 and the legacy 2009-2015 editor, so old posts and tables come out as readable text instead of HTML soup.
  • Sponsored-post detection for marketers. isSponsoredHint flags 협찬, 광고, 소정의 원고료, 제공받아 and similar disclosures. It also catches disclosure banners from review platforms such as Super Members (슈퍼멤버스) and revu.net (레뷰), which other scrapers miss because the disclosure is an image. ownPurchaseVerified shows Naver's own 내돈내산 receipt verification.
  • Built for monitoring. Set onlyNewSince to lastRun and schedule the Actor. Each keyword and blog remembers what it already delivered, so every run returns only new posts.
  • Place data for local businesses. Map pins in a post are returned as places with name, address, coordinates and the Naver Place link.
  • Fair billing. Deleted, private, adult (login-only) and empty posts are returned as failed rows and never charged.
  • Polite and resilient. Low default concurrency, request pacing, backoff on HTTP 429, and a graceful stop with partial results if Naver keeps blocking.

What data you get

FieldDescription
title, url, mobileUrlPost title and canonical desktop and mobile links
blogId, logNoNaver blog ID and post number (a stable unique key)
author, blogNameAuthor nickname and blog name
publishedAtPublish time in ISO 8601 with Korea time offset (+09:00)
category, topicThe blogger's category and Naver's topic classification (e.g. 맛집>카페)
textClean body text with paragraph breaks
wordCount, charCountWord count (space-separated) and character count without spaces
images, imageCountImage URLs in the post body (stickers and map snapshots excluded)
videosNumber of embedded videos
linksOutbound links in the body
tagsThe post's tags
placesMap pins: name, address, latitude, longitude, Naver Place URL
likeCount, commentCountPublic like (공감) and comment counts
isSponsoredHint, sponsoredSignalsWhether a sponsorship disclosure was found, and which ones
ownPurchaseHint, ownPurchaseVerified내돈내산 wording, and Naver's verified receipt badge
searchQuery, matchedQueries, searchRankKeyword that found the post, all matching keywords, position in Naver results
htmlRaw body HTML (only when includeHtml is on)
scrapedAtWhen the row was collected

Search rows (when scrapeFullPost is off) contain title, url, blogId, blogName, snippet, publishedAt, publishedAtText, thumbnail, rank and searchQuery. Blog feed rows also include category, tags and, when available, likeCount and commentCount.

How to use

  1. Enter one or more search keywords, blog IDs or post URLs.
  2. For keywords, choose the sort order (relevance or newest first), an optional period, and how many posts you want per keyword.
  3. Keep Scrape full post text on for full posts, or turn it off for cheaper search rows.
  4. For monitoring, set Only posts published since to lastRun and add a schedule.
  5. Click Start and download the results as JSON, CSV or Excel, or read them through the API.
{
"searchQueries": ["성수동 카페", "성수 카페 추천"],
"sort": "date",
"period": "1w",
"maxPostsPerQuery": 50,
"blogIds": ["csm2469"],
"maxPostsPerBlog": 20,
"postUrls": [
"https://blog.naver.com/baaaba/224441089917",
"https://m.blog.naver.com/PostView.naver?blogId=gkdudtjr2&logNo=224441926092"
],
"scrapeFullPost": true,
"onlyNewSince": "lastRun",
"monitoringKey": "client-a",
"maxConcurrency": 3
}

Output example

A full post from a local test run (text, images and tags trimmed):

{
"type": "post",
"status": "ok",
"url": "https://blog.naver.com/leesunyuy/224442754984",
"mobileUrl": "https://m.blog.naver.com/leesunyuy/224442754984",
"blogId": "leesunyuy",
"logNo": "224442754984",
"title": "[ 성수동 카페 디저트 맛집 / 성수 감성카페 ] 비아트 성수",
"author": "Sunnia",
"blogName": "써니아의 좌충우돌 신혼라이푸",
"publishedAt": "2026-10-15T16:50:33+09:00",
"category": "생활, 노하우, 쇼핑",
"topic": "맛집>카페",
"text": "비아트 성수 (서울특별시 성동구 아차산로5길 24-45 2층)\n\n안녕하세요 #소통러 #써니아 입니다\n\n남편과 평일 성수동 데이트로 예쁜\n감성카페 찾아서 비아트성수 왔어요.\n\n성수동의 사람 많고 시끄러운 쪽이\n아닌 다소 한가하고 여유로운 골목길\n위치한 카페로 _ 디저트 맛집 소문난곳! ...",
"wordCount": 413,
"charCount": 1441,
"images": [
"https://d3i7y4ugnppb9p.cloudfront.net/contract/track/503e0260-c2e0-11f1-9d70-05effd89c856/banner-small.png",
"https://mblogthumb-phinf.pstatic.net/MjAyNjEwMTVfMjc1/MDAxNzkyMDQ0NjA5ODE3._f4NpfOO92Vpa0-rUH379Zhk8TYeHOCms5esqW8386gg.7HYjzO57E5fvnT5BCFo4DVswzV640CmistvyOnw8yv4g.JPEG/output%EF%BC%BF1833873666.jpg"
],
"imageCount": 23,
"videos": 0,
"links": [],
"tags": ["성수역카페디저트", "성수동카페디저트", "성수감성카페", "성수데이트", "성수카페추천"],
"places": [
{
"name": "비아트 성수",
"address": "서울특별시 성동구 아차산로5길 24-45 2층",
"placeId": "1251057335",
"latitude": 37.5471439,
"longitude": 127.0542613,
"placeUrl": "https://m.place.naver.com/place/1251057335"
}
],
"likeCount": 10,
"commentCount": 1,
"isSponsoredHint": true,
"sponsoredSignals": ["슈퍼멤버스 배너"],
"ownPurchaseHint": false,
"ownPurchaseVerified": false,
"source": "search",
"searchQuery": "성수동 카페",
"matchedQueries": ["성수동 카페"],
"searchRank": 1,
"editor": "smarteditor-one",
"scrapedAt": "2026-10-16T08:28:35.425Z"
}

A deleted post comes back like this, and is not charged:

{
"type": "post",
"status": "failed",
"url": "https://blog.naver.com/csm2469/224000000001",
"inputUrl": "https://blog.naver.com/csm2469/224000000001",
"errorType": "noPost",
"error": "Post is not available (Naver error type: noPost). It may be deleted, private, or restricted."
}

Pricing

This Actor uses pay-per-event pricing with two events:

EventPriceWhen it is charged
blog-post$0.0015 per postA full post saved with non-empty body text
search-result$0.0005 per rowA search or blog feed row saved while scrapeFullPost is off

Worked examples:

  • The default example (1 keyword, 10 full posts) costs $0.015.
  • 1,000 full posts for an LLM or RAG dataset cost $1.50. 10,000 posts cost $15.
  • Daily monitoring of 20 keywords in search-row mode with about 30 new posts per keyword per day: 600 rows, or $0.30 per day.

Not charged: deleted, private, adult or login-only posts, posts without any text, invalid URLs or blog IDs, duplicates across keywords, posts filtered out by onlyNewSince, and the extra requests for search pages and like counts. A post is charged at most once per run. Direct post URLs are always scraped in full and charged as blog-post. Set a maximum cost per run in the run options and the Actor stops cleanly when it is reached.

Integrations and scheduling

  • Schedules: run hourly or daily with onlyNewSince: "lastRun" to receive only new posts. Use a different monitoringKey for each client or project.
  • Webhooks: trigger Slack, email, Zapier, Make or your own endpoint when a run finishes.
  • API: start runs and download datasets with the Apify API and client libraries for JavaScript and Python.
  • MCP and AI agents: the Actor works as a tool through the Apify MCP server, so agents can search Naver Blog and read posts in Korean on demand.

FAQ and limitations

How many search results can I get per keyword? Up to 1,000 per keyword. Naver serves 30 results per page, and very broad keywords may stop earlier when Naver ends the listing.

Why are some search-row dates approximate? Naver shows recent posts as "3시간 전" or "2주 전". Search rows keep the original text in publishedAtText and convert it to an approximate timestamp. Full posts always have an exact publishedAt.

How does "lastRun" work? The state is stored in the named key-value store naver-blog-scraper-state. Each run returns posts that were not delivered before and were published no earlier than one hour before the previous run, to cover search indexing delays. The first run returns everything up to your limits.

Is the sponsored hint always right? No. It is a heuristic. It looks for disclosure wording, tags, known review-platform banners and links. A disclosure that exists only as a custom image can be missed, and a post that discusses advertising can be flagged. Use sponsoredSignals to review the reason.

Can it read private, neighbor-only or adult posts? No. The Actor reads only public posts that anyone can open without logging in. Restricted posts are returned as failed and are not charged.

I got blocked. What now? The Actor backs off on HTTP 429 and stops gracefully if blocking continues, keeping everything collected so far. Lower maxConcurrency, try again later, or enable Apify Proxy.

Responsible use. Only public posts are collected, and the Actor does not log in or bypass access controls. Blog posts are copyrighted by their authors. Analysis, monitoring and research are typical uses, but republishing full posts or images may require the author's permission. Author nicknames and blog IDs are personal data of the bloggers, so handle them in line with PIPA, GDPR and your own data policy, and keep only what you need.

한국어 안내

네이버 블로그 검색 결과, 특정 블로그의 최신 글, 개별 포스트 URL을 한 번에 수집해 본문 전체 텍스트와 메타데이터를 JSON, CSV, 엑셀로 받을 수 있는 Actor입니다.

주요 기능

  • 키워드 검색(관련도순, 최신순, 기간 지정), 블로그 ID별 최신 글 수집, 포스트 URL 직접 입력을 함께 사용할 수 있습니다.
  • 스마트에디터 ONE, 스마트에디터 3, 구 에디터 글의 본문을 문단 단위로 깔끔하게 추출합니다.
  • 작성자, 발행 시각(KST), 카테고리, 태그, 이미지, 지도 장소, 공감 수, 댓글 수를 함께 제공합니다.
  • 협찬, 광고, 소정의 원고료, 제공받아 같은 문구와 슈퍼멤버스, 레뷰 같은 체험단 플랫폼의 배너를 감지해 isSponsoredHint로 표시합니다. 내돈내산 영수증 인증 여부도 ownPurchaseVerified로 알려 줍니다.
  • onlyNewSince에 lastRun을 넣고 스케줄을 걸면 매번 새 글만 받아 볼 수 있습니다.

활용 사례

  • 바이럴 모니터링: 브랜드명, 매장명, 제품명 키워드를 최신순으로 매일 수집해 새 후기를 놓치지 않습니다.
  • 체험단/협찬 분석: 경쟁 브랜드 후기 중 협찬 글의 비율, 협찬 플랫폼, 노출 순위를 비교합니다.
  • 리뷰 감성 분석: 본문 전체 텍스트로 긍정과 부정 의견, 자주 언급되는 메뉴나 기능을 분석합니다.
  • LLM 데이터셋: 문단 구분이 살아 있는 한국어 본문을 RAG 인덱스나 학습 데이터 구축에 활용합니다. 재배포 시 저작권을 꼭 확인하세요.

요금: 본문 포함 포스트 1건당 $0.0015, 검색 결과 행 1건당 $0.0005입니다. 삭제, 비공개, 성인 인증 글과 실패한 항목은 과금되지 않습니다.

이용 시 유의사항: 로그인 없이 누구나 볼 수 있는 공개 글만 수집합니다. 글과 이미지의 저작권은 작성자에게 있으므로 분석과 모니터링 용도로 사용하고, 원문을 재게시할 때는 작성자의 허락을 받으세요.