Where can we find the latest documentation and samples?
For samples and data dictionary please use this live page in the Partner Portal. If you don't have access to this please contact your commercial account manager or our helpdesk.
How can we test our Travel rankings data scraper? Can you send test messages?
You can use this self-serve tool to test your implementation and test connectivity by sending mock POST TR requests
How can we limit the amount of data we receive in Travel rankings (are there any filters and constraints)?
- Filters
- OTA brands (e.g. get data for your Brand A or Brand B only)
- Markets (e.g. get searches from market UK only)
- Routes (e.g. get searches from UK to BCN only)
- Constraints
- Max itinerary position (e.g. get itineraries that appear among top 100 cheapest offers only)
Reach out to your Commercial account manager or Skyscanner partner service manager to get more details.
Why do we not receive any/all data?
Please check the following first
- your Skyscanner metasearch integration is active and working fine
- your Travel rankings endpoint is accessible from Skyscanner's IPs (see documentation and test harness)
- check the health of your TR integration by looking at the number of successful and failed pushes here. If all or some messages failed it means your service is not processing the data correctly.
Why do we not get all itineraries per search?
You only get itineraries where you have a price + itineraries included in your top itineraries list (check your setting with a member of Skyscanner partner services).
What is the lag between a user search and TR message request?
It is normally between 1-1.5 minutes.
What is the expected volume of TR messages?
This depends on the market you are in and your brand policy. You can get an estimate of requests by looking at your Metasearch API health dashboard in Partner Portal. Note the total sum of requests over the week as well as request peak times.
Can I get historical TR data?
At the moment, TR is a live stream of data. The data is not being persisted, hence historical reproduction of data is not possible. Try using Travel Insights reports / API instead.
What sessions are included in the TR feed?
All user searches, including searches for price alerts subscriptions and B2B partners searches.
Do you include cached prices in TR or just live prices?
TR payload is the reflection of what a user would see in the UI when they search for tickets. If some results come from the Skyscanner cache, then the same results are sent in TR. It's similar to results retrieved from live responses.
Do you filter/sort results in TR if a traveller uses front-end filters (e.g. 1 stops only, Airline X only, departure times)?
No, TR feed is ordered by price/best score before any filtering may be done.
Why is there empty legs information in some itineraries?
As we receieve flight details from our downstream providers and partners, in rare cases the flight information may not be guaranteed. This may only happen to stop-over flights of multi-segment journeys.
Can we link an offer from our Metasearch API response with the result in TR?
Yes, you can use the field partner_quote_id for that. First you need to make sure you have a unique ID in your meta API response (any format). Then reach out to a member of Skyscanner partner services team to get this field processed as a partner_quote_id.
What kind of granularity does partner_quote_id have?
This depends on how it is configured. Some partners send one partner_quote_id per search. Some partners have a specific partner_quote_id to reference a particular itinerary fare from their API. It is recommended to send a unique ID per itinerary rather than a search.
Why am I getting null in some partner_quote_id I received?
- PQID may not be enabled in TR subscription
- PQID may not be integrated on metasearch API level (not extracted from Meta API response)
- PQID may not be picked up because a partner has not provided the PQID in Meta API response
- PQID may not be picked up because of unknown error while processing it in Meta API response
Why am I getting several partner_quote_ids per search (uuid) while I expect a single value?
This may happen if a traveller ticks 'include nearby airports' checkbox (origin, destination or both) when they make a search.
Can we link searches data in Travel Insight reports to TR search events?
Yes, for every Travel Insight search you should be able to find a match in TR searches data with a match rate or 99%. You can match data by correlationID or a combination of correlationID and partner_quote_id / itineraryID. You should not, however, join TR searches to TI searches as TR is a broader data set.
Why do I see a mismatch between TI and TR datasets?
If you encounter a difference between the TI and TR datasets, the cause could be as simple as dissimilar configuration. For example, the TI subscription could include website ids, markets that are not included or excluded on the TR subscription.
In case both subscriptions are the same and there is a significant difference please reach out a member of Skyscanner partner services.
Why do I see mismatch between TI and TR data sets itinerary position mismatch?
Comparing itinerary positions that users redirected on with a list of itineraries is not a valid. The former is affected by user behaviour (presentation, filtering, sorting, etc) while the other is a simple list of itineraries that can be ordered by various criteria. Using only these two datasets the information that would allow a meaningful comparison is not available.
Why does TR feed has searches with identical correlation ID, but varying uuids?
It happens because of combined search results. If the first search / session is displaying on mobile the combined search result, the 2nd session is from the expanded number of itineraries shown to a traveller. Both share the same correlation ID (request ID), but the Travel Rankings PUSH UUIDs are different because 2 distinct API calls are made to a partner Meta API.
Can we get competitor prices information before our prices are shown to a user?
No, this is not possible, unfortunately.
What is the difference between Position and Rank?
Every ticket you sell has both a position and a rank. The position of a ticket refers to the position of itinerary relative to other itineraries in the results page. Position 1 means the top of the results page, position 2 is the next one down, and so on. The rank of a ticket, on the other hand, is the rank of the ticket compared to other tickets on the same itinerary. Rank 1 means the book button, rank 2 is the next cheapest price on that itinerary and so on.
The screenshot below illustrates the difference between the terms "rank" and "position".
Why 20% of TI redirects can't be matched to TR messages by PQID?
The problem you observe:
The specific case I have the issue with at the moment is content that was clicked on (therefore, not filtered, and seen by the customer) but not contained in our TR data.
One of the symptoms is that you can’t match 15-20% of TI redirects to a relevant TR message by a PQID value.
Why is there no match for those redirects?
The redirects have PQIDs returned from the updated (re-scraped) search results. These can’t be found in Travel Rankings search results messages.
Why is there no message in TR for the updated search results, which contain new PQIDs?
It’s not meant to be included in TR results by design as no new search session is created when all partner quotes are scraped from their Meta APIs. In instances when there’s a PQID mismatch, we can assert that a quote re-scrape happened.
Why is there a quote re-scrape and what is it?
Quote re-scrape is a scenario when a single partner’s API is called to get quotes for specific search criteria. This is not to be confused with a new search (session) when all partners’ API are requested.
Quote re-scrape is triggered in 2 scenarios:
- There’s a considerable delay between the original search and a user’s attempt to click (in the vast majority of cases)
- There’s an issue getting a quote from our quote cache
Here’s the flow example
- The User makes a Search 1 (all partners API requested, correlationID1 created, PQID1 returned from a Partner X, TR message sent containing all partner quotes)
- The User then stays idle (e.g. 30 min)
- Finally the User attempts to make a click on Partner X
- Quote cache expired? If no, proceed to the website, otherwise, make a re-scrape
- Skyscanner carries out a re-scrape by calling Partner X Meta API ONLY (i.e. no new session created, no other partners quotes retrieved)
- Skyscanner gets new quotes from Partner X (PQID2). TR message not sent
- Skyscanner logs a redirect (correlationID1 from Search 1, PQID2 from re-scraped search results)
So this explains why you observe calls to your Meta API and why you generate new PQIDs (PQID2 in the example above), however, no extra TR message is sent. This also explains why new PQID2 is assigned to the redirect.
What should a TR partner do in this case?
While PQID is one of the ways to match TI redirects to TR searches, you can also use another field called CorrelationID (and if required ItineraryID). The match rate between TI redirects > TR searches by correlationID is 99%.
So even if you decide to keep on using PQIDs to match data sets, you can use the following logic
- If PQIDs match between redirects and searches, then keep on using them
- Otherwise use correlationID to match TI redirects and TR searches
What about competition for the re-scraped search which you can’t get without an extra message in TR?
By definition, there won’t be any competitor quotes in re-scraped results as only Partner X Meta API is called (only your API is called in your case).
What if the price is updated during the re-scrape? How will I know it?
As there’s no extra TR message for the re-scrape search, the only way to identify the updated price is to take it from TI redirect value.
What are the plans to include a re-scrape search in TR?
At the moment, it’s not considered due to technical design limitations.
Comments
0 comments
Please sign in to leave a comment.