Bulk-export all your MindMeister maps without a Business plan
Project description
MapSnatch
MindMeister lets you export maps one at a time unless you pay for a Business plan. This tool gives you bulk export using their own public API — available on all plan types including free.
Hosted version (no CLI): mapsnatch.com — pay once, export in the browser.
| Contributing | Security |
| Support | Docs |
| Code of Conduct | Report a bug |
If this CLI saves you time, tips are welcome (not required):
Install
PyPI: not published yet — there is no pip install mapsnatch on PyPI. First release needs PYPI_SETUP.md (trusted publisher + v0.1.0 tag).
From GitHub (works today):
git clone https://github.com/gavinc/mapsnatch
cd mapsnatch
pip install -e .
echo "MINDMEISTER_API_TOKEN=your_personal_access_token_here" > .env
mapsnatch
Create a personal access token at mindmeister.com/api
Supported formats
| Flag | Format | Notes |
|---|---|---|
mm |
FreeMind | Recommended — best portability, opens in FreeMind and Freeplane |
pdf |
Good for sharing and archiving | |
mind |
MindMeister native | For re-import back into MindMeister |
xmind |
XMind | For use in the XMind app |
rtf |
Rich Text Format | Text-based outline |
Not supported: png and docx return empty responses from the API — these appear to require a Business plan subscription.
Usage
mapsnatch [OPTIONS]
Options:
--format, -f Export format: mm, pdf, mind, xmind, rtf (default: mm)
--output, -o Output directory (default: ./exports)
--token, -t Personal access token (or MINDMEISTER_API_TOKEN in env / .env)
--dry-run List maps without downloading
--list-formats Show supported formats and exit
Examples
# Export all maps as FreeMind format (default)
mapsnatch
# Export as PDF into a custom directory
mapsnatch --format pdf --output ~/mindmaps
# List what maps would be exported without downloading
mapsnatch --dry-run
# Pass personal access token on the command line
mapsnatch --token YOUR_PERSONAL_ACCESS_TOKEN
How it works
MindMeister provides a public REST API (v1 + v2) that allows any authenticated user to list and export their maps. This tool:
- Fetches your full map list from
GET /services/rest/oauth2?method=mm.maps.getList - Downloads each map via
GET /api/v2/maps/{id}.{format} - Extracts the file from its zip container (for
mm,mind,xmindformats) - Saves it with a sanitised filename into your output directory
Auth uses your personal access token as a Bearer credential — no OAuth dance required.
Opening exported files
- FreeMind (.mm) — Open with FreeMind or Freeplane (recommended — free, cross-platform)
- XMind (.xmind) — Open with XMind
- PDF — Any PDF viewer
- RTF — Any word processor
Setup
Get your personal access token
- Log in to MindMeister
- Open mindmeister.com/api and create a personal access token
- Copy the token (not the same as MindMeister's separate "API keys" product)
Configure
Either:
# Option A: .env file (recommended)
echo "MINDMEISTER_API_TOKEN=your_token_here" > .env
# Option B: environment variable
export MINDMEISTER_API_TOKEN=your_token_here
# Option C: command line flag
mapsnatch --token your_token_here
Contributing
See CONTRIBUTING.md. Pull requests welcome — run python -m pytest -v before opening a PR.
License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mapsnatch-0.1.0.tar.gz.
File metadata
- Download URL: mapsnatch-0.1.0.tar.gz
- Upload date:
- Size: 21.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e7b0f39b13665ec12ad66f148a544b4a47af6f74e9a1a0b9bb2b47dbaaf7fc95
|
|
| MD5 |
96d5298895452e478f12036fd23b2b2a
|
|
| BLAKE2b-256 |
e923166bc65b21559e274989dd13a5ae53a7baa03feacf80602e91a2d49132bc
|
Provenance
The following attestation bundles were made for mapsnatch-0.1.0.tar.gz:
Publisher:
release.yml on gavinc/mapsnatch
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mapsnatch-0.1.0.tar.gz -
Subject digest:
e7b0f39b13665ec12ad66f148a544b4a47af6f74e9a1a0b9bb2b47dbaaf7fc95 - Sigstore transparency entry: 1585573245
- Sigstore integration time:
-
Permalink:
gavinc/mapsnatch@5aef537694fc4416ca3327b94d156f058a45444e -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/gavinc
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@5aef537694fc4416ca3327b94d156f058a45444e -
Trigger Event:
push
-
Statement type:
File details
Details for the file mapsnatch-0.1.0-py3-none-any.whl.
File metadata
- Download URL: mapsnatch-0.1.0-py3-none-any.whl
- Upload date:
- Size: 19.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4045bf4cf19fde023e6fe57feb04efd12ae444cac1baecfa4fa02d9fac343d93
|
|
| MD5 |
f26a91c3c4103926c0c9d178a77ae38e
|
|
| BLAKE2b-256 |
8cb816f3dc8f009e3228a381ea248019a4a1c64ebbfc560cb4f9de183fa74ef3
|
Provenance
The following attestation bundles were made for mapsnatch-0.1.0-py3-none-any.whl:
Publisher:
release.yml on gavinc/mapsnatch
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mapsnatch-0.1.0-py3-none-any.whl -
Subject digest:
4045bf4cf19fde023e6fe57feb04efd12ae444cac1baecfa4fa02d9fac343d93 - Sigstore transparency entry: 1585573333
- Sigstore integration time:
-
Permalink:
gavinc/mapsnatch@5aef537694fc4416ca3327b94d156f058a45444e -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/gavinc
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@5aef537694fc4416ca3327b94d156f058a45444e -
Trigger Event:
push
-
Statement type: