note.com Hashtag Scraper: Articles & Creators
Pricing
from $1.50 / 1,000 results
note.com Hashtag Scraper: Articles & Creators
Scrape note.com hashtag pages into rows: article title, URL, price, paywall flag, likes, comments, publish date and creator (name, urlname, X handle, custom domain). Optional details add body text, categories, follower counts and public links. Japan residential proxy built in. Unofficial.
Pricing
from $1.50 / 1,000 results
Rating
0.0
(0)
Developer
reventadata
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Unofficial. This Actor is not affiliated with, authorised by, endorsed by, or in any way officially connected to note.com or note株式会社. "note" is a trademark of its respective owner and is used here only to describe what this tool reads. It reads the same public pages a logged-out browser does.
Reads note.com (Japan's creator and blog platform) by hashtag and returns one row per
article: title, URL, publication time, price in JPY, free/paid/membership flags, likes,
comments, header image, and the creator's handle, name and X account. With includeDetails
on, it also opens each article page for the readable text (the whole article when free,
the part above the paywall when paid), the paywalled character count, categories, and the
creator's public profile: followers, following, note count, bio, external links (YouTube,
Instagram, Facebook, LINE, TikTok...), and the URLs the creator wrote in the bio or article.
What does it do?
- Opens
https://note.com/tag/<hashtag>(the popular list) and, withmodebothornew,https://note.com/tag/<hashtag>?mode=new(the newest list). - Parses the articles the page embeds: 20 on tags served as a search list, about 40-50
(37-50 measured) on large tags served as a timeline list. There is no further page on the site without its
JSON API, which note.com's
robots.txtcloses to everyone but three search engines, so this Actor never calls it. To reach past one page,expandRelatedTagsalso reads up to 10 related hashtags the tag page lists (e.g.AIlistsAGI,AI Agent,AI Act...). - Applies your filters (
keywords,excludeKeywords,freeOnly,minLikes,publishedAfter), optionally fetches the article page, and pushes the row.
Why use it?
- Robots-clean by design: two URL shapes, both outside the site's
Disallowlist; no API, no search endpoint, no login, no cookies. - Creator data from the page itself: follower counts, bios and links come from the article page's own embedded profile object, not from a search-engine snippet.
- Prices as the page states them:
pricein JPY,canRead,hasSubscriptionandpaywalledCharsare the page's own values.isFreeis the page's flag on the search list andprice == 0with no membership gate on the timeline list;isPaywalledisnot canRead. - Public data only: creator names, bios, follower counts, social handles and the URLs a creator publishes are in the rows; nothing from behind a login.
Input
| Field | Type | Default | What it does |
|---|---|---|---|
hashtags | array | required | Hashtags as written on note.com (AI, #日記) or tag URLs (https://note.com/tag/ChatGPT). |
mode | string | both | popular, new, or both (two pages per tag, duplicates removed). |
includeDetails | boolean | false | Fetch each article page for text, paywall count, categories and the creator profile. One request per article. |
expandRelatedTags | integer | 0 | Also read this many related hashtags (0-10) from each seed tag page. |
maxItems | integer | 200 | Stop after this many rows. |
keywords | array | [] | Keep an article when any term appears in its title (and, with details, text, description or bio). Case- and width-insensitive substrings (AI matches AI; kana voicing marks are kept, so バル does not match ハル). |
excludeKeywords | array | [] | Drop an article when any term appears in the same fields. |
freeOnly | boolean | false | Keep only articles the page marks free (no price, no membership gate). |
minLikes | integer | unset | Keep only articles with at least this many likes. |
publishedAfter | string | unset | YYYY-MM-DD (Japan time) or an ISO timestamp. |
proxyConfiguration | object | Apify residential, JP | The measured transport. Without a proxy or on datacenter exits the site often answers a listing shell with no articles, which the Actor retries until the run clock runs low. |
Sample input
{"hashtags": ["AI"],"mode": "both","includeDetails": true,"maxItems": 10}
Output
One row per article. Fields marked (details) are null or empty unless includeDetails is on.
| Field | Type | Description |
|---|---|---|
id, key | integer, string | note.com article id and key (n... in the URL). |
title, url | string | Title and https://note.com/<creator>/n/<key>. |
tag, listMode | string | The hashtag page and list (popular / new) the article was found on. |
publishedAt | string | ISO 8601 with the page's Japan offset, e.g. 2026-10-13T06:59:35.000+09:00. |
price, currency | integer, string | Single-purchase price in JPY (0 when none) and JPY. |
isFree | boolean | The page's free flag: no price and no membership gate. |
hasSubscription | boolean | Sold through a membership or subscription. |
oneshotLowestPrice | integer / null | Lowest single-purchase price when the search list gives one. |
isPaywalled, canRead | boolean / null | Whether a logged-out visitor can read the whole article, as the page flags it. |
likeCount, commentCount, imageCount | integer / null | The page's counts (the timeline list carries likes only). |
eyecatch, format | string / null | Header image URL; note.com editor format version. |
creatorUrlname, creatorName, creatorUrl, creatorImage | string | Creator handle, display name, https://note.com/<handle>, profile image. |
creatorTwitter | string / null | X (Twitter) handle linked on the profile. |
creatorCustomDomain | string / null | Host of the custom domain the creator publishes on (e.g. note.kidzania.jp), when the page gives one. |
description (details) | string / null | Article description (empty on every page read so far). |
bodyHtml, bodyText, bodyChars (details) | string, string, integer | The readable part of the article as HTML, as text, and its length. |
paywalledChars (details) | integer | Characters behind the paywall as the page counts them (0 when free). |
categories (details) | array | Category names, e.g. ["テクノロジー", "IT"]. |
hashtags (details) | array | Hashtags the article page lists, e.g. ["#COMEMO", "#日経"]; empty on pages that list none. |
anonymousLikeCount (details) | integer / null | Likes from visitors without an account. |
creatorFollowers, creatorFollowing, creatorNoteCount (details) | integer / null | The creator's counts. |
creatorProfile (details) | string / null | Bio text. |
creatorExternalLinks (details) | array | External profile links (YouTube, Instagram, Facebook, LINE, TikTok...). |
creatorSocials (details) | object | Linked handles by platform, e.g. {"twitter": "goto_finance"}. |
creatorCreatedAt (details) | string / null | Account creation time. |
contactUrls (details) | array | URLs the creator wrote in the bio or the readable article text. |
detailsStatus | string | ok, skipped (details off), redirect (article served from a custom domain or removed: listing fields only), failed. |
matchedKeywords | array | Which input keywords matched. |
scrapedAt | string | ISO 8601 UTC timestamp of the scrape. |
Sample output
{"id": 180134013,"key": "n855f02e7507c","title": "【EM367】AI企業がまさかの手のひら返し!政治まで動かす「AI減速論」、これはAIバブル崩壊の始まりなのか?","url": "https://note.com/eminyurumazu/n/n855f02e7507c","tag": "AI","listMode": "popular","publishedAt": "2026-09-14T07:39:05.000+09:00","price": 0,"currency": "JPY","isFree": false,"hasSubscription": true,"isPaywalled": true,"canRead": false,"likeCount": 545,"commentCount": 10,"imageCount": 15,"eyecatch": "https://assets.st-note.com/production/uploads/images/313451721/rectangle_large_type_2_04ee56f43a968477b79e889d1a927021.jpeg?fit=bounds&quality=85&width=1280","format": "4.1","creatorUrlname": "eminyurumazu","creatorName": "エミン ユルマズ","creatorUrl": "https://note.com/eminyurumazu","creatorImage": "https://assets.st-note.com/production/uploads/images/93053872/profile_3941332640c9867e552957a34afc4328.jpg?fit=bounds&format=jpeg&quality=85&width=330","creatorTwitter": "yurumazu_note","bodyHtml": "<table-of-contents name=\"3ba9078b-3d29-4b49-bfc0-771c1c0d06dd\" id=\"3ba9078b-3d29-4b49-bfc0-771c1c0d06dd\"><br></table-of-contents>","bodyChars": 0,"paywalledChars": 5327,"anonymousLikeCount": 18,"creatorFollowers": 31747,"creatorFollowing": 5,"creatorNoteCount": 762,"creatorProfile": "トルコ・イスタンブール出身。日本に留学し東京大学理科一類に合格、その後同大学院にて生命工学修士を取得。2006年野村證券に入社し、M&Aアドバイザリー業務に携わる。2024年レディーバードキャピタルを設立。https://www.eminyurumazu.com/","creatorSocials": {"twitter": "yurumazu_note"},"creatorCreatedAt": "2022-08-07T16:06:45.000+09:00","contactUrls": ["https://www.eminyurumazu.com/"],"detailsStatus": "ok","scrapedAt": "2026-10-22T08:48:31.595398+00:00"}
Limits, measured on 2026-10-22
- One page per tag and list. A tag page embeds 20 articles (search list) or about 40-50
(37-50 measured; timeline list, large tags). The site pages further only through
/api/v3/searches, which itsrobots.txtdisallows, so the Actor stops at the page.mode: bothandexpandRelatedTagsare the two ways to get more rows per run. - Keyword search is not offered.
/searchis disallowed byrobots.txt; a hashtag is the unit.keywordsfilters the rows the tag pages return. - Per-article hashtags come with
includeDetailsonly. The listing carries none; the article page lists them for some articles and none for others. The row always carries the tag it was found under. - Custom-domain creators: their article URL on note.com answers a redirect to the
custom domain; the row keeps the listing fields and
detailsStatusisredirect. - No emails are extracted. On 72 article pages read while building, no creator wrote an email address in a bio or in the readable text. The row carries the URLs, X handle and external links a creator publishes.
- Listing shell. The site sometimes answers a tag page without its article list; the Actor detects it by parsing (0 articles on a tag page) and retries on a fresh exit. On the default Japan residential proxy 25 of 25 probe pages came back whole.
- Comments, magazine contents, follower lists and anything behind a login are not read.
Cost
Pay per result. With includeDetails off, one request per tag page (20-50 rows); on,
one more request per row. Pages go through Apify residential proxy, billed on
compressed transfer (about 40 KB per tag page, 30-40 KB per article page, measured 2026-10-22).