Splitwise Data Extractor avatar

Splitwise Data Extractor

Pricing

Pay per usage

Go to Apify Store
Splitwise Data Extractor

Splitwise Data Extractor

It fetches: User profile, all groups with member balances, all friends with balances, and all expenses (paginated automatically). Supports date filtering, group filtering, and a max-expenses cap

Pricing

Pay per usage

Rating

0.0

(0)

Developer

Pramod Konde

Pramod Konde

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

22 days ago

Last modified

Share

Extract your expenses, groups, friends, and account data from Splitwise using the official Splitwise API. All data is exported to Apify's dataset storage, ready for download as JSON, CSV, or Excel.

What does this Actor do?

This Actor connects to your Splitwise account via the official OAuth 2.0 API and extracts:

Data TypeWhat's included
UserYour profile, balances across currencies, notification settings
GroupsAll groups you're in, member list, debts (original and simplified)
FriendsYour full friend list with per-friend balances in each currency
ExpensesAll transactions — amounts, who paid, who owes what, categories, notes, receipts

Results are saved to the Apify Dataset (download as JSON, CSV, or Excel) and a summary is saved to the Key-Value Store under OUTPUT.


Getting your Splitwise Access Token

You need a Splitwise OAuth 2.0 Bearer token to use this Actor. Here's the quickest way to get one:

  1. Go to https://secure.splitwise.com/apps/new and register a new app (takes 1 minute — any name/URL works).
  2. After creating the app, go to its settings page. You'll see a Consumer Key and Consumer Secret.
  3. Use the OAuth 2.0 flow to get a Bearer token (or use the Splitwise API explorer at dev.splitwise.com to test and get a token for your own account).

Security note: Your access token is treated as a secret by Apify and is never stored in run logs or visible to others. It only gives access to your own Splitwise account — it cannot access other users' accounts.


Input

FieldTypeRequiredDescription
accessTokenstring✅ YesYour Splitwise OAuth 2.0 Bearer token
dataToFetcharrayNoWhich data to fetch: user, groups, friends, expenses. Defaults to all four.
datedAfterstringNoOnly fetch expenses after this date (format: YYYY-MM-DD)
datedBeforestringNoOnly fetch expenses before this date (format: YYYY-MM-DD)
groupIdintegerNoOnly fetch expenses from this group (find it in the group's URL on splitwise.com)
maxExpensesintegerNoMaximum number of expenses to fetch. 0 means unlimited.

Example input

{
"accessToken": "your-bearer-token-here",
"dataToFetch": ["user", "groups", "friends", "expenses"],
"datedAfter": "2024-01-01",
"datedBefore": "2024-12-31",
"maxExpenses": 500
}

Output

All results are pushed to the default Dataset. Each record has a _type field indicating what kind of record it is (user, group, friend, or expense).

Example expense record

{
"_type": "expense",
"id": 123456789,
"group_id": 1234567,
"description": "Dinner at Nobu",
"payment": false,
"cost": "120.00",
"currency_code": "USD",
"date": "2024-08-15T00:00:00Z",
"category": {
"id": 12,
"name": "Dining out"
},
"users": [
{
"user_id": 111,
"paid_share": "120.00",
"owed_share": "60.00",
"net_balance": "60.00"
},
{
"user_id": 222,
"paid_share": "0.00",
"owed_share": "60.00",
"net_balance": "-60.00"
}
],
"created_by": { "id": 111, "first_name": "Alice" },
"created_at": "2024-08-15T14:32:00Z"
}

Example group record

{
"_type": "group",
"id": 1234567,
"name": "NYC Apartment",
"group_type": "apartment",
"members": [
{
"id": 111,
"first_name": "Alice",
"balance": [{ "currency": "USD", "amount": 250.00 }]
}
],
"simplified_debts": [
{ "from": 222, "to": 111, "amount": "250.00", "currency_code": "USD" }
]
}

Key-Value Store: OUTPUT

After the run completes, a summary is saved under the OUTPUT key:

{
"fetchedAt": "2024-08-15T14:32:00.000Z",
"userId": 111,
"userEmail": "alice@example.com",
"userFullName": "Alice Smith",
"defaultCurrency": "USD",
"filters": {
"datedAfter": "2024-01-01",
"datedBefore": null,
"groupId": null,
"maxExpenses": null
},
"counts": {
"user": 1,
"groups": 5,
"friends": 12,
"expenses": 347
}
}

Use cases

  • Personal finance analysis — Export all your expenses to Excel or Google Sheets for custom budgeting
  • Debt tracking — Get a clear picture of who owes you what across all groups and friends
  • Data backup — Archive your Splitwise history before closing your account
  • Accounting exports — Feed Splitwise data into your own accounting tools
  • Household expense reports — Summarize shared expenses for a specific group over a time period

Rate limits & performance

Splitwise enforces conservative rate limits on their self-serve API. This Actor handles rate limit errors gracefully and will surface a clear message if limits are hit. For accounts with hundreds of expenses, the run typically completes in under 60 seconds.

Memory requirement: 128 MB minimum (very lightweight — no browser, no headless Chrome).


This Actor uses the official Splitwise REST API (not web scraping) and requires the user to authenticate with their own account credentials via OAuth 2.0. It only accesses data that the authenticated user has permission to view.

Disclaimer: This Actor is an unofficial integration and is not affiliated with, endorsed by, or supported by Splitwise Inc. Use of the Splitwise API is subject to the Splitwise API Terms of Use.


Support

If you encounter any issues, please open a GitHub issue or contact via the Apify Actor Issues tab.