4Chan Thread & Board Scraper
Pricing
from $0.35 / 1,000 results
4Chan Thread & Board Scraper
Scrape threads from one or more 4chan boards using the official 4chan JSON API. Collect structured thread data, original posts, optional replies, attachments, extracted links, participant summaries, and thread-level metadata for research, monitoring, archiving, and downstream analysis.
Pricing
from $0.35 / 1,000 results
Rating
0.0
(0)
Developer
Inus Grobler
Maintained by CommunityActor stats
1
Bookmarked
4
Total users
1
Monthly active users
11 days ago
Last modified
Categories
Share
4chan Thread & Board Scraper turns public board catalogs and threads from the official 4chan JSON API into structured post, attachment, participant, and link data. Enter board names or direct thread URLs, then export the results as JSON, CSV, Excel, or through the Apify API.
Use this 4chan scraper for public-content research, trend monitoring, link analysis, archival snapshots, and downstream text analysis. You control the boards, thread count, and whether replies are returned as separate dataset rows.
What can the 4chan scraper collect?
- Fetches the current catalog for each selected board
- Collects up to your chosen number of threads per board
- Stores thread metadata, original post data, attachment details, and optional replies
- Enriches output with catalog context, participation summaries, and extracted links
How to scrape a 4chan board
- Open the Actor in Apify Console.
- Enter one or more board names without slashes, such as
gorbiz. - Keep Include replies off for a quick catalog snapshot, or enable it for full thread content.
- Click Start and open the Dataset tab when the run finishes.
This small input stores the original post from two current /g/ threads:
{"boards": ["g"],"maxThreadsPerBoard": 2,"scrapeReplies": false,"proxyConfiguration": {"useApifyProxy": false}}
4chan scraper input
boards
List of boards to scrape, without slashes.
Example:
["g", "biz", "tv"]
Default: ["g"]
maxThreadsPerBoard
Maximum number of threads to collect from each selected board.
Example:
20
Default: 10
threadUrls
Optional direct thread URLs to scrape. Use this when you already know the threads you need and want to skip board catalog discovery.
Example:
["https://boards.4chan.org/g/thread/105076684"]
maxRepliesPerThread
Optional cap on stored replies for each thread when scrapeReplies is enabled. The newest replies are kept. Leave empty to store all available replies.
Example:
25
scrapeReplies
false: store only the original post, while still keeping thread-level counts and summary metadatatrue: store the original post and all available replies in each thread
Default: false
proxyConfiguration
Optional proxy settings for the requests. By default, the actor uses direct requests because the public 4chan JSON API is usually faster without a proxy. Enable Apify Proxy or provide custom proxy URLs only when your environment needs it.
4chan scraper output
Each dataset item represents one scraped post row with repeated thread-level metadata.
{"board": "g","threadId": 105076684,"threadUrl": "https://boards.4chan.org/g/thread/105076684","subject": "Daily general thread","replyCount": 42,"imageCount": 14,"isArchived": false,"stats": {"threadPostCount": 43,"storedPostCount": 1,"storedReplyCount": 0},"links": {"externalLinks": [],"externalDomains": [],"quotedPostIds": [],"boardReferences": []},"post": {"postId": 105076684,"isOriginalPost": true,"author": "Anonymous","postedAt": "2026-05-07T08:39:56.000Z","commentText": "Example public post text","attachmentCount": 0,"attachments": []}}
Top-level fields include:
boardthreadIdthreadUrlapiUrlscrapedAtsubjectsemanticUrlreplyCountimageCountisStickyisClosedisArchivedarchivedOncatalogstatsparticipantslinkspost
catalog
Board catalog context for the thread, including:
- catalog page number
- last modified timestamp
- omitted reply count
- omitted image count
- recent reply post IDs when available
stats
Thread-level summary fields, including:
- total posts and replies in the thread
- how many posts and replies are stored in the dataset item
- attachment totals
- quote counts
- external link counts
- board reference counts
- simple content flags such as code and greentext counts
participants
Participant summaries, including:
- unique poster IDs when present
- countries represented in the thread when present
links
Extracted link-related fields, including:
- external links
- external domains
- quoted post IDs
- board references such as
>>>/g/123456789
post
Each post record can include:
- author and subject
- timestamp and formatted posting date
- comment HTML and cleaned comment text
- quote targets
- board references
- external links
- attachment metadata
- content flags such as
containsCodeandcontainsGreentext
Cost and performance tips
- Use
scrapeReplies: falsewhen you want faster, lighter discovery runs across many boards. - Use
scrapeReplies: truewhen you need full thread content. - Use
threadUrlswhen you already know specific threads; this skips catalog discovery and finishes faster. - Use
maxRepliesPerThreadwhen you only need the latest replies and want to reduce dataset volume. - Start with a smaller
maxThreadsPerBoardif you are exploring new board mixes. The default value of10is chosen to keep quick validation and test runs lightweight. - Split very wide crawls across multiple runs if you are scraping many boards at once.
- Keep normal runs at
128 MB. Launch larger reply-heavy runs at256 MB, especially when scraping 50 or more thread detail pages or storing uncapped/high reply counts.
Large 4chan scraping guidance
This actor has been tested on larger multi-board runs and works well for long-running scrapes. For the best production experience:
- Use separate runs for very broad board coverage instead of putting every board into one run.
- Keep reply scraping enabled only when you need full thread bodies.
- Use leaner discovery runs first, then follow up with deeper runs on boards or threads that matter most.
- For reply-heavy board runs, allow roughly one second per fetched thread plus startup and catalog overhead. The actor logs a recommended timeout at startup and warns if the current run timeout is likely too low.
- The actor logs a recommended memory setting at startup. Use
256 MBfor large reply-heavy runs and keep128 MBfor small discovery runs to minimize compute cost. - The default cloud timeout is set high enough for large normal runs, but API users can still override it per run if they intentionally want a stricter cap.
In practice, splitting large board lists across scheduled runs is the safest approach for high-volume scraping.
Run the 4chan scraper with Python
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("thescrapelab/4chan-thread-board-scraper").call(run_input={"boards": ["g"],"maxThreadsPerBoard": 2,"scrapeReplies": False,})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item)
You can also schedule recurring runs, send dataset-ready webhooks, or connect the output to other Apify integrations.
Pricing and usage expectations
Run cost depends mainly on the number of board catalogs and thread detail pages requested. Direct catalog snapshots with replies disabled are the cheapest option. To control spend, start with one board and a small maxThreadsPerBoard, then enable replies only for the threads you need. Apify shows the active pricing model and estimated platform usage before you start a run.
Limitations and responsible use
- Invalid or unavailable boards are skipped.
- Threads that disappear before they are fetched are skipped.
- Results are pushed to the Apify dataset as each catalog batch or thread is processed; the actor does not wait until the end of the run to write all rows.
- Each stored post is returned as its own dataset row, with thread-level fields repeated for convenient filtering and export.
- The actor only returns data available through the public 4chan JSON API at the time of scraping.
- It does not provide guaranteed historical coverage or recover deleted content.
- Public posts can contain personal, offensive, or sensitive material. Use the data only for lawful purposes and follow applicable privacy and platform rules.
Troubleshooting
- No rows returned: check the board name, or try a currently active direct thread URL.
- A direct thread was skipped: the thread may have been deleted or archived between discovery and retrieval.
- Replies are missing: enable
scrapeReplies; optionally setmaxRepliesPerThreadto control volume. - A large run is slow: reduce the board or thread count, cap replies, or split the work across scheduled runs.
- Requests fail from your region: try Apify Proxy. Direct requests are faster when they work.
Support
If a valid public board or thread repeatedly fails, open the Actor's Issues tab and include the run ID, a sanitized input, and the affected public URL.