Filter offers by country, platform and category
Add filters to your Offer API call: country, state, platform and os_version describe the user, and content_type, offer_kind and vertical describe the kind of offer. Values aren’t case-sensitive, a comma means “any of these”, and every filter you send must match.
See also: Offer API
On this page
| Parameter | Example | What it keeps |
|---|---|---|
country | US or US,CA | Offers open to any of those countries. An offer with no country list counts as open everywhere. |
state | TX | For a US user: leaves out offers that turn that state away. Send one state. |
platform | iOS or iOS,Android | Offers listed for that platform. An offer listed for all platforms, or with none, matches every value. |
os_version | 17.4 | With exactly one platform: leaves out offers the phone is too old or too new for. |
device | tablet | Offers that name that device type. Offers that name none are left out, so most callers skip it. |
| Parameter | Example | What it keeps |
|---|---|---|
content_type | non_game | game or non_game. Our own classification, the same on every offer. |
offer_kind | signup,finance | game, signup, finance, deposit, subscription, purchase, sweepstakes, survey, rewards_app or other. |
vertical | sports_betting | sports_betting, real_money_gaming or none for offers with neither. An offer can carry both. |
segment | install | Named lists: install, popular, top. Comma-separate to require all. |
tracking_type | CPI,CPA | The pricing label the offer was listed with. |
category | Game | The offer’s free-text category label. Labels differ from offer to offer, so prefer content_type or offer_kind. |
| Parameter | Example | What it keeps |
|---|---|---|
name | harbor blocks | Names that contain it, ignoring case, spaces, punctuation and accents. An exact offer ID, or its numeric ID, works here too. |
id | aff_7c2e91b04d3a | That one offer. Takes the string id or the numericId. |
allow_offer_ids | aff_7c2e91b04d3a,aff_51d0c3e8a9f2 | Only these offers. String IDs only. |
block_offer_ids | aff_51d0c3e8a9f2 | Everything except these. String IDs only. |
Example IDs.
Start from the user’s country and platform
Send the user’s own
countryandplatformon every call. Withoutcountry, the list includes offers aimed at other countries, and your users can tap offers they can’t be credited for.Add state and OS version when you know them
For a US user, add
state. For a phone, addos_versionwith the singleplatform, so offers the phone can’t run never reach the screen.Narrow by kind
Use
content_type,offer_kindorvertical. To keep sportsbooks and real-money games off a screen, addvertical=none.Combine them
curl -G "https://affiliateos.xyz/publisher/offers" \ -d country=US -d state=TX -d platform=iOS -d os_version=17.4 \ -d content_type=game -d vertical=none \ -H "x-api-key: $AFFILIATEOS_KEY"Example: games with no betting or real-money vertical, for user
u_48213on an iPhone in Texas.Check it worked
Every row’s
platformsincludes the platform you sent (or lists all, or none), every row’sgeoTargetinglets your country in, andcontentType,offerKindandverticalsmatch what you asked for.
The portal’s Offers page has the same filters as controls: Search offers… (a name, an exact offer ID or a numeric ID), Platform (All platforms, iOS, Android, Web), Country (US unless you pick another; All countries on the All tab) and, on All, Install only for accounts paid at install. Reset clears them.
The chips across the top (All, Most Popular, Games, Casino & sports, Sign-ups, Finance, Subscriptions & trials) are the portal’s own grouping, not an API parameter. The nearest API filters are offer_kind and vertical.
The Network API (/network-api/offers) takes the same filter names, except os_version and segment=top, which only the publisher Offer API reads. In the network dashboard, Offers has Country (a comma list, such as US, DE, GB), Platform (iOS, Android, Web, Desktop) and Tracking Type.