diff --git a/src/doc/cfood-schema.yml b/src/doc/cfood-schema.yml
new file mode 120000
index 0000000000000000000000000000000000000000..c34280ed44cdd07eccb20e314e08a60c899dfe8a
--- /dev/null
+++ b/src/doc/cfood-schema.yml
@@ -0,0 +1 @@
+../caoscrawler/cfood-schema.yml
\ No newline at end of file
diff --git a/src/doc/cfood-specification.rst b/src/doc/cfood-specification.rst
new file mode 100644
index 0000000000000000000000000000000000000000..89588b2da9e4bb828eba05cc353dedb3abd6c821
--- /dev/null
+++ b/src/doc/cfood-specification.rst
@@ -0,0 +1,10 @@
+CFood-Specification
+(((((((((((((((((((
+
+
+CFoods are defined using a YAML find that has to abide by the following 
+specification. The specifiacition  is defined using a JSON schema (see
+`src/caoscrawler/cfood-schema.yml`). A CFood is basically composed of converter
+definitions. A converter definition must have the following structure:
+
+.. jsonschema:: cfood-schema.yml#/cfood/$defs/converter
diff --git a/src/doc/conf.py b/src/doc/conf.py
index 6583364e3e108cf6c5d14566d91cf7ff9bd289b3..2a783dec27a700f9d350a2b46cdd647ff0fccf2f 100644
--- a/src/doc/conf.py
+++ b/src/doc/conf.py
@@ -56,6 +56,8 @@ extensions = [
     "sphinx.ext.todo",
     "recommonmark",            # For markdown files.
     "sphinx_rtd_theme",
+    'sphinx.ext.autodoc',
+    'sphinx-jsonschema',
 ]
 
 # Add any paths that contain templates here, relative to this directory.
diff --git a/src/doc/index.rst b/src/doc/index.rst
index a72389b1f4b94430b2c5ff2bfee9757193327ed7..fdb99d4d9a6cb8bf6972d7ee22489f362436bb90 100644
--- a/src/doc/index.rst
+++ b/src/doc/index.rst
@@ -12,6 +12,7 @@ CaosDB-Crawler Documentation
    Concepts<concepts>
    Converters<converters/index>
    CFoods (Crawler Definitions)<cfood>
+   CFood-Specification<cfood-specification>
    Macros<macros>
    How to upgrade<how-to-upgrade>
    API documentation<_apidoc/modules>