Note: this was written in April/May 2014 and the API may has definitely changed since. I have nothing to do with Tinder, nor its API, and I do not offer any support for anything you may build on top of this. Proceed with caution
I've sniffed most of the Tinder API to see how it works. You can use this to create bots (etc) very trivially. Some example python bot code is here -> https://gist.github.com/rtt/5a2e0cfa638c938cca59 (horribly quick and dirty, you've been warned!)
Host | api.gotinder.com |
Protocol | https only |
Request headers
Header name | Description / example | Required? |
---|---|---|
X-Auth-Token | A UUID4 format authentication token obtained via the /auth api endpoint | Yes |
Content-type | application/json | Yes |
app_version | 3 | no |
platform | ios | no |
User-agent | User-Agent: Tinder/3.0.4 (iPhone; iOS 7.1; Scale/2.00) | Yes |
os_version | 700001 | No |
Note: all curl examples below omit headers for brevity -- you'll need to add the required headers shown in the table above
You'll need to supply a facebook auth token and an associated facebook id.
> curl -X POST https://api.gotinder.com/auth --data '{"facebook_token": fb_token, "facebook_id": fb_user_id}'
The easiest way to get this is to go here, log in and then pick the auth token out of the URL you are redirected to.
Response:
{
"token": "8c839cee-0980-4b73-861b-8739cb597f57",
"user": { ... },
"globals": { ... },
"versions": { ... }
}
> curl -X POST https://api.tinder.com/profile --data '{"age_filter_min": 26, "gender": 1, "age_filter_max": 32, "distance_filter": 14}'
Parameter info:
Gender | 0: Male 1: Female |
age_filter_min | int of min age match |
age_filter_max | int of max age match |
distance_filter | max search radius in kilometers |
> curl -X POST 'https://api.gotinder.com/report/{_id} --data '{"cause": cause_id}'
Note cause_id: should be 1
or 2
, (1 is spam, 2 is inappropriate/offensive)
Send a message to a match. Note you'll get a 500 back if you try to send a message to someone who isn't a match
curl 'https://api.gotindaer.com/user/matches/{_id} --data '{"message": "your message here"}'
response:
{
"_id":"53467235483cb56c475cc1d6",
"from":"53430689ab3c04c13e006ffb",
"to":"533a59ea52046fc077002815",
"match_id":"53464b0728ac73976d0a3fbf",
"sent_date":"2014-04-10T10:28:05.764Z",
"message":"hi!",
"created_date":"2014-04-10T10:28:05.764Z"
}
curl 'https://api.gotindaer.com/user/ping --data '{"lat": latitude, "lon": longitude}'
{
"status": 200,
"error": "position change not significant"
}
> curl 'https://api.gotindaer.com/updates'
Response:
{
"matches": [{
"_id": "53464b0728ac73976d0a3fbf",
"messages": [{
"_id": "534651198ce6da797248c1a3",
"match_id": "53464b0728ac73976d0a3fbf",
"to": "53430689ab3c04c13e006ffb",
"from": "533a59ea52046fc077002815",
"message": "hi .... how is it going?",
"sent_date": "2014-04-10T08:06:49.800Z",
"created_date": "2014-04-10T08:06:49.800Z",
"timestamp": 1397117209800
}, {
"_id": "53466fd298b7278b72156523",
"match_id": "53464b0728ac73976d0a3fbf",
"to": "533a59ea52046fc077002815",
"from": "53430689ab3c04c13e006ffb",
"message": "Good thanks you? :)",
"sent_date": "2014-04-10T10:17:54.379Z",
"created_date": "2014-04-10T10:17:54.379Z",
"timestamp": 1397125074379
}],
"last_activity_date": "2014-04-10T10:17:54.379Z"
}],
"blocks": [],
"lists": [],
"deleted_lists": [],
"last_activity_date": "2014-04-10T10:17:54.379Z"
}
> curl https://api.gotinder.com/{like|pass}/{_id}
Response:
{match: match_result}
match_result
will be true
if they like you, false
if they haven't liked you or don't like you
> curl https://api.gotinder.com/user/recs
{
"status": 200,
"results": [{
"distance_mi": 2,
"common_like_count": 0,
"common_friend_count": 0,
"common_likes": [],
"common_friends": [],
"_id": "518d666a2a00df0e490000b9",
"bio": "",
"birth_date": "1986-05-17T00:00:00.000Z",
"gender": 1,
"name": "Elen",
"ping_time": "2014-04-08T11:59:18.494Z",
"photos": [{
"id": "fea4f480-7ce0-4143-a310-a03c2b2cdbc6",
"main": true,
"crop": "source",
"fileName": "fea4f480-7ce0-4143-a310-a03c2b2cdbc6.jpg",
"extension": "jpg",
"processedFiles": [{
"width": 640,
"height": 640,
"url": "http://images.gotinder.com/518d666a2a00df0e490000b9/640x640_fea4f480-7ce0-4143-a310-a03c2b2cdbc6.jpg"
}, {
"width": 320,
"height": 320,
"url": "http://images.gotinder.com/518d666a2a00df0e490000b9/320x320_fea4f480-7ce0-4143-a310-a03c2b2cdbc6.jpg"
}, {
"width": 172,
"height": 172,
"url": "http://images.gotinder.com/518d666a2a00df0e490000b9/172x172_fea4f480-7ce0-4143-a310-a03c2b2cdbc6.jpg"
}, {
"width": 84,
"height": 84,
"url": "http://images.gotinder.com/518d666a2a00df0e490000b9/84x84_fea4f480-7ce0-4143-a310-a03c2b2cdbc6.jpg"
}],
"url": "http://images.gotinder.com/518d666a2a00df0e490000b9/fea4f480-7ce0-4143-a310-a03c2b2cdbc6.jpg"
}, {
"url": "http://images.gotinder.com/518d666a2a00df0e490000b9/5c1d3231-5a75-4a07-91ff-5c012716583f.jpg",
"processedFiles": [{
"url": "http://images.gotinder.com/518d666a2a00df0e490000b9/640x640_pct_0_29.5312464_540_540_5c1d3231-5a75-4a07-91ff-5c012716583f.jpg",
"height": 640,
"width": 640
}, {
"url": "http://images.gotinder.com/518d666a2a00df0e490000b9/320x320_pct_0_29.5312464_540_540_5c1d3231-5a75-4a07-91ff-5c012716583f.jpg",
"height": 320,
"width": 320
}, {
"url": "http://images.gotinder.com/518d666a2a00df0e490000b9/172x172_pct_0_29.5312464_540_540_5c1d3231-5a75-4a07-91ff-5c012716583f.jpg",
"height": 172,
"width": 172
}, {
"url": "http://images.gotinder.com/518d666a2a00df0e490000b9/84x84_pct_0_29.5312464_540_540_5c1d3231-5a75-4a07-91ff-5c012716583f.jpg",
"height": 84,
"width": 84
}],
"extension": "jpg",
"fileName": "5c1d3231-5a75-4a07-91ff-5c012716583f.jpg",
"main": false,
"ydistance_percent": 0.75,
"yoffset_percent": 0.04101562,
"xoffset_percent": 0,
"id": "5c1d3231-5a75-4a07-91ff-5c012716583f",
"xdistance_percent": 1
}, {
"url": "http://images.gotinder.com/518d666a2a00df0e490000b9/5abd87e5-a181-4946-a8b9-880926a78943.jpg",
"processedFiles": [{
"url": "http://images.gotinder.com/518d666a2a00df0e490000b9/640x640_pct_0_118.125_540_540_5abd87e5-a181-4946-a8b9-880926a78943.jpg",
"height": 640,
"width": 640
}, {
"url": "http://images.gotinder.com/518d666a2a00df0e490000b9/320x320_pct_0_118.125_540_540_5abd87e5-a181-4946-a8b9-880926a78943.jpg",
"height": 320,
"width": 320
}, {
"url": "http://images.gotinder.com/518d666a2a00df0e490000b9/172x172_pct_0_118.125_540_540_5abd87e5-a181-4946-a8b9-880926a78943.jpg",
"height": 172,
"width": 172
}, {
"url": "http://images.gotinder.com/518d666a2a00df0e490000b9/84x84_pct_0_118.125_540_540_5abd87e5-a181-4946-a8b9-880926a78943.jpg",
"height": 84,
"width": 84
}],
"extension": "jpg",
"fileName": "5abd87e5-a181-4946-a8b9-880926a78943.jpg",
"main": false,
"ydistance_percent": 0.75,
"yoffset_percent": 0.1640625,
"xoffset_percent": 0,
"id": "5abd87e5-a181-4946-a8b9-880926a78943",
"xdistance_percent": 1
}, {
"url": "http://images.gotinder.com/518d666a2a00df0e490000b9/5e168698-a034-40c0-b7fb-7c05743f2310.jpg",
"processedFiles": [{
"url": "http://images.gotinder.com/518d666a2a00df0e490000b9/640x640_pct_157.570344_0_405_405_5e168698-a034-40c0-b7fb-7c05743f2310.jpg",
"height": 640,
"width": 640
}, {
"url": "http://images.gotinder.com/518d666a2a00df0e490000b9/320x320_pct_157.570344_0_405_405_5e168698-a034-40c0-b7fb-7c05743f2310.jpg",
"height": 320,
"width": 320
}, {
"url": "http://images.gotinder.com/518d666a2a00df0e490000b9/172x172_pct_157.570344_0_405_405_5e168698-a034-40c0-b7fb-7c05743f2310.jpg",
"height": 172,
"width": 172
}, {
"url": "http://images.gotinder.com/518d666a2a00df0e490000b9/84x84_pct_157.570344_0_405_405_5e168698-a034-40c0-b7fb-7c05743f2310.jpg",
"height": 84,
"width": 84
}],
"extension": "jpg",
"fileName": "5e168698-a034-40c0-b7fb-7c05743f2310.jpg",
"main": false,
"ydistance_percent": 1,
"yoffset_percent": 0,
"xoffset_percent": 0.2188477,
"id": "5e168698-a034-40c0-b7fb-7c05743f2310",
"xdistance_percent": 0.5625
}],
"birth_date_info": "fuzzy birthdate active, not displaying real birth_date"
}, {
"distance_mi": 4,
"common_like_count": 0,
"common_friend_count": 0,
"common_likes": [],
"common_friends": [],
"_id": "52cfc097f43cd91a67003639",
"bio": "",
"birth_date": "1987-11-02T00:00:00.000Z",
"gender": 1,
"name": "Cristina",
"ping_time": "2014-04-06T16:52:51.605Z",
"photos": [{
"id": "4ab7173f-7884-4fe3-872f-32c01d77de2a",
"main": "main",
"shape": "center_square",
"fileName": "4ab7173f-7884-4fe3-872f-32c01d77de2a.jpg",
"extension": "jpg",
"processedFiles": [{
"width": 640,
"height": 640,
"url": "http://images.gotinder.com/52cfc097f43cd91a67003639/640x640_4ab7173f-7884-4fe3-872f-32c01d77de2a.jpg"
}, {
"width": 320,
"height": 320,
"url": "http://images.gotinder.com/52cfc097f43cd91a67003639/320x320_4ab7173f-7884-4fe3-872f-32c01d77de2a.jpg"
}, {
"width": 172,
"height": 172,
"url": "http://images.gotinder.com/52cfc097f43cd91a67003639/172x172_4ab7173f-7884-4fe3-872f-32c01d77de2a.jpg"
}, {
"width": 84,
"height": 84,
"url": "http://images.gotinder.com/52cfc097f43cd91a67003639/84x84_4ab7173f-7884-4fe3-872f-32c01d77de2a.jpg"
}],
"url": "http://images.gotinder.com/52cfc097f43cd91a67003639/4ab7173f-7884-4fe3-872f-32c01d77de2a.jpg"
}, {
"id": "bb8ac90b-f48a-4a1c-8cba-0c05d26f1b47",
"shape": "center_square",
"fileName": "bb8ac90b-f48a-4a1c-8cba-0c05d26f1b47.jpg",
"extension": "jpg",
"processedFiles": [{
"width": 640,
"height": 640,
"url": "http://images.gotinder.com/52cfc097f43cd91a67003639/640x640_bb8ac90b-f48a-4a1c-8cba-0c05d26f1b47.jpg"
}, {
"width": 320,
"height": 320,
"url": "http://images.gotinder.com/52cfc097f43cd91a67003639/320x320_bb8ac90b-f48a-4a1c-8cba-0c05d26f1b47.jpg"
}, {
"width": 172,
"height": 172,
"url": "http://images.gotinder.com/52cfc097f43cd91a67003639/172x172_bb8ac90b-f48a-4a1c-8cba-0c05d26f1b47.jpg"
}, {
"width": 84,
"height": 84,
"url": "http://images.gotinder.com/52cfc097f43cd91a67003639/84x84_bb8ac90b-f48a-4a1c-8cba-0c05d26f1b47.jpg"
}],
"url": "http://images.gotinder.com/52cfc097f43cd91a67003639/bb8ac90b-f48a-4a1c-8cba-0c05d26f1b47.jpg"
}, {
"id": "dabe1c27-f186-48f2-807f-8a68e3831fe9",
"shape": "center_square",
"fileName": "dabe1c27-f186-48f2-807f-8a68e3831fe9.jpg",
"extension": "jpg",
"processedFiles": [{
"width": 640,
"height": 640,
"url": "http://images.gotinder.com/52cfc097f43cd91a67003639/640x640_dabe1c27-f186-48f2-807f-8a68e3831fe9.jpg"
}, {
"width": 320,
"height": 320,
"url": "http://images.gotinder.com/52cfc097f43cd91a67003639/320x320_dabe1c27-f186-48f2-807f-8a68e3831fe9.jpg"
}, {
"width": 172,
"height": 172,
"url": "http://images.gotinder.com/52cfc097f43cd91a67003639/172x172_dabe1c27-f186-48f2-807f-8a68e3831fe9.jpg"
}, {
"width": 84,
"height": 84,
"url": "http://images.gotinder.com/52cfc097f43cd91a67003639/84x84_dabe1c27-f186-48f2-807f-8a68e3831fe9.jpg"
}],
"url": "http://images.gotinder.com/52cfc097f43cd91a67003639/dabe1c27-f186-48f2-807f-8a68e3831fe9.jpg"
}, {
"url": "http://images.gotinder.com/52cfc097f43cd91a67003639/59263e9d-6d76-4f42-8c8e-b4cf635b03c7.jpg",
"processedFiles": [{
"url": "http://images.gotinder.com/52cfc097f43cd91a67003639/640x640_59263e9d-6d76-4f42-8c8e-b4cf635b03c7.jpg",
"height": 640,
"width": 640
}, {
"url": "http://images.gotinder.com/52cfc097f43cd91a67003639/320x320_59263e9d-6d76-4f42-8c8e-b4cf635b03c7.jpg",
"height": 320,
"width": 320
}, {
"url": "http://images.gotinder.com/52cfc097f43cd91a67003639/172x172_59263e9d-6d76-4f42-8c8e-b4cf635b03c7.jpg",
"height": 172,
"width": 172
}, {
"url": "http://images.gotinder.com/52cfc097f43cd91a67003639/84x84_59263e9d-6d76-4f42-8c8e-b4cf635b03c7.jpg",
"height": 84,
"width": 84
}],
"extension": "jpg",
"fileName": "59263e9d-6d76-4f42-8c8e-b4cf635b03c7.jpg",
"main": false,
"ydistance_percent": 0.75,
"yoffset_percent": 0.08554687,
"xoffset_percent": 0,
"id": "59263e9d-6d76-4f42-8c8e-b4cf635b03c7",
"xdistance_percent": 1
}],
"birth_date_info": "fuzzy birthdate active, not displaying real birth_date"
}, ... ]
}
Anybody know how to get all matches using the /matches endpoint? Currently it looks like there's a max "count" value of 100 via the API:
https://api.gotinder.com/v2/matches?locale=en&count=100&message=0&is_tinder_u=false
If you put anything higher than that, you get a 400 error. On a successful return, it returns a page of your matches (up to 60 it looks like). It also, according to the web browser requests, returns a "next_page_token" in the body if it's not pulling the last page. But I'm not sure where or how this is used. Every time I replicate the query in python I only get the last page. I see no difference between the requests that pull the last page and those that don't.
Now I'm aware I can get a list of ALL matches using the /updates endpoint like so:
https://api.gotinder.com/updates?locale=en
But the v2 /matches endpoint has some data I'm interested in that the /updates endpoint does not: It contains "scores", which I imagine are right swipe rates, for each photo.