Grid
Cascade returns stuff like advertisements, upsells and partial profiles, presumably ranked by algorithms or paid subscriptions. Search returns full profiles, seemingly ranked simply by distance.
Get Cascade
Requires Authorization.
Fetching the cascade also marks our profile online by always instantly setting onlineUntil to current time + exactly 600 s.
GET /v4/cascadeQuery:
- everything from CascadeQuery
Response:
items— array of CascadeItemnextPage— integer ornullshuffled— booleanhiddenProfiles— array of long integers, profile IDs hidden from the cascade ornullhiddenProfileInfo— array of strings ornull
Get Cascade (legacy) (deprecated)
Requires Authorization.
Removed in the official Android client v26.10.0. The client now uses GET /v4/cascade.
GET /v3/cascadeQuery:
- everything from CascadeQuery
exploreUuid— string, unknown, WIP, optionalsexualHealth— array of integers concatenated with a,,-1means "Not Specified", see Sexual health, optional
Response:
items— array of CascadeItemnextPage— integer ornullshuffled— booleanhiddenProfiles— array of long integers, profile IDs hidden from the cascade ornullhiddenProfileInfo— array of strings ornull
Search
Requires Authorization.
Results array appears to be capped to 600 per page. Use searchAfterProfileId or searchAfterDistance for pagination.
GET /v7/searchQuery:
- everything from GridQuery
online— boolean, optionalageMinimum— integer, optionalageMaximum— integer, optionalheightMinimum— float, optionalheightMaximum— float, optionalweightMinimum— float, optionalweightMaximum— float, optionalgrindrTribesIds— array of integers concatenated with a,,-1means "Not Specified", see Tribes, optionallookingForIds— array of integers concatenated with a,,-1means "Not Specified", see Looking for, optionalrelationshipStatusIds— array of integers concatenated with a,,-1means "Not Specified", see Relationship status, optionalbodyTypeIds— array of integers concatenated with a,,-1means "Not Specified", see Body type, optionalsexualPositionIds— array of integers concatenated with a,,-1means "Not Specified", see Sexual position, optionalmeetAtIds— array of integers concatenated with a,,-1means "Not Specified", see Meet at, optionalnsfwIds— array of integers concatenated with a,,-1means "Not Specified", see Accept NSFW pics, optionalprofileTags— string, see Profile tags, optionalsearchAfterDistance— string, optionalsearchAfterProfileId— string, optionalfreeFilter— boolean, optional
Response:
profiles— array of SearchProfileResultlastDistanceInKm— floatlastProfileId— integerinserts— objectmpuFree— integermpuXtra— integerboostUpsell— array of integersmrecCascadeFirst— integermrecCascadeSecond— integermrecCascadeThird— integer
GridQuery
nearbyGeoHash— GeohashexploreGeoHash— Geohash, optionalphotoOnly— boolean, optionalfaceOnly— boolean, optionalnotRecentlyChatted— boolean, optionalhasAlbum— boolean, optionalfresh— boolean, optionalgenders— string, comma-separated list of gender IDs, see Get genders — a filter query param (CSV string), unlike the profile-writegendersfield which is an integer array, optionalpageNumber— integer, optional
CascadeQuery
- everything from GridQuery
onlineOnly— boolean, optionalageMin— integer, optionalageMax— integer, optionalheightCmMin— float, optionalheightCmMax— float, optionalweightGramsMin— float, optionalweightGramsMax— float, optionaltribes— array of integers concatenated with a,,-1means "Not Specified", see Tribes, optionallookingFor— array of integers concatenated with a,,-1means "Not Specified", see Looking for, optionalrelationshipStatuses— array of integers concatenated with a,,-1means "Not Specified", see Relationship status, optionalbodyTypes— array of integers concatenated with a,,-1means "Not Specified", see Body type, optionalsexualPositions— array of integers concatenated with a,,-1means "Not Specified", see Sexual position ID, optionalmeetAt— array of integers concatenated with a,,-1means "Not Specified", see Meet at, optionalnsfwPics— array of integers concatenated with a,,-1means "Not Specified", see Accept NSFW pics, optionaltags— string, see Profile tags, optionalrightNow— boolean, optionalfavorites— boolean, optionalshowSponsoredProfiles— boolean, optionalshuffle— boolean, optionalhot— boolean, optional
CascadeItem
type— stringdata— object, shape depends ontype— full_profile_v1, partial_profile_v1, advert_v1, top_picks_v1, explore_aggregation_v1, boost_upsell_v1, unlimited_mpu_v1, xtra_mpu_v1, favs_header_v1, hidden_profile_v1, smart_boost_profile_v1, sponsored_profile_v1, braze_event_profile_v1, favs_xtra_upsell_v1, favs_unlimited_upsell_v1, favorites_header_no_free_results_v1, favorites_header_no_xtra_results_v1, profile_hide_status, rewarded_profiles_entry_point_v1, right_now_carousel_v1. Forprofile_hide_status,countis on the item itself, not underdata.
CascadeResponse
items— array of CascadeItemnextPage— integer ornull, optionalshuffled— booleanhiddenProfiles— array of long integers, profile IDs hidden from the cascade ornull, optionalhiddenProfileInfo— array of strings ornull, optional
full_profile_v1
- everything from CascadeResponseProfile
Only for v3/cascade:
- everything from ProfileFields
@type— string,"CascadeItemData$FullProfileV1"tribes— array of integers, see TribessocialNetworks— array of SocialNetworktakenOnGrindrMetadata— object- key is Media hash
takenOnGrindr— booleancreatedAt— unix timestamp in milliseconds
Only for v4/cascade:
age— integer, optionalheightCm— integer, optionalweightGrams— integer, optionalbodyType— integer, see Body type, optionalsexualPosition— integer, see Sexual position ID, optional
partial_profile_v1
- everything from CascadeResponseProfile
upsellItemType— string, e.g."xtra_mpu_v1"
Only for v3/cascade:
@type— string,"CascadeItemData$PartialProfileV1"
advert_v1
cascadePlacementName— string, e.g."mrec-cascade-first"
Only for v3/cascade:
@type— string,"CascadeItemData$Advert"
top_picks_v1
Empty for v4/cascade.
Only for v3/cascade:
@type— string,"CascadeItemData$TopPicksV1"
explore_aggregation_v1
uuid— string, UUIDv4headerName— string, e.g."🌎 Explore"source— string, e.g."cascade"items— array of objects.@typedetermines contents:"ExploreAggregationItem$Location":data.onlineCount(integer),data.uuid(UUIDv3 string),data.location(idinteger,namestring e.g."Minneapolis",suffixstring e.g."🇺🇸",latfloat,lonfloat),data.profiles(array of objects withprofileImageUrlURL string)."ExploreAggregationItem$Cta": empty.
Only for v3/cascade:
@type— string,"CascadeItemData$ExploreAggregationV1"
boost_upsell_v1
Empty for v4/cascade.
Only for v3/cascade:
@type— string,"CascadeItemData$BoostUpsellV1"
unlimited_mpu_v1
Empty for v4/cascade.
Only for v3/cascade:
@type— string,"CascadeItemData$UnlimitedMpuV1"
xtra_mpu_v1
Empty for v4/cascade.
Only for v3/cascade:
@type— string,"CascadeItemData$XtraMpuV1"
favs_header_v1
available— integerdisplayed— integertotal— integer
Only for v3/cascade:
@type— string,"CascadeItemData$FavHeaderV1"
right_now_carousel_v1
Right Now carousel of nearby profiles with an active Right Now post.
items— array of objectsprofileId— long integeronlineUntil— long integer ornulldisplayName— string ornullprimaryImageUrl— string ornullfavorite— boolean ornullchatted— boolean ornullrightNow— string ornullunreadCount— integer ornullviewed— boolean ornullroaming— boolean ornullisVisiting— boolean ornullisPopular— boolean ornulldistanceMeters— number ornullisRewarded— boolean ornullfuzzedLat— number ornullfuzzedLon— number ornullrightNowPin— the pin thumbnail:thumbnailUrl,fullImageUrl,isNsfw,textornullrightNowPost— the active post:id,thumbnailUrl,fullImageUrl,isNsfw,text,expirationTimestampornull
hidden_profile_v1
Hidden profile. Same shape as full_profile_v1.
- everything from CascadeResponseProfile
Only for v4/cascade:
age— integer, optionalheightCm— integer, optionalweightGrams— integer, optionalbodyType— integer, see Body type, optionalsexualPosition— integer, see Sexual position ID, optional
smart_boost_profile_v1
Smart boost profile. Same shape as full_profile_v1.
- everything from CascadeResponseProfile
Only for v4/cascade:
age— integer, optionalheightCm— integer, optionalweightGrams— integer, optionalbodyType— integer, see Body type, optionalsexualPosition— integer, see Sexual position ID, optional
sponsored_profile_v1
cascadePlacementName— stringalternativeProfile— CascadeResponseProfile, Fallback full_profile_v1 shape, shown when the sponsored ad is unavailable.
braze_event_profile_v1
profileId— integeronlineUntil— unix timestamp in milliseconds, optionaldisplayName— string, optionalprimaryImageUrl— string, URL, optionaleventName— string, Braze event name
favs_xtra_upsell_v1
available— integer
favs_unlimited_upsell_v1
Empty.
favorites_header_no_free_results_v1
Empty.
favorites_header_no_xtra_results_v1
Empty.
profile_hide_status
Unlike other cascade items, count sits directly on the item alongside type, not under data.
count— integer
rewarded_profiles_entry_point_v1
Entry point card offering to unlock profiles by watching a rewarded ad, see Rewarded Ad Type CASCADE_PROFILES_UNLOCK. Rendered full width rather than as a grid tile.
previewImageUrls— array of strings, URLs of the profile images that would be unlocked, see Media -> Public CDN files -> Profile ImagesremainingRewards— integer, how many times the reward can still be redeemedprofilesPerRedemption— integer, how many profiles a single redemption unlocks
SearchProfileResult
age— integer ornulldisplayName— stringdistance— floathasFaceRecognition— booleanisFavorite— booleannew— booleanlastChatTimestamp— number, may be0lastViewed— unix timestamp in milliseconds ornulllastUpdatedTime— unix timestamp in millisecondsmedias— array of ProfileMedia ornullprofileId— integerprofileImageMediaHash— string, See Media -> Public CDN files -> Profile Images ornullprofileTags— array of Profile tagsseen— unix timestamp in millisecondsshowAge— booleanshowDistance— booleanapproximateDistance— booleanboosting— booleanhasAlbum— booleangender— array of integers or[-1], see Get genders
SearchProfilesResponse
profiles— array of SearchProfileResultlastDistanceInKm— floatlastProfileId— integerinserts— object, optionalmpuFree— integermpuXtra— integerboostUpsell— array of integersmrecCascadeFirst— integermrecCascadeSecond— integermrecCascadeThird— integer
CascadeResponseProfile
Profile data returned in cascade items.
profileId— integeronlineUntil— unix timestamp in millisecondsdisplayName— string, optionaldistanceMeters— integer, optionallastOnline— unix timestamp in milliseconds, optionalrightNow— RightNowStatusunreadCount— integerisVisiting— booleanisPopular— boolean
Only for v3/cascade:
photoMediaHashes— array of strings, see MedialookingFor— array of integers, see Looking forsexualPosition— integer, see Sexual position ID, optionalapproximateDistance— booleanisFavorite— booleanisBoosting— booleanhasChattedInLast24Hrs— booleanhasUnviewedSpark— booleanisTeleporting— booleanisRoaming— booleanisRightNow— booleanhasUnreadThrob— booleanisBlockable— boolean, optionalisBoostingSomewhereElse— boolean
Only for v4/cascade:
primaryImageUrl— string, URLfavorite— booleanviewed— booleanchatted— booleanroaming— boolean