Download all your DeviantArt notes with metadata including sender, date, subject, and more. Export to JSON or CSV format for backup and archival purposes.
β See Browser Scraper Guide - Works with the new Messages system!
If your account has been migrated from Notes to Messages, use this version:
- β Works with Messages - scrapes directly from the website
- β No API needed - uses browser automation
- β Gets everything - full conversation history
β οΈ Requires Chrome and your DA login credentials
python scraper.pyβ Open Web App - Browser-based, no installation
- β Zero installation - runs in your browser
- β Cross-platform - works on any device
- β Privacy-focused - all processing happens locally
- β Notes API only - won't work if you've been migrated to Messages
Command-line tool for power users
- β Full control via command line
- β Scriptable - integrate into workflows
- β Backend authentication - uses OAuth2 with client secret
- β Notes API only - won't work if you've been migrated to Messages
See Python CLI instructions below.
- OAuth2 Authentication: Secure authentication with DeviantArt API
- Complete Note Download: Downloads all notes from inbox and custom folders
- Rich Metadata: Captures sender, recipient, date, subject, read status, and more
- Multiple Export Formats: Export to JSON or CSV
- Pagination Support: Handles large note collections automatically
- Statistics: View summary statistics about your notes
- User-Friendly CLI: Simple command-line interface
- Clone this repository:
git clone <repository-url>
cd DA-note-scraper- Install dependencies:
pip install -r requirements.txt- Set up DeviantArt API credentials:
- Go to https://www.deviantart.com/developers/apps
- Create a new app or use an existing one
- Copy your Client ID and Client Secret
- Create a
.envfile in the project root:
cp .env.example .env- Edit
.envand add your credentials:
DA_CLIENT_ID=your_client_id_here
DA_CLIENT_SECRET=your_client_secret_here
DA_REDIRECT_URI=https://localhost:5000/callback
Download all notes and export to JSON:
python main.pyExport to CSV:
python main.py --format csvExport to both JSON and CSV:
python main.py --format bothSpecify custom output filename:
python main.py --output my_notes --format bothSkip custom folders (inbox only):
python main.py --no-foldersForce re-authentication:
python main.py --reauthpython main.py --helpEach note includes the following metadata:
note_id: Unique identifier for the notefolder: Folder name where the note is storedsubject: Note subject/titlebody: Full note contentsender: Username of the sendersender_user_icon: URL to sender's avatarrecipient: Username of the recipientdate: Unix timestampdate_readable: Human-readable date (YYYY-MM-DD HH:MM:SS)is_read: Whether the note has been readis_deleted: Whether the note is deletedtype: Note type
[
{
"note_id": "12345",
"folder": "Inbox",
"subject": "Hello!",
"body": "Thanks for the watch!",
"sender": "username123",
"recipient": "your_username",
"date": "1234567890",
"date_readable": "2024-01-15 14:30:00",
"is_read": true,
"is_deleted": false,
"type": "note"
}
]note_id,folder,subject,sender,recipient,date_readable,is_read,body
12345,Inbox,Hello!,username123,your_username,2024-01-15 14:30:00,True,Thanks for the watch!
DA-note-scraper/
βββ main.py # CLI interface
βββ auth.py # OAuth2 authentication
βββ notes_downloader.py # Notes downloading and export logic
βββ config.py # Configuration management
βββ requirements.txt # Python dependencies
βββ .env.example # Example environment variables
βββ .gitignore # Git ignore rules
βββ README.md # This file
DeviantArt is migrating from the Notes system to a new Messages system. This tool uses the Notes API which may be deprecated in the future. Make sure to download your notes while the API is still available.
The default OAuth callback URL is https://localhost:5000/callback. When you run the authentication flow:
- A browser window will open
- Authorize the application on DeviantArt
- You'll be redirected to localhost:5000
- The app will capture the authorization code automatically
- The browser will show "Authorization successful!"
Your access token is stored in .da_token.json (automatically added to .gitignore). This allows you to run the script multiple times without re-authenticating.
To force re-authentication, use the --reauth flag or delete the .da_token.json file.
Make sure you've created a .env file with your DeviantArt API credentials.
- Check that your Client ID and Secret are correct
- Verify the redirect URI matches what's configured in your DeviantArt app
- Try using
--reauthto clear the old token
This is normal if you don't have any custom note folders. The script will continue with the inbox.
- Make sure you're logged into the correct DeviantArt account
- Check that you have notes in your account
- Try using
--reauthto ensure you're using the correct account
DeviantArt's API has rate limits. If you have many notes, the download may take some time. The script handles pagination automatically and will download all your notes.
- Never commit your
.envfile or.da_token.jsonto version control - Your credentials are only used to authenticate with DeviantArt's official API
- Downloaded notes are stored locally on your machine
- No data is sent to any third-party services
This project is provided as-is for personal use. Make sure to comply with DeviantArt's Terms of Service and API usage policies.
Feel free to submit issues or pull requests to improve this tool.
This tool was developed using information from: