Guide: Monitoring Competitor Prices and Automating Ad Adjustments with ShoppingScraper & Channable

Overview: This step-by-step guide explains how to use ShoppingScraper (to collect competitor pricing data from Google Shopping) and Channable (to integrate that data and manage your product ads). We will set up an automated process to scrape competitor prices for specific products (by EAN), import the data into Channable, and create rules that pause advertising for products that are significantly overpriced compared to competitors (and re-enable ads when prices become competitive again). The guide is suitable for users new to these tools, with clear examples and explanations at each step.


Step 1: Schedule a Price-Scraping Task in ShoppingScraper

To begin, set up a scheduled task in ShoppingScraper to regularly fetch the lowest competitor prices for your products on a specific Google Shopping site. Follow these steps in the ShoppingScraper web app:

ShoppingScraper’s “Scheduler” interface for creating a new scraping task.

  1. Navigate to the Scheduler: Log in to ShoppingScraper and go to the Scheduler Dashboard (often under a “Web app” or similar tab). Click on the option to create a new task. You will see a form for scheduling a scraping task (like in the screenshot above).

  2. Task Title: Enter a descriptive name for the task. For example, “Daily Lego Price Check” or “Competitor Prices NL – Twice Daily”. This is just for your reference to identify the task later.

  3. EAN Codes: In the field for EAN Codes (one per line), list the EANs of the products you want to monitor. Put each 13-digit EAN on a separate line. For example:

     
    5702017416663 8718475960143 (…and so on)

    Ensure these EANs correspond to the products in your catalog whose competitor prices you want to track. (EAN is the European Article Number – essentially the barcode number – which Google Shopping uses to identify products.)

  4. Site (Google Shopping domain): Select the Google Shopping site (country domain) you want to scrape. ShoppingScraper supports many country-specific Google Shopping sites. For instance, to scrape the Dutch Google Shopping, choose shopping.google.nl (NL).

    Selecting the target Google Shopping country site (e.g., NL, BE, DE, FR, etc.) for the scraping task.

    Make sure to pick the site that matches the market where you’re advertising. (If you advertise in multiple countries, you may set up separate tasks for each country’s Google Shopping domain.)

  5. Frequency: Choose how often the task should run. You can schedule it daily at a specific time (e.g., Daily at 09:00), or even multiple times per day if needed. For example, you might run it daily, or every 12 hours, depending on how frequently competitor prices change and how often you want updates. Select the frequency from the dropdown. Common options are Daily, Hourly, or a custom interval. In our example, we choose “Daily (09:00)” to get a price update every morning.

  6. Run Immediately (Optional): If you want the task to execute right away (rather than waiting for the first scheduled time), tick the option “Run immediately after creation”. This is useful to do an initial data grab now. Otherwise, the first run will happen at the next scheduled interval (e.g., next day at 09:00).

  7. Create Task: Double-check the details and click “+ Create Task”. The task will be saved and activated. You should now see it listed in your Scheduler Dashboard with an Active status. For example, if you set it to daily, it will show the next run time scheduled. If you opted to run immediately, it will start fetching data now.

    After this step, ShoppingScraper is set to collect the latest competitor prices for your specified EANs on the chosen Google Shopping site at the frequency you selected. You have essentially automated the price scraping process.

Step 2: Obtain the “Cheapest Offers XLSX” Feed URL from ShoppingScraper

Once your scraping task is created (and after it has run at least once to gather data), you can get the feed of results. ShoppingScraper provides the output as downloadable files or feed URLs. We specifically want the “Cheapest Offers” feed in XLSX format, which contains the lowest price found for each EAN. Here’s how to get the URL:

Locating the “Offers Cheapest XLSX” feed in ShoppingScraper’s Scheduler (via the Downloads menu).

  1. Wait for Task Execution: Ensure the task has run at least one time. If you checked “run immediately,” it should finish shortly; otherwise, wait until the scheduled run time or manually trigger the task (there may be a “play” ► button next to the task to run it on demand).

  2. Open Downloads Menu: In the Scheduler Dashboard list, find your task and click on the “Downloads” button (it may look like a floppy disk icon or a dropdown labeled “Downloads”). This will reveal a list of available output files for that task.

  3. Select Cheapest Offers XLSX: In the dropdown, you will typically see multiple output options. For example, you might see:

    • Offers Full CSV / XLSX (which contain all offers found for each product)

    • Offers Cheapest CSV / XLSX (which contain only the cheapest offer per product)

    We want the “Offers Cheapest XLSX” option. This file will have one row per EAN, showing the cheapest offer details (lowest price + shipping, etc.). Using the cheapest offer data is ideal here because we just need the lowest competitor price for comparison.

  4. Copy the Feed URL: Next to the “Offers Cheapest XLSX” option, click on “Copy URL”. This copies the direct link to the XLSX feed to your clipboard. (The URL is an endpoint on ShoppingScraper’s servers that always serves the latest data for that task’s cheapest offers. It often contains an API key or token, so treat it confidentially.)

  5. Save the URL (for Channable): Paste this URL somewhere handy (e.g., a notepad) temporarily – you will need to input this URL into Channable in the next step. The URL will typically be long and include the task ID and a token.

    Tip: The difference between “Full” and “Cheapest” offers feeds is that the Full feed lists every competitor offer (there could be many rows per product if multiple sellers are offering it), whereas the Cheapest feed gives just one row per product (the lowest total price found). Using the Cheapest feed simplifies our work since we only need the lowest competitor price per product to make decisions.

By the end of Step 2, you have the feed URL that provides an up-to-date XLSX file of the cheapest competitor prices for your products. Now we’ll import this data into Channable.

Step 3: Import the Competitor Price Feed into Channable (Custom XLSX Feed)

In this step, we will add the ShoppingScraper feed (the XLSX URL you copied) as a new data source in Channable. This will allow Channable to fetch the competitor pricing data and make it available alongside your product catalog. We’ll configure the feed as a custom XLSX import and map the relevant fields (EAN and cheapest price).

Follow these instructions in Channable:

  1. Open Your Channable Project: Log in to Channable and go to the project that contains your product feed (the one you use for your online store or ads). Usually, your own product data (with fields like title, price, EAN, etc.) is already imported into this project (via your shop’s API or a primary feed).

  2. Go to Imports Setup: In the left menu, click on “Setup” (or “Feeds” depending on the interface) and then “Setup import”. Here you manage your data sources. You should see your main product import listed (e.g., from your shop platform or main feed). We will now add (combine) the new competitor feed.

  3. Add a New Feed (Combine Imports): Click on the “+ Combine imports” button (the exact wording may be “Add import” or “Combine imports”). This tells Channable you want to bring in an additional data source to enrich or extend your existing product data.

  4. Choose Import Type: A dialog will prompt you to select the type of import. Since we have a direct file URL (the XLSX feed), choose an option like “File URL” or “Feed”. If there’s an option to specify format, choose “Custom file” (meaning it’s not a pre-formatted known feed like Google Sheets or Shopify, but a custom data file). In some Channable versions you might directly choose the file type in the next step instead.

  5. Enter the Feed URL: Paste the “Offers Cheapest XLSX” URL from ShoppingScraper into the URL field.

  6. File Format Settings: Set the file format to XLSX (Excel). Channable will need to know this to parse the file correctly. Also ensure any authentication if required (usually ShoppingScraper links are tokenized so no login needed; just ensure the URL is correct).

  7. Name the Import (optional): You might be asked to give this import a name for reference, e.g., “Competitor Prices Feed”. This is just to identify it among your imports.

  8. Save & Fetch Feed: Save the new import. Channable will now fetch the XLSX file from the URL. If all is well, it should pull in the data and proceed to the field mapping screen for this imported feed.

  9. Map the Fields: On the field mapping screen, you will see a list of fields detected from the XLSX file (on the left side) and dropdowns or input fields to map them to Channable’s internal fields (on the right side). We need to map at least two fields:

    • api_ean → EAN: The feed’s api_ean field contains the product EAN from the scrape. Map this to Channable’s EAN field (usually Channable has a standard field called “EAN” which likely is already in use by your main import). This mapping is crucial because it will be the key that links the competitor data to your products.

    • total_price → CheapestPrice: The total_price field from the feed is the total competitor price (offer price + shipping) of the cheapest offer. We want to import this into a new field in Channable, which we’ll call “CheapestPrice”. In the mapping interface, create a new field (if it doesn’t exist) named something like “CheapestPrice” and map total_price to this field. (You can name it as you like, e.g., “Competitor_Lowest_Price”, but we’ll use “CheapestPrice” for clarity.)

    You can ignore or skip other fields from the feed that you don’t need. For example, the feed might also have seller_name (name of the seller with lowest price), offer_price and shipping_price separately, condition of item, etc. You might map seller_name to a field like “CheapestSeller” if you want to see who the competitor is, but this is optional. The key fields are the EAN and the total price.

    Example of the “Offers Cheapest” XLSX data. Column B is api_ean (product EAN) and column N is total_price (total cheapest offer price). We will map these to Channable’s fields.

    In the image above, each row is a product (identified by EAN). The total_price combines the offer price and shipping. For instance, EAN 5702015865333 has a cheapest total price of 31.60 (25.00 offer + 6.60 shipping from seller Marktplaats), and so on. We’ll import such values into Channable.

  10. Finalize Import Mapping: After mapping api_ean and total_price to the chosen fields, save or finalize the import mapping. Channable will now incorporate this data.

At this point, Channable has imported the competitor pricing feed. We have effectively added a new field “CheapestPrice” to our product data which holds the lowest competitor price for each product (matched by EAN). Next, we need to ensure this data is merged correctly with our main product feed.

Step 4: Merge the Competitor Price Feed with Your Product Catalog (by EAN)

Now that both your own product data and the competitor price data are in Channable, we need to merge them based on the shared EAN. This ensures each product in Channable has an additional attribute for the competitor’s cheapest price. If you used the Combine imports function in the previous step and mapped the EAN correctly, this merge is essentially done. However, let’s verify and explain how it works:

  1. Unique Identifier (EAN): Channable uses a key field to match items across combined imports. In our case, the key is EAN. Because we mapped the competitor feed’s api_ean to the EAN field, those records will line up with any existing product in your main feed that has the same EAN. Make sure your main product feed also has the correct EANs for all items (it likely does, since you chose the EANs to scrape). If an EAN from the competitor feed exactly matches an EAN from your store feed, Channable will merge the data for that item.

  2. Merging Behavior: After the import, go to the “Items” (or “Products”) tab in Channable. This is the master list of all products after combining feeds. You should see that for each product, the new field CheapestPrice is now populated with a value (assuming the competitor feed had an entry for that EAN). For example, your product “LEGO 21034” with EAN 5702015865333 will have an extra field CheapestPrice = 31.60 (as per our sample data above). All other fields (title, your price, etc.) come from your main feed.

  3. Check for Missing Matches: If some products do not have a CheapestPrice filled in, it could be:

    • The competitor feed didn’t have that EAN (perhaps no competitor offer found or a mismatch in EAN). In such case, that product’s CheapestPrice might be blank or the item might not have merged. (If the competitor feed included an EAN that wasn’t in your main feed, Channable might list it as a separate product with only EAN and CheapestPrice, depending on settings.)

    • Double-check that the EAN is exactly the same in both feeds (no formatting differences). If needed, correct any discrepancies (e.g., remove any dashes/spaces in EANs).

    • By default, Channable will add new items for entries present in the second feed but not in the main feed (this is part of combining imports). If you see items that are only in the competitor feed and not actually in your product catalog, you can choose to ignore or exclude those later. Ideally, your ShoppingScraper task was set up only for EANs you sell, so this shouldn’t be a big issue.

  4. Confirm Merge Success: The end goal is that each of your products in Channable now has a field for the competitor’s lowest price. For example, if your product’s own price is €50 and the cheapest competitor price we imported is €45, you’ll have something like:

    • EAN: 1234567890123

    • Title: Your Product Name

    • Price: 50.00 (your price)

    • CheapestPrice: 45.00 (competitor’s lowest price)

    • (plus other fields like brand, etc.)

    Seeing this in the items list confirms the merge. You have effectively enriched your product data with competitor pricing.

    Technical note: Channable’s “Combine imports” feature automatically merges on the key field (EAN, in this case). We didn’t have to explicitly tell it “match on EAN” because mapping the same EAN field in both feeds accomplishes that. Just ensure the EAN field was correctly mapped in both imports. If needed, Channable’s documentation on combining imports suggests using a unique identifier common to both feeds – EAN is perfect for thissemetis.com.

Now that the data is combined, we can use Channable’s rules to act on it. Next, we’ll set up rules to pause advertising for products that are too expensive relative to the competition.

Step 5: Create Channable Rules to Pause Overpriced Products (and Resume When Competitive)

With the competitor price (CheapestPrice) available for each product, we can set up automated rules in Channable’s rule engine to control our ads. The strategy is: if our product’s price is considerably higher than the cheapest competitor price (for example, more than 15% higher), then pause or exclude that product from our advertising channel. Conversely, when our price is within that threshold again, the product can be advertised normally. Here’s how to implement this:

  1. Go to the Rules section: In your Channable project, navigate to the Rules for the channel where you want to manage your ads. For instance, if you are running Google Shopping ads via a Channable feed to Google Merchant Center, open your Google Shopping feed in Channable and click on its Rules tab. (If you are using Channable to create text ads, you would go to the Ad generation rules, but for feed-based ads like Shopping, use the feed’s rules.)

  2. Create a New Rule: Click “Add new rule”. Give the rule a clear name, such as “Exclude Overpriced Items” or “Pause expensive products”. This will help you remember what it does.

  3. Set the Condition – Price Comparison: We’ll define a condition that checks if your price is >15% higher than the competitor’s price. There are two ways to do this in Channable:

    • Direct Condition (if supported): Some rule builders allow comparing two fields with a mathematical operator. Ideally, we want: IF Our_Price > CheapestPrice * 1.15 THEN … However, Channable’s interface typically doesn’t allow an arithmetic expression on the right side directly. So, we might use a helper field as described next.

    • Using a Calculation (recommended): Use Channable’s Calculate rule function to compute a threshold price, then compare. For example:

      • Add an action in the rule: Calculate a new field. Let’s call it priceThreshold. Set it to CheapestPrice x 1.15 (i.e., CheapestPrice multiplied by 1.15). This will create a field that is “15% higher than the competitor’s price”.

      • Now add a condition in the rule: IF Price greater than priceThreshold then exclude. (Here, Price refers to your product’s own price field; it might be called “price” or “selling_price” depending on your import mapping. Use the field that represents the current price you are advertising).

      • Essentially, this two-part rule first calculates the competitor price plus 15%, and then checks if your price exceeds that.

    Alternatively, you could split this into two separate rules (one rule purely to calculate the threshold field, and a second rule to do the exclusion condition). But it’s often convenient to do within one rule if the interface allows multiple actions: first a Calculate action, then an Exclude action under the same rule with the appropriate condition.

  4. Add the Action – Exclude/Pause the Item: In the rule actions, choose the option to “Exclude item” (this might appear as “Then exclude item from export” or similar). This means any product meeting the condition will be removed from the feed output (thus effectively pausing its ads). If you are using a text ads generation in Channable, the equivalent action could be setting an ad status to paused, but for feed exports like Shopping, excluding the item from the feed will prevent it from being advertised.

  5. (Optional) Additional Condition – Ensure Competitor Price Exists: You may want to add a secondary condition to avoid false positives, for example: AND CheapestPrice is filled (not empty). This ensures you only exclude when you actually have competitor data. If for some reason a product had no competitor info, you might not want to automatically exclude it. However, if all your items have competitor data, this may not be necessary. It’s just a safeguard.

  6. Save the Rule: Save and activate this rule. Position it appropriately in the rule order (if you have multiple rules, rules are applied sequentially). Typically, you’d place this exclusion rule towards the end of your ruleset for that channel, after any enrichment rules, but before finalizing.

  7. Verify with an Example: It’s good to test if the rule works as expected. Channable usually shows how many items are affected by a rule. For instance, suppose:

    • Your price = €100, Competitor cheapest = €80. Competitor +15% = €92. Is 100 > 92? Yes, so that item will be excluded (paused) by the rule.

    • Your price = €85, Competitor cheapest = €80. Competitor +15% = €92. Is 85 > 92? No, so that item stays active (it will be included in the feed).

    • Your price = €80, Competitor cheapest = €80. 15% threshold = €92. 80 > 92? No, active.

    • Your price = €95, Competitor cheapest = €80. 15% threshold = €92. 95 > 92? Yes, exclude.

    Check a couple of products in the Preview or Items view of the channel after applying rules: those that exceed the threshold should now be marked as excluded. If something looks off, adjust the rule or ensure the correct fields are referenced.

  8. Adjust the Threshold if Needed: We chose 15% as an example threshold for “significantly higher price.” This percentage can be tuned to your business needs:

    • A lower percentage (e.g., 5% or 10%) will make the rule more aggressive, pausing ads even if your price is only slightly above the competitor. This might be useful in very price-sensitive markets or if your margins are thin.

    • A higher percentage (e.g., 20% or 30%) will make it less sensitive, only pausing ads when you are much more expensive. If you have reasons to allow a higher price (e.g., you offer better service, or the product is unique in some way), you might set a higher threshold.

    • Why 15%? Many advertisers find that if they are more than ~10-15% above the lowest market price, their conversion rate drops and ad spend is wasted, so they pause those products. 15% is a reasonable starting point that filters out clearly uncompetitive offers while not overreacting to very small price differences. You should choose a threshold that aligns with your profit margins and competitiveness goals.

    • You can always revisit this rule and adjust the percentage if you find too many or too few products are being paused.

  9. Automatic Re-enabling: The beauty of this dynamic rule setup is that it works both ways automatically. When your price drops back within the threshold or the competitor prices rise such that you are no longer 15% above them, the condition will no longer be true, and Channable will stop excluding that item. In other words, the next time your data is updated:

    • If your product is now competitively priced (or the cheapestPrice field has changed in your favor), the rule will not exclude it, and the product will flow through to your feed again, effectively re-enabling your ads for that item.

    • There’s no separate “unpause” action needed; it’s all handled by the condition. Just make sure the rule remains active so it continuously evaluates on each feed update.

    • For example, say you lowered your price or a competitor went out of stock making your price the lowest. Then your price might be below or just equal to the new cheapest price. The rule sees that Price > 1.15 * CheapestPrice is false, so it does not exclude the item anymore — thus that item will appear in your Google Shopping feed on the next export, resuming its ads.

  10. Feed/Ads Sync: Ensure that Channable is updating and pushing the feed to your advertising channel regularly. By default, Channable imports data once a day (helpcenter.channable.com), but you can increase this frequency in the schedule settings if needed (for example, if your ShoppingScraper task runs multiple times per day, you might want Channable to import that feed multiple times per day as well, so the rules react quickly). Also, your Google Merchant Center fetch schedule for the feed should be frequent enough (or use Channable’s API sync if applicable) to catch these changes in a timely manner.

By completing Step 5, you have set up an automated rule-based system in Channable: whenever a product’s price is much higher than the market’s lowest price, that product will be automatically filtered out from your ads, saving you from overspending on unlikely conversions. And when the price discrepancy is resolved, the product can be advertised again without manual intervention.


Conclusion & Additional Tips

You now have a robust system that ties together competitor price monitoring and your advertising feed management:

  • ShoppingScraper continuously gathers the latest competitor prices for your products (via Google Shopping data) at the schedule you defined (daily or more frequently).

  • The Cheapest Offers XLSX feed from ShoppingScraper provides a always-up-to-date dataset of the lowest competitor prices for each product (by EAN).

  • Channable imports this data and merges it with your product feed, adding the competitor’s lowest price as a field for each item.

  • Channable’s rule engine then uses that data to make smart decisions – in our case, automatically pausing ads for overpriced products and re-enabling them when they become price-competitive. This helps prevent wasting ad budget on products that customers are less likely to buy (because they can find much cheaper alternatives), and it alerts you to items that might need a price adjustment if you want to stay competitive.

Field examples recap: We mapped the feed field api_eanEAN to match products, and total_priceCheapestPrice to store the competitor’s price. In the rule, we compared our Price (e.g., a field from main feed) to CheapestPrice (from competitor feed). We used a 15% margin threshold in the condition (Price > 1.15 × CheapestPrice) as the trigger to exclude the item.

Why use this strategy? By integrating these tools, you gain a near real-time overview of how your prices stack up against the competition. This can inform not only your advertising (where we chose to pause uncompetitive offers) but also your pricing strategy. For example, if you consistently see certain products getting excluded for being 15% higher than the competition, you might decide to lower your prices or run promotions for those items. Conversely, if you’re often the cheapest, you know you have pricing power or could even potentially increase margin. The rules can be adjusted to different thresholds or even other actions (e.g., flag items, set custom labels for high-price items, etc., instead of excluding, if you prefer a softer approach).

Maintenance: Make sure the ShoppingScraper task and Channable feed import remain active. Over time, you can add new EANs to the scraping task if you introduce new products (and update the feed in Channable accordingly). Also periodically review the rule outcomes – you might find a need to tweak the threshold or add exceptions (for instance, maybe you don’t want to pause ads for products that are unique or premium where price comparison is less relevant).

By following this guide, even a user unfamiliar with ShoppingScraper or Channable should be able to set up an automated price monitoring and ad optimization system step by step. You’ll be effectively using data to drive smart advertising decisions, ensuring you’re competitive in the market without manually checking prices or turning ads on and off. Good luck, and happy optimizing!