Skip to content

Instantly share code, notes, and snippets.

@nfriedly
Last active June 25, 2017 01:24
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save nfriedly/b80b569e2be2d2c86c18 to your computer and use it in GitHub Desktop.
Save nfriedly/b80b569e2be2d2c86c18 to your computer and use it in GitHub Desktop.
How much are verizon "smart rewards" points worth?

How much are verizon "smart rewards" points worth?

TLDR: Each point is worth about 0.012¢ - 0.109¢ ($0.00012 - $0.00109) depending on what you want and how many you have. The more you have, the more they're worth, but what you get also makes a big difference.

I just noticed that verizon has a rewards program, and so I spent a few minutes trying to work out approximately how much my accrued 74,710 points were worth. There are a few different ways to spend the points, but the gift card auctions seemed like one of the most straightforward ways of getting a real-world value. Helpfully, verizon will show you all past auctions on a single (huge) page, and they even include a copy of jQuery for easy data scraping!

Here's a quick one-liner that you can paste into the console to reduce the page to a single chunk of JSON (after it loads) that you can easily copy-paste to somewhere else:

$(function() { var data = $('li.auctionItem').map(function(){ var el = $(this); return {name: el.find('h1').text().trim(), points: parseInt(el.find('.bidAmt').text().trim().replace(',', '')), ended: new Date(el.find('.endTime').text().trim().replace('ET','')), link: el.find('a.details')[0].href}; }).toArray(); $('body').html('<textarea>' + JSON.stringify(data, null, 2) + '</textarea>'); });

Warning: the page automatically redirects you to your "my account" page after a few minutes, so be sure to grab the JSON as soon as it's ready.

Data in hand, I broke out node.js and lodash for some quick analysis. The full script and results are below, but the short version is that it mostly depends on how many points you have. Lower-ticket items like $5 and $10 gift cards cost upwards of 5k points per dollar, however the larger $50 and $100 gift cards can be had for ~2k points per dollar or less. And if you really save up your points, the "big ticket" combo packs can go down as low as 1/10th of that.

But, with my measily few points, the best I can afford is a $10 gift card. Which probably explains why they're so expensive...

Analysis

3657 of 4025 auctions were gift cards (91%)

Average points per dollar by gift card amount: (Note: larger amounts may be combo packs that include a gift card + other items)

vendor overall $5 $10 $25 $50 $100
all (combined) 2056 5791 5482 3233 2182 1446

Average points per dollar for gift cards from most common vendors:

vendor overall $5 $10 $25 $50 $100
Verizon Wireless 2669 3666 2815 1954
Restaurant.com 1151 1702 1337 921
Target 4071 7116 8164 4425 3580 2240
Walmart 3555 6328 6522 4889 3524 2159
Dunkin Donuts 3824 6689 6707 3382 2537
CVS 2582 5467 4884 3436 2340 1376
Macy's 2643 4390 4002 3007 1867
Best Buy 3992 5661 5105 5348 3199 2359
TGI Fridays 3826 4685 4609 3727 3084
Nike 2386 4417 3144 1358

Best deals (for vendors with at least 15 past auctions):

vendor overall $5 $10 $25 $50 $100
Restaurant.com 1151 1702 1337 921
Tony Roma's 1342 1638 2216 1003 973
Boston Market 2144 4345 3357 1291
Nike 2386 4417 3144 1358
Safeway 2390 3247 2958 1565
BP 2517 4763 4391 2668 1454
CVS 2582 5467 4884 3436 2340 1376
Chevron Gas 2600 5977 2703 1750
Macy's 2643 4390 4002 3007 1867
Verizon Wireless 2669 3666 2815 1954
// requires node.js
// run the jquery one-liner in article.md, save the results in a file, load that file below.
// also, `npm install lodash tty-table`
var data = require('./vzw-auction-results.json');
var _ = require('lodash');
var table = require('tty-table');
// parse names for gift card details
data.forEach(function (d) {
var gc = d.name.match(/(.*) Gift .* \$([0-9,]+)/) || d.name.match(/(.*) \$([0-9,]+) Gift .*/);
if (gc) {
d.isGiftCard = true;
d.vendor = gc[1];
d.value = parseInt(gc[2].replace(',', ''));
}
});
function pluck() {
var keys = _.toArray(arguments);
return function(obj) {
return _.pick(obj, keys);
};
}
function formatDollars(v, k) {
return '$' + k;
}
function printTable(vendors) {
var headers = ['vendor', {value:'averagePointsPerDollar', alias: 'overall'}, '$5', '$10', '$25', '$50', '$100']
.map((d) => typeof d == 'string' ? {value: d} : d);
console.log(table(headers, vendors).render().replace(/#ERR/g, ' '));
}
var giftCards = _.filter(data, 'isGiftCard');
console.log('%s of %s auctions were gift cards (%s%)', giftCards.length, data.length, Math.round(giftCards.length/data.length*100) );
console.log('\nAverage points per dollar by gift card amount: \n(Note: larger amounts may be combo packs that include a gift card + other items)');
printTable([_.extend({
vendor: 'all (combined)',
averagePointsPerDollar: Math.round(_.sum(giftCards, 'points') / _.sum(giftCards, 'value')),
}, _(giftCards)
.groupBy('value')
.mapValues(function(dollarAmountAuctions) {
return Math.round(_.sum(dollarAmountAuctions, 'points') / _.sum(dollarAmountAuctions, 'value'));
})
.mapKeys(formatDollars)
.value()
)]);
var byVendor = _(giftCards).groupBy('vendor').map(function(auctions, vendor) {
return _.extend({
vendor: vendor,
numAuctions: auctions.length,
averagePointsPerDollar: Math.round(_.sum(auctions, 'points') / _.sum(auctions, 'value')),
}, _(auctions).groupBy('value').mapValues(function(dollarAmountAuctions) {
return Math.round(_.sum(dollarAmountAuctions, 'points') / _.sum(dollarAmountAuctions, 'value'));
}).mapKeys(formatDollars).value());
});
console.log('\nAverage points/dollar for gift cards from most common vendors:');
printTable(byVendor
.sortBy('numAuctions').reverse()
.take(10)
//.map(pluck('vendor', 'averagePointsPerDollarByValue'))
.value()
);
console.log('\nBest deals (for vendors with at least 15 past auctions):');
printTable(byVendor
.filter(function(d) { return d.numAuctions > 15; })
// sort by the overall average, but display the individual gift card amount averages since that's what users can bit on
.sortBy('averagePointsPerDollar')
.take(10)
//.map(pluck('vendor', 'averagePointsPerDollarByValue'))
.value()
);
@ALLLi64
Copy link

ALLLi64 commented Apr 11, 2016

Hi, I’d thought you might find this youtube video interesting regarding the Verizon rewards program. I agree the program is quite ridiculous but this lady has a worthwhile suggestion to donate a decade’s worth of points to a children’s hospital like St. Judes.

https://www.youtube.com/watch?v=3AVFuyhPbSE

@Ritualistic
Copy link

The points now expire after a year or two.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment