ShopBack Scraper: Cashback, Gift Cards, Affiliates avatar

ShopBack Scraper: Cashback, Gift Cards, Affiliates

Pricing

from $12.00 / 1,000 merchant pages

Go to Apify Store
ShopBack Scraper: Cashback, Gift Cards, Affiliates

ShopBack Scraper: Cashback, Gift Cards, Affiliates

Scrape ShopBack for a brand: merchant cashback rates, tiers and terms (AU, SG, MY) plus the brand's gift-card listing with its own cashback rate per denomination. With your ShopBack session it reads the live affiliate network from the click-out. Pass a domain or ShopBack URL. Pay per result.

Pricing

from $12.00 / 1,000 merchant pages

Rating

5.0

(2)

Developer

Automation Craft

Automation Craft

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

17 days ago

Last modified

Share

ShopBack Scraper: Cashback, Gift Cards, Affiliates

This ShopBack scraper pulls three kinds of data about a brand from ShopBack: the merchant page details (cashback rates, every rate tier, upsized boosts, terms, vouchers, categories), the brand's gift-card listing (the cashback ShopBack pays for buying the brand's gift card, per denomination, with stock state) and the brand's currently active affiliate network (Commission Factory, Partnerize, Impact, AWIN, CJ, Rakuten, Amazon Associates). Pick merchant details, affiliate network or both with a single mode setting. The gift-card check is built in and runs for every target in every mode. Run it on the Apify platform for API access, scheduling, proxy rotation, and integrations with Make, Zapier, Google Sheets and more.

Instead of scraping a brand's own website for affiliate tags, which is brittle and surfaces stale legacy tags the brand no longer uses, this Actor reads the network out of ShopBack's click-out redirect. ShopBack is a major cashback publisher that only earns when it tracks through the brand's live program, so the network in its click-out is the brand's real, current affiliate provider. It cannot be a stale tag, because a stale tag would not pay ShopBack.

Quick start

  1. Open the Input tab.
  2. Choose a mode: affiliate, details or both.
  3. Add targets. Each input is a company domain (2xu.com), a ShopBack merchant URL (shopback.com.au/2xu) or a ShopBack gift-card URL (shopback.com.au/ecommerce/skugroup/SBV_BPGiftCards). Add an optional brand to improve resolution and a rowNumber to map results back to a spreadsheet row.
  4. For affiliate and both modes, paste a ShopBack session cookie into shopbackSessionCookie, because ShopBack's click-out only exists when you are logged in. See Session cookie below. details mode needs no cookie.
  5. Pick your region (au by default).
  6. Click Start. Download results from the Output tab as JSON, CSV, Excel or HTML, or read them through the API.
{
"mode": "both",
"region": "au",
"targets": [
{ "input": "2xu.com", "brand": "2XU", "rowNumber": 137 },
{ "input": "shopback.com.au/nike", "brand": "Nike" }
]
}

ShopBack shows the "Shop Now" click-out, the redirect that reveals the live affiliate network, only to logged-in users. The Actor does not automate login, which is protected by Cloudflare Turnstile and OTP. Instead you supply your own session once:

  1. Log in to ShopBack in your browser.
  2. Export the shopback.com.au cookies with a browser extension such as Cookie-Editor, using "Export to JSON".
  3. Paste the JSON into the encrypted shopbackSessionCookie input. It must include the sbrefresh cookie, the long-lived refresh token that keeps the session alive.

The session is sliding: ShopBack issues a fresh short-lived access token from your refresh token, and the Actor writes the freshest cookies back to its own named key-value store after every run. So as long as you run the Actor on a schedule, you paste once and basically forget. If the session ever truly dies, the run returns auth_expired and you re-paste.

Modes

ModeLoads pageFires click-outReturnsRelative cost
detailsyesnodetailscheapest
affiliateyesyesaffiliatetier-dependent
bothyes (once)yesaffiliate + detailsabout the same as affiliate

Why use it

  • Accurate affiliate attribution. Current, not legacy, so no misallocation from old tags.
  • Honest outcomes. A brand that genuinely is not on ShopBack returns not_on_shopback, not a vague failure.
  • Cost-aware. Negatives (not listed, delisted, temporarily unavailable) are settled over plain HTTP with no browser and no residential proxy. The affiliate click-out runs as two small HTTP requests through a residential IP in your session's region, and a full browser is opened only when that fast path cannot produce a clean result. Every item reports the phases, attempts and bytes it cost.
  • Two products, one run. both mode reuses a single page load to return affiliate and details together.
  • Gift cards are not mistaken for merchant listings, or the other way round. Some brands are on ShopBack only through gift cards (BP), some only as a merchant, some as both. Each row says which, with a separate rate for each.

What you get

One dataset item per target:

{
"input": "2xu.com",
"brand": "2XU",
"rowNumber": 137,
"mode": "both",
"shopbackUrl": "https://www.shopback.com.au/2xu",
"cleanDomain": "2xu.com",
"resolvedVia": "search",
"outcome": "resolved",
"affiliate": {
"network": "Rakuten Advertising",
"status": "network_identified",
"matchedHost": "click.linksynergy.com",
"redirectChain": [
"https://www.shopback.com.au/2xu",
"https://www.shopback.com.au/sboc/redirects/01jq8w85tnwyesa2y0tv2ssyvj",
"https://click.linksynergy.com/deeplink?id=...&mid=44490&murl=https%3a%2f%2f2xu.com%2f",
"https://2xu.com/?utm_source=Rakuten&ranMID=44490..."
]
},
"details": {
"merchantName": "2XU",
"headlineRate": "3%",
"rates": [{ "category": "General", "tier": "Standard", "rate": "3%", "description": "Standard Cashback 3%" }],
"ratesUpdatedAt": "2026-03-27T05:50:44.571Z",
"cashbackTerms": [{ "question": "Exclusions?", "answer": "You won't get Cashback on…" }],
"categories": ["General"],
"scrapedAt": "2026-06-23T09:00:00Z"
},
"tierUsed": "datacenter",
"method": "browser",
"costTelemetry": { "proxyBytes": 184320, "computeMs": 4200 },
"error": null
}

You can download the dataset in JSON, HTML, CSV or Excel.

Gift cards

ShopBack sells gift cards for many brands and pays cashback on the purchase of the card. That is a different offer from a merchant listing, where the cashback is for shopping at the brand through a tracked click-out. A brand can have one, the other, both or neither, so every row reports them separately:

  • details.headlineRate is the cashback for shopping at the brand.
  • giftCard.cashbackRate is the cashback for buying the brand's gift card (giftCard.cashbackType is always gift_card_purchase).
  • shopbackPresence sums it up: merchant_only, gift_cards_only, both, not_found or unknown.

BP, for example, has no merchant page on ShopBack Australia but does sell gift cards there:

{
"input": "https://www.shopback.com.au/ecommerce/skugroup/SBV_BPGiftCards",
"mode": "both",
"outcome": "resolved",
"shopbackPresence": "gift_cards_only",
"listingStatus": "not_found",
"shopbackUrl": null,
"affiliate": null,
"details": null,
"giftCardCheck": "found",
"giftCard": {
"url": "https://www.shopback.com.au/ecommerce/skugroup/SBV_BPGiftCards",
"brand": "BP",
"groupCode": "SBV_BPGiftCards",
"cashbackType": "gift_card_purchase",
"cashbackRate": "1%",
"cashbackRateMin": "1%",
"availability": "active",
"currency": "AUD",
"denominationCount": 14,
"denominations": [
{ "name": "BP $5 Gift Card", "price": "$5", "cashbackRate": "1%", "availability": "in_stock", "url": "https://www.shopback.com.au/ecommerce/checkout/sboc_BPGiftCards_5.00_2026-02-01_BAU" }
],
"brandVerified": null,
"discoveredVia": "shopback_url",
"checkedAt": "2026-09-28T07:45:00.000Z"
}
}

How the gift-card check works:

  • Discovery. Pass a gift-card URL, or just the domain or brand: the Actor finds the brand's gift cards through ShopBack's own search and then confirms them on the gift-card page.
  • Brand and country are verified. A listing counts only when the page is served by the ShopBack storefront of your region and states the same brand. The match is strict: "Amazon" gift cards are never reported for "Amazon Music". When you pass a gift-card URL together with a brand that the page does not state, you get giftCardCheck: "brand_mismatch" and the listing does not count as presence.
  • Rates are read live on every run, per denomination. When denominations pay different rates (promotions often apply to some of them), cashbackRate is the highest live rate and cashbackRateMin the lowest.
  • Availability. active, sold_out (the listing exists but every denomination is sold out) or not_found (the gift-card URL you passed does not exist any more).
  • No affiliate conclusion is drawn from a gift card. A gift-card listing says nothing about the brand's affiliate network or about a direct deal with ShopBack, so affiliate stays null unless the brand also has a merchant listing with a click-out.
  • The gift-card check needs no login and no proxy of yours. Gift cards are currently sold on ShopBack Australia; on other regions the check simply finds none.

Outcome fields

  • outcome: resolved (the brand is on ShopBack, as a merchant listing, a gift-card listing or both), not_on_shopback (neither was found; one exception kept from earlier versions: in affiliate mode a paused merchant without a gift card is also not_on_shopback, with shopbackPresence: "merchant_only"), or check_failed (the check could not be completed after retries, because the search page or merchant page was unreachable, or there was no residential proxy to serve the logged-in page; error says why, and it is not billed). A check_failed row is neither a result nor a negative, so re-run it later.
  • shopbackPresence: merchant_only, gift_cards_only, both, not_found, or unknown (the merchant check or the gift-card check could not be completed, so presence is not asserted either way).
  • giftCard and giftCardCheck: see Gift cards. giftCardCheck is found, not_found, brand_mismatch or check_failed.
  • listingStatus describes the merchant listing only: active (a live merchant page), temporarily_unavailable (the merchant page exists but ShopBack has paused the program, so there is no click-out, and shopbackUrl is still filled), delisted (the slug now redirects to a category page), or not_found (no merchant page). In affiliate mode everything except active comes with outcome: "not_on_shopback", unless the brand has a gift-card listing, which makes the row resolved. In details and both mode a paused merchant is resolved with its page details and affiliate: null.
  • affiliate.status: network_identified, generic_affiliate, shopback_direct, click_out_failed, or auth_expired (the session cookie is no longer valid, so re-paste shopbackSessionCookie; once the session is confirmed dead on a residential IP in your region, the remaining targets of that run are reported auth_expired immediately instead of being loaded one by one).
  • resolvedVia: shopback_url, candidate or search, showing how the merchant URL was found.
  • method: http (settled over plain HTTP: every negative, and affiliate results read from ShopBack's server-rendered click-out) or browser (the Playwright fallback).
  • costTelemetry: phases (resolveMs, clickMs, harvestMs, navMs), bytesByTier (bytes transferred per proxy tier), attempts and method. Use it to see what each result cost.

A network_identified result always carries the captured redirectChain (merchant page, ShopBack's /sboc/redirects/... interstitial, the network deeplink) as evidence. A failed check is never reported as not_on_shopback: if the HTTP path is blocked or inconclusive, the target is re-checked in a real browser. The same holds for gift cards: when no merchant listing was found and the gift-card check could not be completed, the row is check_failed and is not billed.

How much does it cost to scrape ShopBack?

Pay per event, priced by what the run actually had to do. Current prices:

EventFree and BronzeSilver (10% off)Gold and above (20% off)
Merchant page (page-details)$0.015$0.0135$0.012
Affiliate result (direct) (affiliate-direct)$0.02$0.018$0.016
Affiliate result (datacenter) (affiliate-datacenter)$0.03$0.027$0.024
Affiliate result (residential) (affiliate-residential)$0.10$0.09$0.08
Negative result (not-on-shopback)$0.01$0.009$0.008
Gift card listing (gift-card), from 13 October 2026$0.01$0.009$0.008
Actor Start (apify-actor-start)$0.02$0.02$0.02

The Actor Start event is charged once per run, one event per GB of memory, minimum one event, and carries no Store discount.

The Merchant page event covers detail extraction. The three affiliate events price the click-out by the proxy tier that was actually used, and since the logged-in click-out is only served to an IP in your session's region it normally runs on the residential tier. The Negative result event is a minimal charge for every honest negative, including paused (temporarily_unavailable) and delisted merchants.

The Gift card listing event starts on 13 October 2026. It is charged once per brand, only when a gift-card listing was found and the brand was confirmed (giftCardCheck: "found"). A brand with a merchant listing and gift cards pays the merchant events plus one Gift card listing. A brand that is on ShopBack through gift cards only pays the Gift card listing instead of the Negative result, never both. Looking for gift cards and finding none costs nothing extra. Until 13 October 2026 gift-card data is included at no charge and a gift-cards-only row is billed as a Negative result.

The Store pricing card shows these same prices per 1,000 events: "$10.00 / 1,000" on the Gift card listing row means one gift card listing costs 1 cent. details runs are the cheapest, both adds the most value per run, and check_failed rows are not billed. Free-plan usage is supported within Apify's limits.

Tips

  • Pass a domain rather than a ShopBack URL and let the Actor resolve it. It cleans to the registrable domain and confirms the match, so you do not have to construct ShopBack URLs.
  • Batch many targets in one run rather than one run per target. Every run pays the Actor Start fee per GB of memory and a cold start, while the per-target work is now a few HTTP requests.
  • Run with the default memory. The affiliate check no longer needs a browser for a normal merchant page, and memory only matters for the browser fallback.
  • Use mode: "details" when you only need rates and terms. It stays on the cheapest tiers.

Input

FieldTypeDescription
modestringaffiliate (default), details, or both.
targetsarrayEach item: { input, brand?, rowNumber? }. input is a company domain, a ShopBack merchant URL or a ShopBack gift-card URL.
shopbackSessionCookiestringRequired for affiliate and both. Cookie-Editor JSON of your ShopBack session (must include sbrefresh). Encrypted, never logged.
regionstringau (default), sg, my, global.
maxConcurrencyintegerParallel targets (default 5).
forceBrowserbooleanResolve and click out in the browser for every target. Slower and costlier, diagnostics only.
trafficFilterstringstrict (default: ShopBack hosts only, no images or fonts), assets, or off. Applies to the browser fallback.

FAQ

How do I find out which affiliate network a brand uses?

Run the Actor in affiliate mode with the brand's domain as the target and a ShopBack session cookie. It resolves the brand's ShopBack merchant page, fires the logged-in click-out, and reports the network it lands on in affiliate.network, with the full redirectChain as evidence.

Why read the network from ShopBack instead of the brand's own site?

Because a brand's own site can still carry stale or legacy affiliate tags it no longer pays through. ShopBack only earns when it tracks through the brand's live program, so whatever network its click-out routes to is the one the brand is actually running today.

Do I need a ShopBack account?

For affiliate and both modes, yes: the click-out only exists for logged-in users, so you paste your own session cookie once (it must include sbrefresh). details mode needs no cookie and no account. The session is sliding and refreshed after every run, so scheduled runs keep it alive.

Which ShopBack regions are supported?

Australia (au, the default), Singapore (sg), Malaysia (my) and global. Gift cards are currently sold on the Australian storefront. A brand with no merchant page in the region you selected comes back as not_on_shopback for that region.

Does the Actor find ShopBack gift cards?

Yes, automatically. Every target is checked for a gift-card listing as well as a merchant listing, and the result is in giftCard with the live cashback rate, the denominations and the source URL. You can also pass a gift-card URL such as shopback.com.au/ecommerce/skugroup/SBV_BPGiftCards directly.

Is gift-card cashback the same as merchant cashback?

No. Gift-card cashback is paid for buying the card from ShopBack; merchant cashback is paid for shopping at the brand through ShopBack's click-out. The Actor reports them in separate fields (giftCard.cashbackRate and details.headlineRate) and never reads an affiliate network out of a gift-card listing.

What happens if a brand is not on ShopBack?

You get an honest row rather than a failure: outcome: "not_on_shopback" with shopbackPresence: "not_found" and a listingStatus of not_found, delisted or temporarily_unavailable, billed at the minimal Negative result price. A brand that has no merchant page but does sell gift cards on ShopBack is not a negative: it comes back resolved with shopbackPresence: "gift_cards_only". A check that could not be completed is reported separately as check_failed and is not billed at all.

Can I monitor cashback rate changes on a schedule?

Yes. Schedule the Actor in details mode, which needs no cookie and stays on the cheapest tiers, and each run returns the headline rate, every rate tier, upsized boosts, terms and categories with a ratesUpdatedAt stamp, so you can diff runs over time.

Why does this Actor run with limited permissions?

Least privilege. It only reads and writes its own storages: the run dataset, and one named key-value store it creates itself to carry your refreshed ShopBack session between runs. Your session cookie input is encrypted and never logged, and the Actor needs no other access to your account.

Support

  • Is this legal? The Actor reads publicly visible ShopBack pages and their click-out redirects. Respect ShopBack's Terms of Service and applicable laws, and use the data responsibly.
  • click_out_failed: the page loaded but the click-out did not fire after all escalation. Retry on a later run.
  • listingStatus: "temporarily_unavailable": ShopBack has paused the merchant's program and the page says "Temporarily unavailable". There is no click-out to read, so no network can be detected right now, and it is billed as a Negative result. Re-check later.
  • auth_expired: your ShopBack session cookie is no longer valid. Re-export and paste a fresh shopbackSessionCookie, including sbrefresh. Running on a schedule keeps the session alive and avoids this.
  • Found a bug or need a custom variant, such as other cashback sources or a full category crawl? Use the Issues tab.

More data tools by Automation Craft