Scrape data from Discord
People search for a Discord scraper, but Discord is a special case. It bans scraping and self-bots outright, and most of what is there is private. The honest route is the official API for your own server, and careful reading of public content. There are three ways to start, with no code, with code, or with a Claude skill.
What I mean by scraping Discord
Scraping Discord, done honestly, is narrow. It means reading data you are entitled to, from your own server or a public one you are part of, and ideally through Discord's official tools rather than by driving the app. Channel activity you have a right to see, public announcement content, your own server's data. It is not harvesting members, messages, or DMs from communities you do not run.
Discord has an API, and it bans scraping
This is the page where the honest answer is mostly do not. Discord's terms ban scraping and self-bots flat out, and they enforce it with account bans. On top of that, most of Discord is private, messages and members inside servers that people did not make public, and harvesting those is both against the rules and a real privacy harm.
So the right route is the official one. Discord has a proper API and a bot framework for reading and acting on your own server's data, with permission, the way Discord intends. If you run a community, build a bot through that. A browser driving the app to scrape members or messages is the thing that gets banned, and it is not something to build. Use the API, on your own server, with consent.
Who this is for
This is for the person who runs or helps run a Discord community and wants their own server's data, through the proper channels. A mod pulling public announcements, an admin building a bot on the official API. It is not for harvesting other people's servers. No-coders and coders both, since you can build it without code and drop into code when you want.
How I'd approach it
Reach for Discord's official API and bot framework first, because it is the supported way to read your own server's data with permission. Use the browser only for genuinely public, in-the-open content, and never to gather members, messages, or DMs from communities you do not run. If a task needs private data you are not entitled to, that is the signal to stop.
API and your own server first, public content only otherwise. I would lay out the first draft with Build with description.
Scrape Discord from a description
Describe the task in plain words in the Chrome extension and it builds the steps for you. Give it a few short lines, check what it made, and run it. Explore no-code.
To the right is an example. For your own server, the official API is the better route, build the bot there.
Chrome extensionInstructions
- Open a public page you are entitled to read43 / 500
- Read the public content shown29 / 500
- Pull out the fields you need28 / 500
- Write them to a Google Sheet28 / 500
- Leave members and private messages alone40 / 500
Scrape Discord in code
Build with code. You do not have to write the script by hand. Describe the scrape to our Claude skill and it generates a ready-to-run Node script you own, then debugs it with you, fixing a selector that stopped matching or a step that stalls, until the run is clean. Prefer to write it yourself? Explore the code tool. Either way, the script looks like this.
These are axiom's step functions, the same step library that powers the no-code builder, available as code. Describe the scrape to the Claude skill and it generates and debugs this script for you. It runs on our cloud Chromium, with nothing to manage.
Generate it with the Claude skill1import { AxiomApi } from "axiom-api";2 3// For your own server, use Discord's official API and bot framework.4// A self-bot scraping members or messages is against the terms.5// This only reads a public, in-the-open page, not the Discord app.6const axiom = new AxiomApi(process.env.AXIOM_API_KEY);7 8await axiom.browserOpen();9try {10 await axiom.goto("https://example.com/community-announcements");11 const posts = await axiom.scrape(".post");12 console.log(posts); // write these to your sheet13} finally {14 await axiom.browserClose();15}16 Build with a Claude skill
Build no-code or code bots with a skill.
Add the Claude skill and describe the task. For your own server it points you at the official API, the supported way to read your data.

What can you do?
The honest, supported routes. A couple of lines that decide everything.
Works well
- The official API for your own server
- A bot you build with permission
- Genuinely public, in-the-open content
- Your own server's data, with consent
- Writing what you are entitled to into a sheet
Harder
- Anything Discord serves only in the app
- Self-bots, which Discord bans
- Data you do not have a right to
Don't try
- Harvesting members or contacts
- Scraping messages or DMs from servers you do not run
- Self-bots or anything against Discord's terms
What I'd watch out for
Discord is the one where the rules and the privacy stakes both say go carefully. Here is what I would watch for.
Use the official API
For your own server, Discord's API and bot framework are the supported route, and the only one that does not risk a ban. Build there, not by driving the app.
Members and messages are private
Most of Discord is private, and harvesting members, messages, or DMs from servers you do not run is both against the terms and a real privacy harm. Do not.
No self-bots
Driving the Discord app as a logged-in user to scrape is a self-bot, which Discord bans on sight. It is not worth the account.
Only what you are entitled to
If a task needs data you do not have a right to see, stop. The honest version stays on your own server and genuinely public content.