Skip to main content

Crate grindr

Crate grindr 

Source
Expand description

Unofficial async Rust client for the Grindr API, powering the Open Grind client.

It talks to Grindr the same way the official Android app does: same TLS and HTTP/2 fingerprint, same header order, same device identity. On top of that it handles login, token refresh, requests, and the realtime websocket.

It’s only a transport — it doesn’t ship types for individual endpoints. You pick the path and deserialize the response body yourself.

§Overview

  • GrindrClient — the main entry point. Cheap to clone, refreshes the token on its own, and runs the websocket in the background.
  • DeviceInfo — a fake but believable device identity.
  • Session — credentials you can save and resume from.
  • RawResponse — the status and body from a request.
  • WsEvent / WsCommand — incoming and outgoing realtime messages.

§Example

use grindr::{DeviceInfo, GrindrClient, Method};

// Make a device identity once, save it, and reuse it next time.
let client = GrindrClient::new(DeviceInfo::generate(), None)?;

client.login("user@example.com", "hunter2").await?;

// Make a request — the session token is added for you.
let resp = client
    .request_authenticated_raw(Method::GET, "/v3/me/profile", None)
    .await?;
println!("status = {}", resp.status);

§Disclaimer

This is an unofficial library, not affiliated with or endorsed by Grindr. It is provided for research and interoperability. Automating access may violate Grindr’s Terms of Service; you are responsible for how you use it.

Structs§

AuthEvent
Emitted on the channel returned by GrindrClient::auth_event_receiver when a background token refresh fails.
DeviceInfo
A fake Android device identity used to fill in request headers.
GrindrClient
An async client for the Grindr API.
GrindrHeaders
References https://opengrind.org/grindr-api/security-headers#correct-headers-order
LoginResult
The outcome of a successful login or token refresh.
Method
HTTP method, re-exported from wreq for use with GrindrClient::request_authenticated_raw. The Request Method (VERB)
RawResponse
A raw API response: the HTTP status and the unparsed body bytes.
Session
An authenticated session.
WsCommand
A command to send over the websocket.
WsEvent
An event received over the websocket.

Enums§

GrindrError
Errors returned by this crate.
SessionKind
How a Session was obtained.
WsConnectionState
Whether the websocket is connected.

Constants§

APP_VERSION
The Grindr Android app version this crate emulates.

Functions§

build_device_info_header
Builds the L-Device-Info header value from a DeviceInfo.
build_user_agent
Builds the User-Agent the app sends, e.g. grindr3/26.9.1.163471;163471;Free;Android 14;Pixel 8;Google.
probe_emulation
The EmulationProvider that gives a wreq client the same TLS and HTTP/2 fingerprint as the Android app.