Hotel Loyalty Promo Tracker (Accor, Marriott, IHG)
Pricing
from $1.00 / 1,000 promotions
Hotel Loyalty Promo Tracker (Accor, Marriott, IHG)
Track current hotel loyalty promotions from ALL Accor, Marriott Bonvoy and IHG One Rewards: title, bonus points, nights or discount, region, registration, book-by and stay-by dates, terms and offer links, with the date each promo was first seen.
Pricing
from $1.00 / 1,000 promotions
Rating
0.0
(0)
Developer
Philip Kirkbride
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Security
Limited permissionsShare
Track the current public promotions of three hotel loyalty programs, ALL - Accor Live Limitless, Marriott Bonvoy and IHG One Rewards, and get one clean row per promotion: program, title, summary, the bonus (points, a points multiplier, free nights, a discount or a hotel credit) when the offer states it, member-only and registration flags, region, book-by and stay-by dates, terms and offer links, and the date the promotion was first seen.
Coverage: ALL - Accor Live Limitless, Marriott Bonvoy and IHG One Rewards only. Hilton Honors and World of Hyatt are not supported, so the input accepts only these three programs.
Use it to watch for new bonus-points promotions, compare what the big programs offer this week, or feed a travel newsletter: schedule a weekly run and keep the rows where isNew is true.
Quick Start
Current promotions of all three programs:
{}
Every live Marriott offer plus IHG, Europe only, including promotions that name no region:
{"programs": ["marriott", "ihg"],"region": "europe","marriottAllOffers": true,"maxResults": 2000}
Input
| Field | Type | Default | What it does |
|---|---|---|---|
programs | array | all three | accor, marriott, ihg. |
region | string | any | americas, europe, asia-pacific or middle-east-africa. |
includeUnspecifiedRegion | boolean | true | With a region set, also keep promotions that name no region (worldwide or unstated). |
includeExpired | boolean | false | Also return promotions still published after their book-by or stay-by date (isExpired: true). |
marriottAllOffers | boolean | false | Off: the offers Marriott features (about 40). On: every live Marriott offer, about 1,800, in about 2 minutes. |
maxResults | integer | 100 | Maximum promotions returned, up to 5,000. Programs are interleaved; covering every program requires enough results and available matching offers. |
trackFirstSeen | boolean | true | Remember when each promotion was first seen, so later runs mark new ones with isNew. |
firstSeenStore | string | hotel-promo-tracker-first-seen | Name of the key-value store in your account that keeps the first-seen dates. Use one name per schedule. |
What it returns
Every row has promoKey, program, programName, promoId, offerCode, title, summary, category, bonusType, bonusAmount, bonusUnit, memberExclusive, registrationRequired, regions, regionLabel, brand, hotelName, participatingHotels, bookBy, stayFrom, stayBy, isExpired, offerUrl, termsUrl, terms, firstSeenAt, isNew, source and scrapedAt.
bonusTypeispoints,nights,discountorcredit, withbonusAmountinbonusUnit(points,multiplier,nights,percentor a currency code). It is read from the offer copy, so it is empty when the offer names no figure (a breakfast package, for example).regionsholdsamericas,europe,asia-pacificandmiddle-east-africa. Accor's come from its regional offer pages; Marriott's and IHG's from the places the offer names. An empty list means worldwide or not stated.- Dates are
YYYY-MM-DD.bookByandstayByare filled when the program publishes them: always for Marriott's stay end, and for most dated Accor and IHG promotions. promoKeyis stable across runs, so you can deduplicate or join on it.
Output example
{"promoKey":"accor:hotel-bookings-earn-x4-reward-points","program":"accor","programName":"ALL - Accor Live Limitless","promoId":"hotel-bookings-earn-x4-reward-points","offerCode":"020214","title":"Earn four times more points: discover our new hotels","summary":"To celebrate their (re)opening, multiply your Reward points earned by your stay by four if you are an ALL member.","category":"Member Exclusive","bonusType":"points","bonusAmount":4.0,"bonusUnit":"multiplier","memberExclusive":true,"registrationRequired":true,"regions":[],"regionLabel":null,"brand":null,"hotelName":null,"participatingHotels":null,"bookBy":"2026-11-22","stayFrom":"2026-09-28","stayBy":"2027-03-28","isExpired":false,"offerUrl":"https://all.accor.com/a/en/offers/hotel-bookings-earn-x4-reward-points.html","termsUrl":"https://all.accor.com/a/en/offers/hotel-bookings-earn-x4-reward-points.html","terms":"1. General ALL terms and conditions apply to the Reward Points x4 New Hotels offer and you must be a ALL member to benefit from it.\n2. To take advantage of this…","firstSeenAt":"2026-10-27","isNew":true,"source":"all.accor.com","scrapedAt":"2026-10-27T15:08:16+00:00"}
Limits and caveats
- Programs covered: ALL - Accor Live Limitless (the Offers & Deals corner, English), Marriott Bonvoy (its offers search, US English) and IHG One Rewards (promotion pages of the US English site, all IHG brands). Hilton Honors and World of Hyatt are not supported: their websites don't serve their promotion pages to automated tools.
- Member-specific promotions: promotions shown only after signing in (Marriott's and IHG's personal "registered promotions") are not public and are not included.
- Marriott offers are hotel offers: most are one hotel's package or rate (
hotelName,participatingHotels). Filter oncategory(Bonus Points,PointSavers,Cash + Points,Member Rates) orbonusTypefor loyalty promotions. - Evergreen IHG pages: IHG keeps some standing offers (member rate, senior and AAA rates, buying points) on promotion pages; they come with no dates.
- Dates are read from the published copy.
bookBy,stayFromandstayByare empty when the program doesn't state them (Marriott rarely states a booking deadline). A date printed with a year is kept as printed. When the copy leaves the year out ("Book by 13th September"), the year is inferred from the offer's other dates, and a stay end that would fall before the booking deadline is moved to the next year.isExpiredfollows these dates, so check them against the offer page before acting on a borderline promotion. - Terms are a copy, not the contract.
termsholds the published conditions, cut at 4,000 characters. The program's own page (termsUrl) governs; eligibility, blackout dates and participating hotels are not checked. - Bonus and region are read from the copy and can be empty or broad when an offer is vague. Check
termsbefore relying on a figure. - Freshness: every run reads the programs' websites live, as of
scrapedAt. Programs change, extend or withdraw promotions without notice, so a row is only as current as its run.firstSeenAtis the first day this tracker saw the promotion, not its launch date. - Incomplete runs are flagged. If a program or some of its promotion pages can't be read, the run's status message names them and those promotions are missing from the results; they are never reported as "no promotions". A run that nears its timeout stops early, keeps the rows already saved and says so in the status message.
- A run with the default input takes well under a minute;
marriottAllOffersadds about 2 minutes.
FAQ
How do I get only new promotions each week? Schedule a weekly run with the same firstSeenStore and keep rows where isNew is true. The first run marks everything as new.
Why did a promotion I saw last week disappear? Expired promotions are left out by default. Set includeExpired to true to see promotions still published after their dates.
What happens when one program's site is down? The other programs still return their rows; the run's status message names the program, or the number of its promotion pages, that could not be read.
How fresh is the data? Every run reads the programs' websites live; scrapedAt is when the row was read. Schedule runs as often as you need current promotions.
Price
$0.001 per promotion ($1.00 per 1,000 promotions), plus $0.005 per run start. Each delivered promotion row is one result; promotions left out as expired, outside your region or duplicates are not charged. The run-start event is charged per GB of memory; the default 512 MB run is one start event. The start is charged even if the run saves no results. Platform usage is included in these prices. If you set a maximum charge for the run, it stops reading once the promotions it pays for are saved, and the status message says it stopped at the maximum charge.
Support
For questions or issues, contact us from the Actor page.