Determining VAT rate by commodity code API

Dear All,

I would like to determine what is the applicable VAT rate on a given commodity, over time.

From what I could gather from here and my own searches, it seems that there are 3 VAT codes corresponding to the standard, reduced and zero rates (VTS, VTA, VTZ), it that correct?

The general procedure I had in mind is the following:

  1. browse over all commodities using url, where COMMODITYCODE is the code for a given commodity

  2. look for the terms VTS, VTA, VTZ in the importing block of the JSON

I would like to know

  1. if you think this is a valid procedure
  2. whether there is a way to obtain the list of commodity codes to loop over
  3. if there is a way to access older vintages, i.e. VAT rates over time for a given commodity.

Thank you very much for your kind attention and help,
Best wishes

Hello Bussy,

We are in the process of putting together an official API, with documentation and a stable URL. That said, your approach is ok.

Unfortunately, not at the moment, but we will take this on board for when we release the API.

For now, if you want to traverse back in time you can set the following parameters day=1&month=2&year=2019


Dear Matt,

this is very helpful! I wrote a code that uses a slightly different strategy and it worked well, I can share if you are interested.

The one thing I was not able to do is go back in time, because I have not managed to get the older pages (set with the date day=1&month=2&year=2019) in json. Do you know how the url should look like to access the older data in JSON?

In any case, thank you very much,

Hi Bussy,

The following URL would be an example:

Hi Matt,

many thanks for your reply. I believe that the JSON file does not change when the date is set in the past. An example is that in the following URLs:


The VAT is 20% in the JSON in both cases, whereas it is 17% in 2010 (on the webpage).

Do you have a sense of how I can deal with this?
In any case, many thanks for your prompt answers.
Best wishes,

Hi Adrien,

Ah it look’s like the cache is ignoring these parameters. Once we launch the public API it should work.

Kind regards,