Ameba Blog Profile Scraper
Pricing
from $1.00 / 1,000 scraped posts
Ameba Blog Profile Scraper
Scrapes a complete Ameba (ameblo.jp) blog profile: blogger info, blog stats, themes, monthly archive counts, and every post, with optional full post bodies, images, and hashtags.
Pricing
from $1.00 / 1,000 scraped posts
Rating
0.0
(0)
Developer
Harish Garg
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
16 days ago
Last modified
Categories
Share
Ameba Blog Profile Scraper extracts a complete public Ameba (ameblo.jp) blog in one run: the blogger profile, blog statistics, themes, monthly post archive, and every blog post — with optional full post text, in-post images, and hashtags. Give it a blog URL such as https://ameblo.jp/tsuji-nozomi/ and get clean, structured JSON.
Ameba is Japan's largest blogging platform and hosts most Japanese celebrity, idol, model, and official corporate blogs. This scraper turns those pages into a dataset you can download as JSON, CSV, Excel, XML, or HTML, pull through the Apify API, connect to Google Sheets, Slack, Zapier, or Make, or hand to an AI agent over MCP.
What does Ameba Blog Profile Scraper do?
It reads one or more public ameblo.jp blogs and returns one dataset row per blog post. The blogger's profile and blog-level statistics are merged into every row, so a single export gives you both the author and the content.
It collects:
- Blogger profile — nickname, blog title, blog description, bio text, profile images, sex, birthday, blood type, official-blog and top-blogger flags, and official categories.
- Blog statistics — total post count, page count, per-theme post counts, and a per-month post archive that covers the blog's full history.
- Posts — title, canonical URL, entry ID, theme, hashtags, publish and update timestamps, lead image, and PR (sponsored) flag.
- Post bodies (optional) — full body text, raw HTML, and every in-post image URL at original resolution.
You can scrape the newest 20 to 5,000 posts per blog, or the complete history — including blogs with more than 20,000 posts.
Why scrape Ameba blogs?
- Japanese influencer and celebrity research — Ameba blogs are the primary channel for many Japanese talents. Post frequency, themes, and PR flags map directly onto activity and sponsorship.
- Social media monitoring and press clipping — track what a person, agency, or brand publishes, and archive it with timestamps.
- Trend and content analysis — the monthly archive and per-theme counts give you a blog's whole posting history without downloading every post.
- Market research on Japanese beauty, fashion, and lifestyle — mine post text and hashtags for products, brands, and topics.
- Dataset building — export long-form Japanese blog text with metadata for analysis or NLP work.
How to scrape an Ameba blog
- Open Ameba Blog Profile Scraper in Apify Console and click Try for free.
- In the Input tab, enter one or more Ameba blog URLs (
https://ameblo.jp/tsuji-nozomi/) or bare Ameba IDs (tsuji-nozomi). - Choose whether you need post bodies, and set Max posts per blog if you do not want the full history.
- Click Save & Start.
- When the run finishes, open the Output tab to preview the data. Download it as JSON, CSV, or Excel, or fetch it from the API.
You can also schedule the run and set up webhooks or integrations, so new posts flow straight into your own systems.
Input
| Field | Type | Default | Description |
|---|---|---|---|
Blog URLs or Ameba IDs (startUrls) | array | https://ameblo.jp/tsuji-nozomi/ | One or more Ameba blogs. Full blog URLs, bare Ameba IDs, and any entry or archive URL of a blog all work. |
Post body content (postBodyMode) | select | none | none — no body. text — body text and in-post images. text_html — body text, raw HTML, and images. Bodies make a run slower and more expensive. |
Scrape all posts (scrapeAllPosts) | boolean | false | Scrape the complete history of each blog and ignore the post limit. |
Max posts per blog (maxPosts) | integer | 100 | Newest-first cap per blog, from 20 to 5,000. Ignored when Scrape all posts is on. |
Example input:
{"startUrls": [{ "url": "https://ameblo.jp/tsuji-nozomi/" }],"postBodyMode": "text","scrapeAllPosts": false,"maxPosts": 100}
Output
Each dataset row is one blog post, with the blogger profile merged in as profile_* fields. The Output tab offers an Overview view and a Posts view. You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.
{"item_type": "post","ameba_id": "tsuji-nozomi","entry_id": 12975182730,"url": "https://ameblo.jp/tsuji-nozomi/entry-12975182730.html","title": "夢1歳♡","theme_id": 10010811052,"theme_name": "ブログ","hashtags": [],"published_at": "2026-08-09T00:28:38.000+09:00","updated_at": "2026-08-09T00:28:52.000+09:00","publish_flg": "open","is_pr": false,"image_url": "https://stat.ameba.jp/user_images/...","body_text": "8月8日❤️夢空が1歳になりましたぁ…","images": [{ "url": "https://stat.ameba.jp/user_images/...", "image_id": "15810399127", "order": 0 }],"profile_blog_url": "https://ameblo.jp/tsuji-nozomi/","profile_nickname": "辻希美","profile_blog_title": "辻希美オフィシャルブログ「のんピース」Powered by Ameba","profile_blog_description": "辻希美オフィシャルブログ","profile_sex_text": "女性","profile_birthday": "1987-06-17T09:00:00.000+09:00","profile_bloodtype_text": "O型","profile_free_text": "official instagram\n@tsujinozomi_official","profile_image_url": "https://stat.profile.ameba.jp/...","profile_is_official": true,"profile_total_entries": 24707,"profile_monthly_archive": [{ "year": 2026, "month": 8, "count": 1 }],"profile_themes": [{ "theme_id": "10010811052", "theme_name": "ブログ", "entry_cnt": 24615 }],"scraped_at": "2026-08-29T15:34:00.000Z"}
Output data fields
| Field | Description |
|---|---|
ameba_id, blog_id | Blog owner's Ameba ID (URL slug) and numeric blog ID. |
entry_id, url | Post ID and canonical post URL. |
title | Post title. |
published_at, created_at, updated_at | Post timestamps, ISO 8601 in Japan Standard Time. |
theme_id, theme_name | Theme (category) the post belongs to. |
hashtags | Hashtags on the post. |
is_pr, publish_flg | PR (sponsored) flag and publish status. |
image_url, image_id | Lead image at original resolution. |
body_text | Full post text. Present when post bodies are enabled. |
body_html | Raw post HTML. Present in Text and HTML mode only. |
images | Every in-post image, with URL, image ID, and order. |
profile_nickname | Blogger display name. |
profile_blog_title, profile_blog_description | Blog title and description. |
profile_free_text | Blogger bio. |
profile_sex_text, profile_birthday, profile_bloodtype_text | Demographic fields, when the blogger filled them in. |
profile_image_url, profile_main_thumbnail_url | Profile and cover images. |
profile_is_official, profile_is_top_blogger, profile_is_premium | Account status flags. |
profile_official_categories | Categories assigned to official blogs. |
profile_total_entries | Total number of posts on the blog. |
profile_monthly_archive | Post count for every month of the blog's history. |
profile_themes | All blog themes, with a post count for each. |
scraped_at | Time the row was collected. |
How to scrape Ameba blogs with the Apify API
Every run and its dataset are available through the Apify API. Replace <YOUR_API_TOKEN> with your token from Settings → Integrations in Apify Console.
JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_API_TOKEN>' });const run = await client.actor('hgservices/ameba-blog-profile-scraper').call({startUrls: [{ url: 'https://ameblo.jp/tsuji-nozomi/' }],postBodyMode: 'text',maxPosts: 100,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Python (apify-client 3.0 or later)
from apify_client import ApifyClientclient = ApifyClient("<YOUR_API_TOKEN>")run = client.actor("hgservices/ameba-blog-profile-scraper").call(run_input={"startUrls": [{"url": "https://ameblo.jp/tsuji-nozomi/"}],"postBodyMode": "text","maxPosts": 100,})if run is None:raise RuntimeError("Actor run was not found.")for item in client.dataset(run.default_dataset_id).iterate_items():print(item)
cURL — run the Actor and get the dataset in one synchronous call:
curl -X POST "https://api.apify.com/v2/actors/hgservices~ameba-blog-profile-scraper/run-sync-get-dataset-items" \-H "Authorization: Bearer <YOUR_API_TOKEN>" \-H "Content-Type: application/json" \-d '{"startUrls": [{ "url": "https://ameblo.jp/tsuji-nozomi/" }],"postBodyMode": "text","maxPosts": 100}'
The synchronous call above returns HTTP 408 if the run takes longer than 300 seconds, so use it only for small, capped runs. For a full-history run, start it with POST /v2/actors/hgservices~ameba-blog-profile-scraper/runs, then poll the run or use a webhook, and read the dataset when the run succeeds.
Use Ameba Blog Profile Scraper with AI agents (MCP)
This Actor works as a tool for LLM agents through the Apify MCP server. Claude, ChatGPT, Cursor, and other MCP clients can find it, read its input schema, run it, and read the results back. No glue code is needed.
Add the Apify MCP server to your client. In Claude Code, for example:
$claude mcp add --transport http apify https://mcp.apify.com
Then ask your agent in plain language:
Use the Ameba Blog Profile Scraper to get the newest 50 posts with body text from https://ameblo.jp/tsuji-nozomi/, then summarize the topics from this month.
Agents get the best results when the request names the blog URL, says whether post bodies are needed, and gives a post limit. That keeps the run fast and the cost predictable.
How much does it cost to scrape Ameba blogs?
This Actor uses pay per event pricing, so you pay for the results you get, not for compute time. See the Pricing tab for the current price of each event.
| Event | Charged when | How often |
|---|---|---|
profile | The blogger profile, blog statistics, themes, and monthly archive are collected. | Once per blog. |
post | One post row is stored without a body. | Once per post. |
post-with-body | One post row is stored with body text (and HTML in Text and HTML mode). | Once per post. |
A run without post bodies is the cheapest way to get a blog's full history and profile. Post bodies cost more per post, so cap the run when you do not need everything.
To control your spend, set Maximum cost per run when you start the Actor. The run stops cleanly as soon as it reaches that limit, and it never stores an item you were not charged for. Max posts per blog caps the volume directly.
Every Apify account also gets $5 in free platform credit each month, which is enough to try this Actor on a real blog.
Tips
- Start capped. On a first run, set Max posts per blog to 100 and turn on post bodies. Check the data shape before you commit to a full-history run.
- Skip bodies when you can. Titles, themes, hashtags, timestamps, lead images, and the full profile are all available without post bodies, at a much lower cost.
- Monitor new posts. Schedule a daily run with Max posts per blog set to 20 and no bodies. That covers everything an active celebrity blog publishes in a day.
- Scrape many blogs at once. Put every blog URL in Blog URLs or Ameba IDs and get one dataset for all of them. The
ameba_idfield tells the rows apart. - Read
profile_monthly_archivefirst. It gives you a blog's complete posting history by month, without a single post body.
FAQ
Is it legal to scrape Ameba? Scraping publicly available data is generally legal. This Actor reads only public pages, at a polite rate, and never signs in. You are still responsible for Ameba's Terms of Service and for any personal-data law that applies to you. Ameba blogs are personal content, and profile fields include personal details. Do not republish scraped content in a way that infringes the blogger's copyright.
Can it scrape private posts, comments, likes, or reader counts? No. It returns only publicly visible posts and profile data. Member-only (amember) posts, comments, and reactions are out of scope.
Can it scrape more than one blog in a run? Yes. Add as many blog URLs or Ameba IDs as you want. Each blog's profile is merged into its own rows.
Why are some profile fields empty? Those fields are optional on Ameba. Birthday, blood type, sex, and bio appear only when the blogger filled them in.
Can it handle blogs with tens of thousands of posts? Yes. Turn on Scrape all posts to get the complete history. Use Maximum cost per run to keep the spend under control.
Does it work with ameblo.jp URLs only?
Yes — that is Ameba's blog domain. Any blog, entry, or archive URL under ameblo.jp is accepted, as is the bare Ameba ID.
Can I get the data into Google Sheets, Slack, or my database? Yes. Use the Apify platform's integrations and webhooks, or read the dataset from the API in the format you need.
Support and custom solutions
Did you find a bug, a missing field, or a blog that does not parse? Open a ticket on the Issues tab in Apify Console. Feature requests are welcome, and custom scraping solutions for Japanese platforms are available on request.