I'm looking to get the official Twitter handle from an OS Verified project, programmatically.
I've tried calling the "collections" OS API, but the twitter_username field seems to rarely be populated with anything but "null" even for verified projects.
I've tried scraping the data manually with fetch but I got 1020 errors likely due to cloudflare protections.
Has anyone else used Moralis NFT or some other GraphHQ like service to obtain the Twitter handle of a given NFT project (starting out with a contract address)?
You can try Ubiquity API. They have an endpoint for collection metadata which also includes the Twitter account name
https://ubiquity.api.blockdaemon.com/v1/nft/ethereum/mainnet/collection?contract_address=0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D
This will give you the following response
{
"collection": {
"id": "4203aedd-7964-5fe1-b932-eb8c4fda7822",
"name": "Bored Ape Yacht Club",
"description": "The Bored Ape Yacht Club is a collection of 10,000 unique Bored Ape NFTs— unique digital collectibles living on the Ethereum blockchain. Your Bored Ape doubles as your Yacht Club membership card, and grants access to members-only benefits, the first of which is access to THE BATHROOM, a collaborative graffiti board. Future areas and perks can be unlocked by the community through roadmap activation. Visit www.BoredApeYachtClub.com for more details.",
"logo": "https://ubiquity.api.blockdaemon.com/v1/nft/media/ethereum/mainnet/collection/4203aedd-7964-5fe1-b932-eb8c4fda7822/logo.png",
"banner": "https://ubiquity.api.blockdaemon.com/v1/nft/media/ethereum/mainnet/collection/4203aedd-7964-5fe1-b932-eb8c4fda7822/banner.jpeg",
"verified": true,
"contracts": [
{
"address": "0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D",
"name": "BoredApeYachtClub",
"symbol": "BAYC",
"description": "",
"image_url": "https://ubiquity.api.blockdaemon.com/v1/nft/media/ethereum/mainnet/",
"type": "ERC721"
}
],
"meta": {
"discord_url": "https://discord.gg/3P5K3dzgdB",
"external_url": "http://www.boredapeyachtclub.com/",
"twitter_username": "BoredApeYC"
},
"sub_collection": []
}
I'm trying to scrape reviews from Google Play. Google Play loads reviews dynamically after page has been scrolled to the end. I intercepted post requests that browser sends for retrieving reviews and noticed that the only thing that changes per request is the request's body. What I'm struggling to understand is how the request's body is generated.
The first request's body looked like this:
f.req: [[["UsvDTd","[null,null,[2,null,[40,null,\"CpUBCpIBKm0KOfc7ms0D_z7jKJielp7Fz8_Pz8_Pms3OzpuZyJvMnMXOxYmSxc3MyczPz8vIycjMysbHxszPysb__hAoITbZQaENmbWoMU2VCwWZPGwZOdccwQD8MmXEUABaCwlwT4zmNQBa2BADYMm1lu0EMiEKHwodYW5kcm9pZF9oZWxwZnVsbmVzc19xc2NvcmVfdjI\"],null,[]],[\"com.feelingtouch.zf3d\",7]]",null,"generic"]]]
and this's is the second request:
f.req: [[["UsvDTd","[null,null,[2,null,[40,null,\"CpUBCpIBKm0KOfc7msyg_28-Rpielp7Fz8_Pz8_Pm56eypyZzcycm8XOxYmSxc3MyczPz8vIycjMysbHxszPysb__hB4ITbZQaENmbWoMZI5V7V-7g3BObnBkABfM2XEUABaCwli2aizD1W9ExADYMm1lu0EMiEKHwodYW5kcm9pZF9oZWxwZnVsbmVzc19xc2NvcmVfdjI\"],null,[]],[\"com.feelingtouch.zf3d\",7]]",null,"generic"]]]
Can I somehow reverse engineer how the request is generated?
I tried to use Selenium, but after scrolling down few dozens time RAM usage runs up and Selenium becomes unresponsive.
The thing that changes is the pagination token. But, there are a couple of other things as well.
Here is the full encoded request body, with the parameters wrapped in #{} (number_of_results, pagination_token, and product_id).
f.req=%5B%5B%5B%22UsvDTd%22%2C%22%5Bnull%2Cnull%2C%5B2%2Cnull%2C%5B#{number_of_results}%2Cnull%2C#{pagination_token}%5D%2Cnull%2C%5B%5D%5D%2C%5B%5C%22#{product_id}%5C%22%2C7%5D%5D%22%2Cnull%2C%22generic%22%5D%5D%5D
So each time you scroll the page the pagination_token would change. They use it to retrieve the next page results.
You don't need to reverse engineer the token itself. You can find the first one when inspecting the page source, and then, for each next time you make a request to retrieve the results, the next_page_toke will be included in there. So, you just keep replacing the token until you reach the last page, and retrieve all the reviews.
Alternatively, you could use a third-party solution like SerpApi. We handle proxies, solve captchas, and parse all rich structured data for you.
Example python code for retrieving YouTube reviews (available in other libraries also):
from serpapi import GoogleSearch
params = {
"api_key": "SECRET_API_KEY",
"engine": "google_play_product",
"store": "apps",
"gl": "us",
"product_id": "com.google.android.youtube",
"all_reviews": "true"
}
search = GoogleSearch(params)
results = search.get_dict()
Example JSON output:
"reviews": [
{
"title": "Qwerty Jones",
"avatar": "https://play-lh.googleusercontent.com/a/AATXAJwSQC_a0OIQqkAkzuw8nAxt4vrVBgvkmwoSiEZ3=mo",
"rating": 3,
"snippet": "Overall a great app. Lots of videos to see, look at shorts, learn hacks, etc. However, every time I want to go on the app, it says I need to update the game and that it's \"not the current version\". I've done it about 3 times now, and it's starting to get ridiculous. It could just be my device, but try to update me if you have any clue how to fix this. Thanks :)",
"likes": 586,
"date": "November 26, 2021"
},
{
"title": "matthew baxter",
"avatar": "https://play-lh.googleusercontent.com/a/AATXAJy9NbOSrGscHXhJu8wmwBvR4iD-BiApImKfD2RN=mo",
"rating": 1,
"snippet": "App is broken, every video shows no dislikes even after I hit the button. I've tested this with multiple videos and now my recommended is all messed up because of it. The ads are longer than the videos that I'm trying to watch and there is always a second ad after the first one. This app seriously sucks. I would not recommend this app to anyone.",
"likes": 352,
"date": "November 28, 2021"
},
{
"title": "Operation Blackout",
"avatar": "https://play-lh.googleusercontent.com/a-/AOh14GjMRxVZafTAmwYA5xtamcfQbp0-rUWFRx_JzQML",
"rating": 2,
"snippet": "YouTube used to be great, but now theyve made questionable and arguably stupid decisions that have effectively ruined the platform. For instance, you now have the grand chance of getting 30 seconds of unskipable ad time before the start of a video (or even in the middle of it)! This happens so frequently that its actually a feasible option to buy an ad blocker just for YouTube itself... In correlation with this, YouTube is so sensitive twords the public they decided to remove dislikes. Why????",
"likes": 370,
"date": "November 24, 2021"
},
...
],
"serpapi_pagination": {
"next": "https://serpapi.com/search.json?all_reviews=true&engine=google_play_product&gl=us&hl=en&next_page_token=CpEBCo4BKmgKR_8AwEEujFG0VLQA___-9zuazVT_jmsbmJ6WnsXPz8_Pz8_PxsfJx5vJns3Gxc7FiZLFxsrLysnHx8rIx87Mx8nNzsnLyv_-ECghlTCOpBLShpdQAFoLCZiJujt_EovhEANgmOjCATIiCiAKHmFuZHJvaWRfaGVscGZ1bG5lc3NfcXNjb3JlX3YyYQ&product_id=com.google.android.youtube&store=apps",
"next_page_token": "CpEBCo4BKmgKR_8AwEEujFG0VLQA___-9zuazVT_jmsbmJ6WnsXPz8_Pz8_PxsfJx5vJns3Gxc7FiZLFxsrLysnHx8rIx87Mx8nNzsnLyv_-ECghlTCOpBLShpdQAFoLCZiJujt_EovhEANgmOjCATIiCiAKHmFuZHJvaWRfaGVscGZ1bG5lc3NfcXNjb3JlX3YyYQ"
}
Check out the documentation for more details.
Test the search live on the playground.
Disclaimer: I work at SerpApi.
I'm trying to find a feasible way to iterate over all Scientific Papers on Google Scholar (or any other Scientific library). I do not need the paper content, only Title, Author, Citations & Abstract.
I'm looking for some type of libraries/api's that allow me to iterate and process these papers, as well as something with high querying capabilities.
The only one I found so far is scholarly. It seems pretty good for querying, however, I do not see any option for iterating through everything.
Is there any other web scraping tool that allows me to do that?
Without knowing your specific purpose, it is a bit difficult to give a good response.
But nevertheless, the go-to-place for scientific metadata (e.g. title, authors, citations) would be CrossRef's API. It is free to use.
While I do not know how you determine your sample, you could, for instance, take the ISSN of a journal to fetch metadata about the journal's papers (example here), or you can use a publication's DOI to obtain metadata about that specific paper (example here).
There's a Google Scholar API from SerpApi that supports organic, cite, profile, author results. It bypasses blocks from Google without the need to figure it out by yourself.
Example code to integrate that extracts organic results and full example in the online IDE:
# to scrape profile results, author:
# https://replit.com/#DimitryZub1/Scrape-Google-Scholar-Profile-Results-from-all-Pages#main.py
import json
from serpapi import GoogleScholarSearch
params = {
"api_key": "Your SerpApi API key",
"engine": "google_scholar",
"q": "biology", # search query
"hl": "en" # language
}
search = GoogleScholarSearch(params) # where extraction happens
results = search.get_dict() # JSON -> Python dict
for result in results["organic_results"]:
print(json.dumps(result, indent=2))
# part of the output:
'''
{
"position": 0,
"title": "The biology of mycorrhiza.",
"result_id": "6zRLFbcxtREJ",
"link": "https://www.cabdirect.org/cabdirect/abstract/19690600367",
"snippet": "In the second, revised and extended, edition of this work [cf. FA 20 No. 4264], two new chapters have been added (on carbohydrate physiology physiology Subject Category \u2026",
"publication_info": {
"summary": "JL Harley - The biology of mycorrhiza., 1969 - cabdirect.org"
},
"inline_links": {
"serpapi_cite_link": "https://serpapi.com/search.json?engine=google_scholar_cite&q=6zRLFbcxtREJ",
"cited_by": {
"total": 704,
"link": "https://scholar.google.com/scholar?cites=1275980731835430123&as_sdt=2005&sciodt=0,5&hl=en",
"cites_id": "1275980731835430123",
"serpapi_scholar_link": "https://serpapi.com/search.json?as_sdt=2005&cites=1275980731835430123&engine=google_scholar&hl=en"
},
"related_pages_link": "https://scholar.google.com/scholar?q=related:6zRLFbcxtREJ:scholar.google.com/&scioq=biology&hl=en&as_sdt=0,5",
"versions": {
"total": 4,
"link": "https://scholar.google.com/scholar?cluster=1275980731835430123&hl=en&as_sdt=0,5",
"cluster_id": "1275980731835430123",
"serpapi_scholar_link": "https://serpapi.com/search.json?as_sdt=0%2C5&cluster=1275980731835430123&engine=google_scholar&hl=en"
},
"cached_page_link": "https://scholar.googleusercontent.com/scholar?q=cache:6zRLFbcxtREJ:scholar.google.com/+biology&hl=en&as_sdt=0,5"
}
}
... other results
'''
If you want to scrape data from all available pages, or all publications from a certain author, there is a dedicated Scrape historic Google Scholar results to CSV, SQLite or Scrape all Google Scholar Profile, Author Results to CSV blog posts of mine at SerpApi.
Disclaimer, I work for SerpApi.
In iTunesConnect you can open rss feeds for the customer reviews of your app:
https://itunes.apple.com/us/rss/customerreviews/id=123/sortBy=mostRecent/xml
https://itunes.apple.com/de/rss/customerreviews/id=123/sortBy=mostRecent/xml
The top level folder (us/de/..) of the URL changes for each country, the parameter id is the store id of the app. (here 123)
With rss2email you can check the feeds and send an email when somebody posts a review. So far, so good.
My problem is, that in iTunesConnect there are only six countries in the dropdown, where somebody has actually posted a review. But I cannot find out, what other country codes (us/de/..) there are, so I will miss reviews from other countries.
I have tried parsing possible codes from this page and got 73 two character codes:
http://www.apple.com/choose-your-country/
But this has resulted in most reviews triggering up to five emails and I don't see, which country codes have caused them or if there might be stores with codes longer than two characters.
Does anyone maybe know, how/where to get a list of all valid countries/appstores without those causing duplicates?
edit: i could not add tags for "rss2email" and "customerreviews" ..
You can use the country list of the Country dropdown input list of the following url:
http://itunes.apple.com/rss/
Probably you got the question resolved by now but in following link you can check appstore country codes: AppStore Territories
https://itunes.apple.com/lookup?id=[app-id]&country=[country-code]
Example URL: https://itunes.apple.com/lookup?id=297606951&country=us
Example Response:
{
"resultCount": 1,
"results": [{
"supportedDevices": ["iPhone5s-iPhone5s", "iPadAir-iPadAir", "iPadAirCellular-iPadAirCellular", "iPadMiniRetina-iPadMiniRetina", "iPadMiniRetinaCellular-iPadMiniRetinaCellular", "iPhone6-iPhone6", "iPhone6Plus-iPhone6Plus", "iPadAir2-iPadAir2", "iPadAir2Cellular-iPadAir2Cellular", "iPadMini3-iPadMini3", "iPadMini3Cellular-iPadMini3Cellular", "iPodTouchSixthGen-iPodTouchSixthGen", "iPhone6s-iPhone6s", "iPhone6sPlus-iPhone6sPlus", "iPadMini4-iPadMini4", "iPadMini4Cellular-iPadMini4Cellular", "iPadPro-iPadPro", "iPadProCellular-iPadProCellular", "iPadPro97-iPadPro97", "iPadPro97Cellular-iPadPro97Cellular", "iPhoneSE-iPhoneSE", "iPhone7-iPhone7", "iPhone7Plus-iPhone7Plus", "iPad611-iPad611", "iPad612-iPad612", "iPad71-iPad71", "iPad72-iPad72", "iPad73-iPad73", "iPad74-iPad74", "iPhone8-iPhone8", "iPhone8Plus-iPhone8Plus", "iPhoneX-iPhoneX", "iPad75-iPad75", "iPad76-iPad76", "iPhoneXS-iPhoneXS", "iPhoneXSMax-iPhoneXSMax", "iPhoneXR-iPhoneXR", "iPad812-iPad812", "iPad834-iPad834", "iPad856-iPad856", "iPad878-iPad878", "iPadMini5-iPadMini5", "iPadMini5Cellular-iPadMini5Cellular", "iPadAir3-iPadAir3", "iPadAir3Cellular-iPadAir3Cellular", "iPodTouchSeventhGen-iPodTouchSeventhGen", "iPhone11-iPhone11", "iPhone11Pro-iPhone11Pro", "iPadSeventhGen-iPadSeventhGen", "iPadSeventhGenCellular-iPadSeventhGenCellular", "iPhone11ProMax-iPhone11ProMax", "iPhoneSESecondGen-iPhoneSESecondGen", "iPadProSecondGen-iPadProSecondGen", "iPadProSecondGenCellular-iPadProSecondGenCellular", "iPadProFourthGen-iPadProFourthGen", "iPadProFourthGenCellular-iPadProFourthGenCellular", "iPhone12Mini-iPhone12Mini", "iPhone12-iPhone12", "iPhone12Pro-iPhone12Pro", "iPhone12ProMax-iPhone12ProMax", "iPadAir4-iPadAir4", "iPadAir4Cellular-iPadAir4Cellular", "iPadEighthGen-iPadEighthGen", "iPadEighthGenCellular-iPadEighthGenCellular", "iPadProThirdGen-iPadProThirdGen", "iPadProThirdGenCellular-iPadProThirdGenCellular", "iPadProFifthGen-iPadProFifthGen", "iPadProFifthGenCellular-iPadProFifthGenCellular", "iPhone13Pro-iPhone13Pro", "iPhone13ProMax-iPhone13ProMax", "iPhone13Mini-iPhone13Mini", "iPhone13-iPhone13", "iPadMiniSixthGen-iPadMiniSixthGen", "iPadMiniSixthGenCellular-iPadMiniSixthGenCellular", "iPadNinthGen-iPadNinthGen", "iPadNinthGenCellular-iPadNinthGenCellular", "iPhoneSEThirdGen-iPhoneSEThirdGen", "iPadAirFifthGen-iPadAirFifthGen", "iPadAirFifthGenCellular-iPadAirFifthGenCellular"],
"features": ["iosUniversal"],
"advisories": [],
"isGameCenterEnabled": false,
"screenshotUrls": [
"https://is1-ssl.mzstatic.com/image/thumb/PurpleSource115/v4/f6/33/7b/f6337b0c-2671-e2b4-002f-0a36fab77e71/17eaa185-7352-4096-b55c-0bae474b4199_Apple_5.5_1242x2208_IntroScreen.png/392x696bb.png",
"https://is2-ssl.mzstatic.com/image/thumb/Purple125/v4/ce/2f/11/ce2f115f-e0df-cf9d-4c72-d0cc4f7091e8/2150888f-4c22-4325-99a9-5d482b1655f9_1242x2208_Screen1.png/392x696bb.png",
"https://is5-ssl.mzstatic.com/image/thumb/Purple115/v4/18/d9/8c/18d98c8b-ac4f-ee10-d6f5-78b83231b361/dc6e2c88-148f-4e8c-bb8b-52a28e6f0964_1242x2208_Screen2.png/392x696bb.png",
"https://is4-ssl.mzstatic.com/image/thumb/Purple125/v4/24/47/4a/24474a84-9822-7713-7756-6ac963cf89bb/098cc97c-bf76-4aca-b1c3-36c7e4219a74_1242x2208_Screen3.png/392x696bb.png",
"https://is1-ssl.mzstatic.com/image/thumb/Purple115/v4/8b/d4/31/8bd43171-4bae-a895-6bba-1a4dd6c019b3/58ae38d7-8318-4e21-a418-2a8de41525f9_1242x2208_Screen4.png/392x696bb.png",
"https://is5-ssl.mzstatic.com/image/thumb/Purple115/v4/94/cf/b6/94cfb621-7843-b73e-8d94-1116bd088796/21c4c003-5d3e-4793-8b58-11b24e5be2af_1242x2208_Screen5.png/392x696bb.png",
"https://is4-ssl.mzstatic.com/image/thumb/Purple115/v4/b7/ff/32/b7ff32fc-40f7-8fbc-c47f-e6199fdd46cc/0d923ffa-5cf0-4fcc-990c-be0252f7e6e5_1242x2208_Screen6.png/392x696bb.png"
],
"ipadScreenshotUrls": ["https://is4-ssl.mzstatic.com/image/thumb/Purple125/v4/b0/da/7a/b0da7a66-25ab-0fc0-704f-b5dc60530566/pr_source.png/576x768bb.png", "https://is4-ssl.mzstatic.com/image/thumb/Purple115/v4/c9/19/ef/c919ef13-664e-0d0f-01fc-0d456b56c2c8/pr_source.png/576x768bb.png", "https://is3-ssl.mzstatic.com/image/thumb/Purple115/v4/28/9e/4a/289e4a6c-6428-53fd-fde1-0efa40e64a78/pr_source.png/576x768bb.png", "https://is1-ssl.mzstatic.com/image/thumb/Purple115/v4/be/1c/67/be1c678b-4f3f-33c3-fbaa-8e8be720911b/pr_source.png/576x768bb.png", "https://is2-ssl.mzstatic.com/image/thumb/Purple125/v4/e1/94/bf/e194bf78-08ea-e419-7bf8-dbb476dbed58/pr_source.png/576x768bb.png", "https://is5-ssl.mzstatic.com/image/thumb/Purple125/v4/92/95/84/929584ee-7825-9d7b-1a65-22a08a337203/pr_source.png/576x768bb.png", "https://is4-ssl.mzstatic.com/image/thumb/Purple115/v4/d8/88/eb/d888eb7d-0203-07e9-0cb7-2bd86e8202c5/pr_source.png/576x768bb.png", "https://is2-ssl.mzstatic.com/image/thumb/Purple125/v4/ed/99/82/ed9982f2-9f91-70f8-7cff-db3be3e24221/pr_source.png/576x768bb.png"],
"appletvScreenshotUrls": [],
"artworkUrl60": "https://is2-ssl.mzstatic.com/image/thumb/Purple112/v4/27/fb/42/27fb42b0-925f-1a86-abe8-4722e884d8bd/AppIcon-1x_U007emarketing-0-6-0-0-85-220-0.png/60x60bb.jpg",
"artworkUrl512": "https://is2-ssl.mzstatic.com/image/thumb/Purple112/v4/27/fb/42/27fb42b0-925f-1a86-abe8-4722e884d8bd/AppIcon-1x_U007emarketing-0-6-0-0-85-220-0.png/512x512bb.jpg",
"artworkUrl100": "https://is2-ssl.mzstatic.com/image/thumb/Purple112/v4/27/fb/42/27fb42b0-925f-1a86-abe8-4722e884d8bd/AppIcon-1x_U007emarketing-0-6-0-0-85-220-0.png/100x100bb.jpg",
"artistViewUrl": "https://apps.apple.com/us/developer/amzn-mobile-llc/id297606954?uo=4",
"kind": "software",
"releaseNotes": "Our new design provides easier access to the features you use most while on the go. This includes the homepage, account and order information, your cart and the ability to browse and discover Amazon departments, products, programs, and features.",
"bundleId": "com.amazon.Amazon",
"primaryGenreName": "Shopping",
"primaryGenreId": 6024,
"sellerName": "AMZN Mobile LLC",
"genreIds": ["6024", "6012"],
"isVppDeviceBasedLicensingEnabled": true,
"currentVersionReleaseDate": "2022-08-22T18:53:31Z",
"currency": "USD",
"trackCensoredName": "Amazon Shopping",
"languageCodesISO2A": ["AR", "EN", "FR", "DE", "IT", "JA", "PT", "ZH", "ES"],
"fileSizeBytes": "163086336",
"sellerUrl": "https://www.amazon.com/",
"formattedPrice": "Free",
"contentAdvisoryRating": "4+",
"averageUserRatingForCurrentVersion": 4.852289999999999992041921359486877918243408203125,
"userRatingCountForCurrentVersion": 7564184,
"averageUserRating": 4.852289999999999992041921359486877918243408203125,
"trackViewUrl": "https://apps.apple.com/us/app/amazon-shopping/id297606951?uo=4",
"trackContentRating": "4+",
"minimumOsVersion": "13.0",
"version": "19.16.0",
"wrapperType": "software",
"releaseDate": "2008-12-03T08:00:00Z",
"trackId": 297606951,
"trackName": "Amazon Shopping",
"artistId": 297606954,
"artistName": "AMZN Mobile LLC",
"genres": ["Shopping", "Lifestyle"],
"price": 0.00,
"description": "Amazon Shopping offers app-only benefits to help make shopping on Amazon faster and easier. Browse, view product details, read reviews, and purchase millions of products. Amazon delivers to 100+ countries in as quickly as 3-5 days. Whether you’re buying gifts, reading reviews, tracking orders, scanning products, or just shopping, the Amazon Shopping app offers more benefits than shopping on Amazon via your desktop. \n\nNever miss a delivery\nGet real-time tracking and delivery notifications so you know where your package is and when it arrives. \n\nKnow exactly what you’re purchasing\nFull 360° product view lets you see items from every angle. “View in you room” makes sure it fits by using your phone’s camera and VR so you can see it in your space. \n\nWe’ll notify you when items go on sale\nJust tap the heart icon to save items to Your Lists and we’ll alert you of price drops so you don’t miss a deal. \n\nNever forget your password\nSave time by staying securely signed in. If you prefer to sign out, use facial or fingerprint identification to sign back in. \n\nConnect with us when it works best for you\nLive chat support is open 24 hours, 7 days a week. Once you’ve started a chat, it stays that way for 24 hours so you don’t have to start your support session from the beginning. \n\nWe’ll find that item for you\nNot sure of an item’s brand or where to but it? Just tap the scan icon in the search bar, take a picture of the item or its barcode, and we’ll find it for you. \n\nIn order to provide a rich experience and enable features such as voice shopping, notifications, visual search, customer reviews, and authentication this app may request permission to access contacts, camera, microphone, notification, touch id, photos and Bluetooth.\n\nAmazon Shopping is available in English, Spanish, German, and Simplified Chinese. In addition to International Shopping, you can change your settings in this single app to shop Amazon.ca, Amazon.co.uk, Amazon.de, Amazon.fr, Amazon.com, Amazon.it, Amazon.es, Amazon.cn, Amazon.co.jp or Amazon.in.\n\nFor customers located within the European Union, United Kingdom or Brazil: By using this app, you agree to Amazon’s Conditions of Use applicable for your country. Please also see the applicable Privacy Notice, Cookies Notice and Interest-Based Ads Notice for your country. Links to these terms and notices can be found in the footer of your local Amazon homepage.\n\nFor all other customers: By using this app, you agree to the applicable Amazon Conditions of Use (e.g. www.amazon.com/conditionsofuse) and Privacy Notice (e.g. www.amazon.com/privacy) for your country. Links to these terms and notices can be found in the footer of your local Amazon homepage.\n\nIf your device supports TrueDepth technology, the app will use your device camera to detect your facial movements only while using certain features such as virtually try-on products like sunglasses. All information processed using this technology remains on your device and is not otherwise stored, processed or shared by Amazon.",
"userRatingCount": 7564184
}]
}