This is the code I am using, I basically want to get price of the product from different stores, I mean I want to build a scanner so that I put different store ids and it gets prices from all stores for that specific product. def func1(): import json import requests headers = { "authority": "apionline.homedepot.com", "method": "POST", "path": "/federation-gateway/graphql?opname=productClientOnlyProduct", "scheme": "https", "accept": "*/*", "accept-encoding": "gzip, deflate, br, zstd", "accept-language": "en-US,en;q=0.9,it;q=0.8", "cache-control": "no-cache", "content-length": "11172", "content-type": "application/json", "cookie": "AMCV_F6421253512D2C100A490D45%40AdobeOrg=MCMID|40920061203262528240348224432635813603; THD_PERSIST=; THD_CACHE_NAV_PERSIST=; thda.u=36d8a384-7ecf-2b06-7734-e936594ed1dd; _px_f394gi7Fvmc43dfg_user_id=ZWY0ZjMzZTAtZmNmZi0xMWVmLWIyOGItMDFiYjNmNDM0OGJh; ajs_anonymous_id=ad6fa4e9-8ac2-4898-afbd-7ef97a530fec; trx=5436161433999891084; QuantumMetricUserID=7c1703a046b1ab870405e8e9559404f1; _gcl_au=1.1.1875298573.1742401829; HD_DC=origin; thda.s=97e6fa64-327a-0fa3-cb73-e1505b186cfb; ads=8920f21205efc84e9aa9883b9619d419; _ga_9H2R4ZXG4J=GS1.1.1742993713.6.0.1742994858.60.0.0; _ga=GA1.1.430429979.1742401819; THD_NR=1; DELIVERY_ZIP=10005; DELIVERY_ZIP_TYPE=USER; forterToken=9657c64609084fdab98e7dc764ca717c_1743082805834_839_UDF43-m4_23ck_; QuantumMetricSessionID=b872f9e0f83cfae1017a1ef71bc5c67d; bm_ss=ab8e18ef4e; AKA_A2=A; bm_s=YAAQfEISAjmpP6aVAQAAC48q2gNzp3343XijFXJGZ95f4bIoasikP8c/6E29JnVXD4edSAniDgBcdbxRLMx2qnX/b7xvrN5bQL7Z/XTL0AGQTtdUAtQQHyHo4HIKCmoh5o/pciPMk57hirtPzyQjTzZLivEtHDzhrKwBLx468HGfGcBRgotEJwa0FxtYl2Tel+ciBeJriJfXp/2r//ikVr+FrazHn5on0EeavQ/D65Yh5lEEmW9S6DADfawIH1Pmh3drvFuSNuPq0ls0M9v+ZM5GciSl121cCxCPhZ6mBSd7zNBeXf8l6zh7ATXKAel8F7mEBPak35HqFSugvMf04MNVZ8q1QzBKgJ9t4MAj4DZQ7pZVU0LPQcCH3B3yxwXZoInTNPYvYc6z2eiy5qLQVvv2u4dmPwRBX9aPZq+l9GiEFaB3PPyB1SJRvxrzjm27aaPwM7QiM1RNOEPAaP4=; bm_so=1F1067047E2CD34B07451C6D2F7DCCB662541E5C7339C97A32796F97E8B9F12A~YAAQfEISAjqpP6aVAQAAC48q2gN890Y6VKLY3SZDSuyHIcyVdALI3GvDq78imeZ0BBHnBGAfa1x6hfo7ZjGuBvIp0IDXuiUZVmXfSXyaSXAStS2U8uapNyowf4+C3Q72kaB64zkqpESsOGE96Fbk3ByjKG/xKDS1yQwmkoggxVZa9X1pRhsNIfJpl67Fq7U+XWgpOgiqjwkDch8eCiCQd88MQEUTUgQSMOvVW9vlAkfyBRWk4H7Xl8FDb1DpGPdTQ9ctpHOW2ZgU8+CgxHG/oMFB85zDv3VQ3HT3TGFuJgO+APQt6eCu6fajEiXAkKcFbjuhWHQ7thhyFRiRIZbpqWvj9MPcU84Ns3Yq9vThNmFOpJWxHKrM5vkRgcKuQxGt3jvtW8pRf9Joq3fFu2XD/7BusQc5NPW3tBaZpJ8AbeiiO2EV7dpglkKdOFVFlosxZWuqgkCKUL34qLgvtgB2MIpy; bm_sz=F36A53604B2EFF3ADD09B85FCA4F1CD1~YAAQfEISAjupP6aVAQAAC48q2hssshKN/w04+LVngizUccL+Fvgur5JnUdtt3K/QQwYJl0Kky7oJg/MbuzIHILRFtKBDY+6Ifzhalk7PelXaYty/AVPywEt0Y6Jy2lmsDjI0lE3AyfbMOqiFiFZkQNcP5p8HBrwkiEXgk3UP1//YDLvoinQk2hb0wSnKe51sNKAnzp3BeMVCwJbtfm8cCzu6qtsIgGpU8QOC+IY7pTeq5cBStRpH3xr5Xw+uKgfk8vVPrc0RyD5WfxFnopwStAMk2JS4rzkUuowWcmwLOybfDGA7kFEj4QUqJ7jPyq3fjtLNBvAYGF6TosrnAnlBUO13rYpC4izMZ27XsWcovSDm1emwK2B2QgIV6Pwgv3iAY3jgFmWFZHEfXFglFBAJ2Ts=~3293753~3422520; _abck=47695A247A6A6CDAACFADDAB4F2983CD~0~YAAQfEISAtWpP6aVAQAAo5Qq2g0xdbthCQ17/vZDIMbVynuUDgB4VmnYvsgEpCxoNvrKb+qWuUIVfqF1F3gDdEV9PVedyacX0+02U4sIp2huyDP2TIgD+i/FmFPvBzUbH2Yxp7WeRVD5maTraN4rjBwmfBp7ZUyfnVUZsszFImoHv6ZXrlqSq2gh+YLiUb8DKhkig9VToH40tksuEkn068kPd63cxtCg0aSiUe85AFwcLPQ89cE6YpOTPb0Wiame2DUFHcSVingSFK38V47xJ9IzKqNoAYRagrvzylhO4+TysVV/Z7jgQrWVEDZvwQM/74iPqgj+EDPzBNZzv4z5rbFxwax3K5OTy3+aQ29+u0y+JfIjEUHnuqdCLr09LZfvRbzZ3P/NTSZq2jIwfOBzoq4LRZHHgmCPMbleENxWYJMlORSi6D5DpruQqtDRzpYBZ2/FWcl/qQDlf23Ga+qrPdWgas6NadY/OToVbRNYvfXtDYyh+loSb6E6mWrug4HTEMPTFnlIPYXuY9Twbr4yCNKI9ZQop/MlOHInKAf2D7Y0f3NXwOS1LQDrjaDpyaE8GGrSOEhQ/UNbdyHYAUK6Fhb2XRDoTZn2ruUkcZRaqsxNUeihkQr+rMmG64EKyPHKJI7+8udfJfcBzu+132Sk0X19lM4TczsIXXxQCyH36GWrzfl4Sys462lPa7Tt65J7ZM2flTHXs5ZYr3ixS1PHXw==~-1~-1~-1; kndctr_F6421253512D2C100A490D45_AdobeOrg_cluster=va6; kndctr_F6421253512D2C100A490D45_AdobeOrg_identity=CiY0MDkyMDA2MTIwMzI2MjUyODI0MDM0ODIyNDQzMjYzNTgxMzYwM1ISCPnxiN3XMhABGAEqA09SMjAA8AHRtKrR3TI%3D; THD_SESSION=; THD_CACHE_NAV_SESSION=; ak_bmsc=83582C9096925CD2B42AF5B52AB0EB33~000000000000000000000000000000~YAAQbEISAjoRYa6VAQAAV6Mq2hugrd4XVJYjPGpLHYxVlZ1W+HQIdHrjiQ8byArLksPJVtYM4uhCnCFtcuKJkAn5SwVK8MPccr/gJ2s+2q7jFKljby2y725UguSmkH5pTyO42N0RaDsBttJBUqEgn/TB6xgwdsvmHpGMFUM9bb6tfVE96F/fPXG1zVLtxULOUbhzYB/QkVbOjv9F1Ixelm2GcQgHbMcSr+sa4PC4dOk5gsKAHAEzMKb48SGGkffwutMyN553OQEWrLtyfeRgYX6UlFt50Blg6dbZb/tPt4MEZ3LAZ2GikOzFFU0yF2R5BGazxVyKNiqbpa3Ye1zGGjDjTVbkMT3l58LacvX02jQvKM5ULD+ktJx1jnDpkJ/UR9iudHapQa0J0aRHaC93Lbw+lWAvQkRs2sTw8xuDw1Dmv5JMU+BejfoODka5JXWhz4IeLm1pYonArFPgihc8wQ==; THD_LOCALIZER=%257B%2522WORKFLOW%2522%253A%2522LOCALIZED_BY_STORE%2522%252C%2522THD_FORCE_LOC%2522%253A%25220%2522%252C%2522THD_INTERNAL%2522%253A%25220%2522%252C%2522THD_LOCSTORE%2522%253A%25224705%252BSouthcenter%2520-%2520Tukwila%252C%2520WA%252B%2522%252C%2522THD_STRFINDERZIP%2522%253A%252298188%2522%252C%2522THD_STORE_HOURS%2522%253A%25221%253B7%253A00-20%253A00%253B2%253B6%253A00-22%253A00%253B3%253B6%253A00-22%253A00%253B4%253B6%253A00-22%253A00%253B5%253B6%253A00-22%253A00%253B6%253B6%253A00-22%253A00%253B7%253B6%253A00-22%253A00%2522%252C%2522THD_STORE_HOURS_EXPIRY%2522%253A1743125586%257D", # Truncated for brevity "origin": "https://www.homedepot.com", "pragma": "no-cache", "priority": "u=1, i", "referer": "https://www.homedepot.com/", "sec-ch-ua": '"Chromium";v="134", "Not:A-Brand";v="24", "Google Chrome";v="134"', "sec-ch-ua-mobile": "?0", "sec-ch-ua-platform": '"Windows"', "sec-fetch-dest": "empty", "sec-fetch-mode": "cors", "sec-fetch-site": "same-site", "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36", "x-api-cookies": '{"x-user-id":"36d8a384-7ecf-2b06-7734-e936594ed1dd"}', "x-cloud-trace-context": "6650a67f833b4d7585f82af783f3a543/2;o=1", "x-current-url": "/p/Latex-ite-4-75-Gal-Ultra-Shield-Driveway-Filler-Sealant-70691/100508445", "x-debug": "false", "x-experience-name": "fusion-gm-pip-desktop", "x-hd-dc": "origin", "x-parent-trace-id": "f9c9e27a461544e6218e9ad7f5e9222b/13316437098234969620", "x-thd-customer-token": "" } url = "https://apionline.homedepot.com/federation-gateway/graphql?opname=productClientOnlyProduct" params={ "opname":"productClientOnlyProduct" } payload={ "operationName": "productClientOnlyProduct", "query": "query productClientOnlyProduct($itemId: String!, $dataSource: String, $loyaltyMembershipInput: LoyaltyMembershipInput, $skipSpecificationGroup: Boolean = false, $storeId: String, $isBrandPricingPolicyCompliant: Boolean, $skipFavoriteCount: Boolean = false, $configId: String, $skipPaintDetails: Boolean = true, $zipCode: String, $quantity: Int, $skipInstallServices: Boolean = true, $skipKPF: Boolean = false, $skipSubscribeAndSave: Boolean = false) { product(itemId: $itemId, dataSource: $dataSource, loyaltyMembershipInput: $loyaltyMembershipInput) { itemId dataSources identifiers { canonicalUrl brandName itemId modelNumber productLabel storeSkuNumber upcGtin13 skuClassification specialOrderSku toolRentalSkuNumber rentalCategory rentalSubCategory upc productType isSuperSku parentId omsThdSku sampleId roomVOEnabled __typename } specificationGroup @skip(if: $skipSpecificationGroup) { specifications { specName specValue __typename } specTitle __typename } availabilityType { discontinued status type buyable __typename } details { description collection { url name collectionId __typename } installation { serviceType leadGenUrl __typename } highlights __typename } media { images { url type subType sizes hotspots { coordinate { xCoordinate yCoordinate __typename } omsIDs __typename } ocrHotspots { coordinate { xCoordinate yCoordinate __typename } omsIDs __typename } altText __typename } video { shortDescription thumbnail url videoStill uploadDate dateModified link { text url __typename } title type videoId longDescription __typename } threeSixty { id url __typename } augmentedRealityLink { usdz image __typename } __typename } pricing(storeId: $storeId, isBrandPricingPolicyCompliant: $isBrandPricingPolicyCompliant) { promotion { dates { end start __typename } type description { shortDesc longDesc __typename } dollarOff percentageOff promotionTag savingsCenter savingsCenterPromos specialBuySavings specialBuyDollarOff specialBuyPercentageOff experienceTag subExperienceTag __typename } value original alternatePriceDisplay alternate { bulk { pricePerUnit thresholdQuantity value __typename } unit { caseUnitOfMeasure unitsOriginalPrice unitsPerCase value __typename } __typename } mapAboveOriginalPrice mapDetail { percentageOff dollarOff mapPolicy mapOriginalPriceViolation mapSpecialPriceViolation __typename } message preferredPriceFlag specialBuy unitOfMeasure clearance { value dollarOff percentageOff unitsClearancePrice __typename } conditionalPromotions { dates { start end __typename } description { shortDesc longDesc __typename } experienceTag subExperienceTag eligibilityCriteria { itemGroup minPurchaseAmount minPurchaseQuantity relatedSkusCount omsSkus __typename } reward { tiers { minPurchaseAmount minPurchaseQuantity rewardPercent rewardAmountPerOrder rewardAmountPerItem rewardFixedPrice maxAllowedRewardAmount maxPurchaseQuantity __typename } __typename } nvalues brandRefinementId __typename } __typename } reviews { ratingsReviews { averageRating totalReviews __typename } __typename } seo { seoKeywords seoDescription __typename } taxonomy { breadCrumbs { label url browseUrl creativeIconUrl deselectUrl dimensionName refinementKey __typename } brandLinkUrl __typename } dataSource favoriteDetail @skip(if: $skipFavoriteCount) { count __typename } info { hidePrice ecoRebate quantityLimit categoryHierarchy sskMin sskMax unitOfMeasureCoverage wasMaxPriceRange wasMinPriceRange productSubType { name link __typename } replacementOMSID fiscalYear productDepartment classNumber hasVisuallySimilar forProfessionalUseOnly isSponsored sponsoredMetadata { campaignId placementId slotId sponsoredId trackSource __typename } globalCustomConfigurator { customExperience customButtonText customDescription customExperienceUrl customTitle customPosition __typename } augmentedReality sponsoredBeacon { onClickBeacon onViewBeacon onClickBeacons onViewBeacons __typename } customerSignal { previouslyPurchased __typename } isBuryProduct isGenericProduct returnable hasSubscription isLiveGoodsProduct paintBrand dotComColorEligible paintFamily gccExperienceOmsId isInStoreReturnMessageEligible movingCalculatorEligible label bathRenovation minimumOrderQuantity projectCalculatorEligible subClassNumber protectionPlanSku eligibleProtectionPlanSkus hasServiceAddOns consultationType pipCalculator { coverageUnits display publisher toggle defaultAdditionalCoverage additionalCoveragePercentage __typename } recommendationFlags { visualNavigation pipCollections packages ACC collections frequentlyBoughtTogether bundles batItems __typename } __typename } paintDetails(storeId: $storeId, configId: $configId) @skip(if: $skipPaintDetails) { colorDisplayName brandLogo colorType rgb { red green blue __typename } __typename } badges(storeId: $storeId) { endDate label name color creativeImageUrl message timerDuration timer { timeBombThreshold daysLeftThreshold dateDisplayThreshold message __typename } __typename } fulfillment(storeId: $storeId, zipCode: $zipCode, quantity: $quantity) { fulfillmentOptions { fulfillable type services { type locations { isAnchor locationId inventory { isOutOfStock quantity isInStock isLimitedQuantity isUnavailable maxAllowedBopisQty minAllowedBopisQty __typename } curbsidePickupFlag isBuyInStoreCheckNearBy distance state storeName storePhone type storeTimeZone __typename } deliveryTimeline deliveryDates { startDate endDate __typename } deliveryCharge dynamicEta { hours minutes __typename } hasFreeShipping freeDeliveryThreshold totalCharge deliveryMessage earliestDeliveryDate optimalFulfillment hasSameDayCarDelivery shipFromFastestLocation __typename } __typename } anchorStoreStatus anchorStoreStatusType backordered backorderedShipDate bossExcludedShipStates excludedShipStates seasonStatusEligible onlineStoreStatus onlineStoreStatusType fulfillmentBundleMessage fallbackMode sthExcludedShipState bossExcludedShipState inStoreAssemblyEligible bodfsAssemblyEligible __typename } installServices(storeId: $storeId, zipCode: $zipCode) @skip(if: $skipInstallServices) { scheduleAMeasure gccCarpetDesignAndOrderEligible __typename } keyProductFeatures @skip(if: $skipKPF) { keyProductFeaturesItems { features { name refinementId refinementUrl value __typename } __typename } __typename } bundleFlag sizeAndFitDetail { attributeGroups { attributes { attributeName dimensions __typename } dimensionLabel productType __typename } __typename } subscription @skip(if: $skipSubscribeAndSave) { defaultfrequency discountPercentage subscriptionEnabled __typename } seoDescription bundleSpecificationDetails { parents { parentId __typename } __typename } __typename } }", "variables": { "skipSpecificationGroup": False, "skipFavoriteCount": False, "skipPaintDetails": True, "skipInstallServices": True, "skipKPF": False, "skipSubscribeAndSave": False, "isBrandPricingPolicyCompliant": False, "itemId": "100508445", "storeId": "4705", "zipCode": "10005" }, "isBrandPricingPolicyCompliant": False, "itemId": "100508445", "skipFavoriteCount": False, "skipInstallServices": True, "skipKPF": False, "skipPaintDetails": True, "skipSpecificationGroup": False, "skipSubscribeAndSave": False, "storeId": "4705", "zipCode": "10005" } response = requests.post(url, params=params, json=payload, headers=headers) # Print response print(response.text) if response.status_code == 200: print("Response JSON:", response.json()) func1() This is the ERROR I am getting: {'data': {'productClientOnlyProduct': None}, 'error': [{'message': 'productClientOnlyProduct errors'}]} I do not know what's wrong, I have asked chatGPT and deepseek as well but I could not find any solution, I do not want to use selenium as it is so slow, I just want to use API to get results faster. You can find this API on the product page: Example product: https://www.homedepot.com/p/Latex-ite-4-75-Gal-Ultra-Shield-Driveway-Filler-Sealant-70691/100508445 Go to network tab: Enable Fetch/XHR mode You will find this API easily: Continue reading...