Skip to content

For providers

Publish your offers as a file in this format. Our monthly check, being set up now, will look for it at that address and in your llms.txt.

What to publish

A file with your current offers, at any stable address: CSV or JSON with the fields below, or the same facts as schema.org markup on your own offer pages. Put it at /.well-known/meconomy-offers.json on your site, or link it from your llms.txt. That is the address and format meconomy.ch will read.

There is no obligation, no link in return and no payment. A provider that publishes no file is read from its public pages as before (MEconomyBot). A data API is planned, see /about/api.

The fields

One row or object per offer. CSV: UTF-8, comma-separated, one header row with these names. Dates are ISO 8601. Only offer_id, name, price_regular, currency and url are needed. Leave any other field empty when it does not apply or you do not state it; we then show “not stated”, never a guess.

Fields of the offer feed
FieldTypeMeaning
offer_idtextYour own identifier of the offer. It stays the same for as long as the offer exists.
nametextThe offer’s name as you write it.
categorytextWhat it is, for example mobile, internet, tv, phone, bank_account or credit_card.
price_regularnumberThe price per billing period with no promotion, with a point as the decimal mark.
price_promonumberThe promotional price per billing period. Empty when there is no promotion.
promo_valid_fromdateFirst day of the promotion, as 2026-11-01.
promo_valid_untildateLast day of the promotion, as 2026-12-31.
promo_conditionstextWhat the promotion requires, for example “new customers only”.
price_after_promonumberThe price per billing period once the promotion has ended.
min_term_monthswhole numberThe minimum contract term in months. 0 when there is none.
setup_feenumberThe one-off fee at the start. 0 when there is none.
billing_periodtextmonth or year: the period the prices above are for.
currencytextThe ISO 4217 code, for example CHF.
urladdressThe public page of the offer on your site.
last_modifieddate and timeWhen this row last changed, as 2026-10-26T08:00:00+01:00.

JSON example

An invented offer, to show the shape. A JSON file holds an offers list.

{
  "offers": [
    {
      "offer_id": "example-mobile-m",
      "name": "Example Mobile M",
      "category": "mobile",
      "price_regular": 39.9,
      "price_promo": 29.9,
      "promo_valid_from": "2026-11-01",
      "promo_valid_until": "2026-12-31",
      "promo_conditions": "New customers only",
      "price_after_promo": 39.9,
      "min_term_months": 0,
      "setup_fee": 0,
      "billing_period": "month",
      "currency": "CHF",
      "url": "https://www.example.ch/mobile/m",
      "last_modified": "2026-10-26T08:00:00+01:00"
    }
  ]
}

Or schema.org markup on your offer pages

If your offer pages already carry schema.org Product and Offer markup, that is read in the same way. Give the promotional price with priceValidUntil, and the price after the promotion as a second UnitPriceSpecification that starts the day after. The markup must be in the HTML your server sends, not added later by a script.

{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Example Mobile M",
  "sku": "example-mobile-m",
  "offers": {
    "@type": "Offer",
    "url": "https://www.example.ch/mobile/m",
    "price": "29.90",
    "priceCurrency": "CHF",
    "priceValidUntil": "2026-12-31",
    "priceSpecification": [
      {
        "@type": "UnitPriceSpecification",
        "price": "29.90",
        "priceCurrency": "CHF",
        "unitCode": "MON",
        "validThrough": "2026-12-31"
      },
      {
        "@type": "UnitPriceSpecification",
        "price": "39.90",
        "priceCurrency": "CHF",
        "unitCode": "MON",
        "validFrom": "2027-01-01"
      }
    ]
  }
}

How we will read it

  • Once our monthly check is running (it is being set up now), we look for the file at that address, and in your llms.txt, once a month on every site we read. A file we find is checked against the fields above; until the automatic reader is live, a person sets up its reading.
  • We will fetch the file at most once an hour, and ask with If-Modified-Since, so an unchanged file costs you one short answer.
  • A feed will be read like a page. We keep its address, the time we read it and a fingerprint of the file, and a price from a feed is shown with the same source and date as any other price.
  • Our checks will apply to it as to any price: a figure that looks wrong is held back until a person has looked.
  • We will name ourselves when we fetch it, with the user agent MEconomyBot/1.0 (+https://meconomy.ch/about/bot).

To stop, or to ask something

Once the reader is live, removing the file ends the reading. For anything else write to hello@meconomy.ch or use the contact page.