Sammyboy Forum Scraper
Pricing
from $2.00 / 1,000 thread listings
Pricing
from $2.00 / 1,000 thread listings
Rating
0.0
(0)
Developer
Lexa N
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Scrapes Sammyboy.com (Sam's Alfresco Coffee) — one of Singapore's longest-running discussion forums — into clean, structured data.
Two modes. Pick one row per thread for cheap, scheduled monitoring, or the full contents of a thread with every reply. Keyword and date filtering, bulk input, and quoted text separated from what the author actually wrote.
What you get
📋 Board threads mode
One row per thread, read straight off a board's listing pages. Never opens a thread, so it's fast and cheap — good for daily monitoring of what's being discussed.
{"post_id": "276666","site": "sammyboy","board": "17","title": "Living in JB 4","author": "wuqi256","reply_count": "1K","view_count": "282K","created_at": "2019-11-21T12:13:05+0800","last_reply_at": "2026-07-29T13:22:33+0800","post_url": "https://www.sammyboy.com/threads/276666/","content": null,"is_pinned": true,"source_mode": "forum","source_query": "17","scraped_at": "2026-09-14T12:30:35.798Z"}
💬 Full thread mode
The thread's opening post, plus one row per reply — newest first.
{"reply_id": "4230332","post_id": "111952","site": "sammyboy","floor": 1744,"author": "kezgtree","content": "sori, to ask.. why need to reno roof when it's new or any other reasons?","quoted_authors": ["liamricci"],"quote_text": "We are going to renovate our house this summer-autumn. Thanks for sharing your experiences, I appreciate it! I guess we'll start with the roof.","created_at": "2025-04-21T00:29:35+0800","scraped_at": "2026-09-14T12:27:13.169Z"}
Quoted text is separated, not mixed in
Forum replies quote each other constantly. Most scrapers flatten the whole post to text, so the person you quoted ends up inside your comment — and every sentiment score, keyword count and word cloud built on it is wrong.
This Actor removes quote blocks from the markup before reading the text:
| field | contains |
|---|---|
content | only what this author wrote |
quote_text | the material they quoted |
quoted_authors | who they were quoting |
Nested quotes are handled (every author is captured, no text is double-counted), and the "Click to expand..." link never appears in either field.
Input
Mode
| value | behaviour |
|---|---|
forum | Board threads — one row per thread |
thread | Full thread — opening post plus every reply |
Board threads mode
forumIds — board IDs, the {id} in sammyboy.com/forums/{slug}.{id}/.
For example 17 is A Singaporean's guide to Living In JB.
Must be a board that lists threads, not a category that lists sub-forums. A category returns no rows and the run tells you so.
Full thread mode
threadIds — the {id} in sammyboy.com/threads/{slug}.{id}/, e.g. 111952.
threadUrls — full thread URLs. The ID is extracted for you.
maxPagesPerThread — how many pages of replies to walk, counting back from the
newest. 0 means unlimited — see Performance below before setting that on a
long thread.
Both modes
keywords — keeps only threads whose title contains at least one keyword
(case-insensitive). Leave empty for no filtering.
excludeKeywords — drops any thread whose title contains one of these, even if
it also matches keywords. Exclusions always win. Useful for stripping SEO spam and
off-topic threads out of a board sweep.
matchWholeWords — off (the default), a keyword matches anywhere in the title,
so JB also matches JBCC Quayside. On, it must appear as its own word. Applies to
both keyword fields.
These three apply to board threads mode only. In full thread mode you have already named the threads, so every reply is returned regardless of what you put here.
dateFrom — 3d, 12h, 2w, or MM/DD/YY.
- Board threads mode: filters by the newer of creation and last-reply time, and stops paging early once it passes the cutoff. Pinned threads are exempt — they sit at the top of every board regardless of age, so without the exemption one 2012 sticky would end the crawl on row one.
- Full thread mode: filters replies by post time. Because threads are walked newest-first, this stops as soon as a page falls past the cutoff — so pulling the last two years of a thread started in 2012 costs a few pages, not all of them. The opening post is always returned.
maxItems — board mode: max threads per board. Thread mode: max threads, not
replies. Use maxPagesPerThread to bound replies.
bulkInput — one item per line, no quotes or commas. Treated as board IDs,
thread IDs or thread URLs depending on the mode. Paste a column straight out of
Google Sheets.
Performance and cost
Sammyboy sits behind Cloudflare, so every page is fetched through Apify's Unblocker proxy. That sets the pace of every run:
- About 8 seconds of wall clock per page.
- A 100-page thread therefore takes roughly 13 minutes.
- The proxy admits only two to three requests at a time, so this can't be sped up by asking for more. Concurrency is fixed at the fastest setting and isn't exposed as an input.
dateFrom stops pagination as soon as it passes the cutoff, so a narrow date
window costs a fraction of a full sweep — it's the cheapest way to keep runs
short. A keywords filter on its own does not stop paging, so pair the two when
you're sweeping a large board.
Limitations
Reply and view counts are abbreviated. Sammyboy renders them as "2K" and
"784K" and does not expose the exact figure anywhere in the page, so they are
returned as the site shows them. Treat them as approximate.
Boards are not categories. A category page lists sub-forums rather than threads and returns nothing. Use a sub-forum ID.
Thread mode returns replies newest-first, which is deliberate — it is what makes
dateFrom cheap on long threads. Sort by floor ascending if you need chronological
order.
Forum content includes spam. Like most open forums, some boards carry SEO link-drops and off-topic posts. Filter downstream.
Notes
Only publicly visible pages are read — nothing behind a login, and no personal data beyond the public usernames attached to public posts. You are responsible for how you use the output, including any applicable terms and data-protection rules.
Built as a sibling to the HardwareZone and RenoTalk scrapers. All three emit the same field names and the same two output shapes, so datasets from different Singapore forums can be merged without remapping columns.