Tinder has an unofficial API that has been documented by this gist and fbessez/Tinder
.
There is also an existing Node Client, tinderjs
. This is a Promise
-based equivalent.
tinder-client
has two dependencies:
axios
(^0.18.0
)tinder-access-token-generator
(^2.0.0
) - this is used to generate Tinder API access tokens
There are two ways to create a client
- If you have access to a user's Facebook access token, then you can use the
createClientFromFacebookAccessToken
factory function - If you have access to a user's Facebook email & password, then you can use the
createClientFromFacebookLogin
factory function
The returned client object will have a variety of methods that will provide access to the Tinder API.
import { createClientFromFacebookAccessToken } from 'tinder-client';
const client = await createClientFromFacebookLogin('some facebook access token');
import { createClientFromFacebookLogin } from 'tinder-client';
const client = await createClientFromFacebookLogin({
emailAddress: 'your facebook email address',
password: 'your facebook password',
});
const profile = await client.getProfile();
import { GENDERS, GENDER_SEARCH_OPTIONS } from 'tinder-client';
const userGender = GENDERS.female;
const searchPreferences = {
maximumAge: 100,
minimumAge: 99,
genderPreference: GENDER_SEARCH_OPTIONS.both,
maximumRangeInKilometers: 100,
};
const profile = await client.updateProfile({ userGender, searchPreferences })
const recommendations = await client.getRecommendations();
const user = await client.getUser('someUserId');
Get metadata for authenticated user
const myMetadata = await client.getMetadata();
await client.changeLocation({ latitude: 'someLatitude', longitude: 'someLongitude' });
await client.like('someUserId');
await client.pass('someUserId');
await client.superLike('someUserId');
await client.getUpdates();
await client.getUpdates('2019-02-05T00:00:00.004Z');
await client.messageMatch({ matchId: 'someMatch', message: 'someMessage' });
await client.getMatch('someMatchId');
await client.getMessage('someMessageId');
await client.getCommonConnections('someTinderUserId');
await client.resetTemporaryLocation();
await client.temporarilyChangeLocation({ latitude: 'someLatitude', longitude: 'someLongitude' });
After cloning the repository, use nvm
/ npm
to install dependencies.
To run both all tests, execute npm run test
.
To only run unit tests, execute npm run unit-test
.
To only run integration tests, execute npm run integration-test
.
In order to execute local integration tests successfully, you'll need to specify the following environment variables in the .env
file
FACEBOOK_EMAIL_ADDRESS
FACEBOOK_PASSWORD
TINDER_USER_ID
(Your Tinder user id)
To build the production bundle, execute npm run build
.
This project uses husky
to maintain git hooks.
pre-commit
- runeslint
commit-msg
- run commit message lintingpre-push
- run unit tests
This project uses semantic-release
and commitlint
(specifically the Angular commit convention) to automatically enforce semantic versioning.
For local development, you might want to test the client out at on an ad-hoc basis or maybe even for integration testing.
In order to do so, you'll need to get your Facebook Access Token.
To retrieve a Facebook Access Token, you'll need to
- Go to this URL
- Open the
Network
tab - Look for a request to
/confirm
- Look at the response, specifically the
for.jsmods.require[3][0]
value, and search the text foraccess_token