Viagogo Resale Prices by Zone avatar

Viagogo Resale Prices by Zone

Under maintenance

Pricing

Pay per usage

Go to Apify Store
Viagogo Resale Prices by Zone

Viagogo Resale Prices by Zone

Under maintenance

Lowest resale price per seating zone for any viagogo event page.

Pricing

Pay per usage

Rating

0.0

(0)

Developer

clarily

clarily

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

Viagogo Resale Prices & Market Depth

Most viagogo scrapers give you a "from €X" headline. This one gives you the state of the resale market: how long each listing has been sitting unsold, the full price distribution, the price buyers actually pay once fees are added, and demand signals — per seating zone.

All of it comes from a single page load. No extra requests, no extra cost.

What you get

{
"url": "https://www.viagogo.fr/Concert-Billets/Pop-Rock/Katseye-Billets/E-161141960",
"eventId": "161141960",
"scrapedAt": "2026-08-14T09:14:22.481Z",
"price": 153,
"currency": "EUR",
"listings": 63,
"availableTickets": 403,
"daysToEvent": 26,
"viewsLastHour": 51,
"venue": { "name": "Accor Arena", "city": "Paris", "countryCode": "FR" },
"histogram": [
{ "startPrice": 153, "endPrice": 238.5, "count": 4 },
{ "startPrice": 239.5,"endPrice": 325, "count": 8 },
{ "startPrice": 326, "endPrice": 411.5, "count": 13 },
{ "startPrice": 412.5,"endPrice": 498, "count": 3 }
],
"cheapestListings": [
{ "section": "Placement Libre", "row": null, "price": 260, "totalPrice": 520,
"faceValue": 89.5, "quantity": 2, "activeSince": "il y a 13 heures" },
{ "section": "Lower Tier N", "row": "8", "price": 549, "totalPrice": 1098,
"faceValue": 140, "quantity": 8, "activeSince": "il y a 9 jours" },
{ "section": "Lower Tier U", "row": "9", "price": 645, "totalPrice": 1290,
"faceValue": 111, "quantity": 2, "activeSince": "il y a 54 jours" }
],
"zones": [
{ "ticketClassId": 265, "label": "Gradins inférieurs", "price": 162, "faceValue": 100,
"listings": 16, "isSoldOut": false, "isSellingFast": false, "isSellingOutSoon": false },
{ "ticketClassId": 267, "label": "Gradin Supérieur", "price": 153, "faceValue": 80,
"listings": 9, "isSoldOut": false, "isSellingFast": false, "isSellingOutSoon": false },
{ "ticketClassId": 24628,"label": "Cat Or", "price": 767, "faceValue": 139,
"listings": 1, "isSoldOut": false, "isSellingFast": false, "isSellingOutSoon": false }
]
}

Why this beats a headline price

activeSince tells you what is actually moving. A €645 seat listed for 54 days is not a market price — it is a seller's wish. A €260 seat posted 13 hours ago is. This is the field to come here for: no other ticket dataset publishes how long a listing has been sitting unsold, and the usual workaround is to diff listing IDs across two runs and rebuild the history yourself.

totalPrice is what the buyer actually pays. A €260 listing bills at €520 once fees are applied. Comparing marketplaces on displayed price means comparing the wrong number.

histogram gives you depth, not a floor. Knowing the cheapest ticket is €153 tells you nothing about whether you can buy three of them. The distribution tells you how many listings sit under any threshold you care about.

faceValue per listing and per zone makes the markup computable directly: here the floor resells at 2.9× its face value while a Cat Or seat sits at 5.5×.

Input

FieldTypeDefaultWhat it does
startUrlsarrayViagogo event page URLs, containing E-<id>. Search and performer pages are rejected.
includeZonesbooleantrueAdds the per-zone price breakdown. Costs one page load per zone.
maxZonesinteger12Caps zones priced per event.
currencystringEURCurrency for every price in the output.
proxyConfigurationobjectnoneOptional. Direct connection by default.

Turning includeZones off still returns the histogram, the cheapest listings, the demand signals and the zone list with its sold-out flags — everything except the per-zone floor prices.

currency matters more than it looks. Viagogo converts prices to the currency of whichever IP asks, so the same event returns €153 from France and $175 from a US datacenter. This Actor pins the currency instead, which is what makes two runs comparable regardless of where they execute. Set it to the currency you report in — USD for US inventory, GBP for UK.

Use it for

  • Pricing decisions — where to list, based on how many listings sit below your price
  • Fee-aware comparison — the only field set that exposes the real checkout price
  • Liquidity screening — listing age separates a moving market from a stagnant one
  • Markup and demand analysis — resale versus face value, views per hour, days to event

What you pay for

Two billed events, so you only pay for the work you ask for:

Billed eventWhenWhat it costs to produce
event-scrapedonce per event URLone page load — the snapshot, histogram, listings and signals
zone-pricedonce per zone actually pricedone extra page load each

Zones are billed separately because they are five times the work: a six-zone arena means seven page loads instead of one. Zones that come back empty — no inventory, or a lookup that failed — are not billed. Run with includeZones off and you pay the base rate only.

Tips

Batch your events into one run. The browser stays warm between events, so its cache is reused: the first page of a run transfers ~3.2 MB, every page after that ~330 KB. A hundred URLs in one run costs roughly a tenth of a hundred single-URL runs.

Zone prices are the only expensive part. They need one page load per zone — about 27 seconds for a six-zone arena. Everything else is one page load, full stop.

Limitations

  • Works on any viagogo national domain — viagogo.fr, viagogo.com, viagogo.de, viagogo.co.uk — and on events anywhere in the world, not only European ones.
  • cheapestListings covers the ten listings viagogo renders on the page; listings and the histogram cover the full inventory.
  • activeSince is returned as viagogo phrases it ("il y a 9 jours"), not as a timestamp.
  • faceValue is reported only when published in the same currency as the resale price — otherwise null, since a face value in another currency is not comparable. Expect nulls when pricing US inventory in euros, and set currency accordingly.
  • Zones with no listings at all are returned with a null price rather than omitted.
  • If a page has no listings, the record carries an error field and the run continues.