I found a way to restore terracotta tiles in my porch area which were stained with water marks and grime.
Clean them with soap and water, rinse and leave them to dry. Then pour on raw linseed oil and spread it genorously with a paint brush. leave to dry overnight. It worked really well on my tiles.