diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,12 @@
 Changelog
 =========
 
+3.0.2
+-----
+
+- Expose internal parsers so that they could be used in other parser programs
+  that parse version numbers in larger files.
+
 3.0.0
 -----
 - Updated for `megaparsec-5` and `ghc-8`
diff --git a/Data/Versions.hs b/Data/Versions.hs
--- a/Data/Versions.hs
+++ b/Data/Versions.hs
@@ -53,6 +53,10 @@
     , semverP
     , versionP
     , messP
+      -- ** Megaparsec Parsers
+    , semver'
+    , version'
+    , mess'
       -- * Pretty Printing
     , prettyV
     , prettySemVer
@@ -329,10 +333,11 @@
 
 -- | Parse a (Ideal) Semantic Version.
 semver :: Text -> Either ParsingError SemVer
-semver = parse semanticVersion "Semantic Version"
+semver = parse (semver' <* eof) "Semantic Version"
 
-semanticVersion :: Parser SemVer
-semanticVersion = p <* eof
+-- | Internal megaparsec parser of 'semverP'.
+semver' :: Parser SemVer
+semver' = p
   where p = SemVer <$> major <*> minor <*> patch <*> preRel <*> metaData
 
 -- | Parse a group of digits, which can't be lead by a 0, unless it is 0.
@@ -370,10 +375,11 @@
 
 -- | Parse a (General) `Version`, as defined above.
 version :: Text -> Either ParsingError Version
-version = parse versionNum "Version"
+version = parse (version' <* eof) "Version"
 
-versionNum :: Parser Version
-versionNum = Version <$> chunks <*> preRel <* eof
+-- | Internal megaparsec parser of 'versionP'.
+version' :: Parser Version
+version' = Version <$> chunks <*> preRel
 
 -- | A wrapped `Mess` parser. Can be composed with other parsers.
 messP :: VParser
@@ -381,16 +387,17 @@
 
 -- | Parse a (Complex) `Mess`, as defined above.
 mess :: Text -> Either ParsingError Mess
-mess = parse messNumber "Mess"
+mess = parse (mess' <* eof) "Mess"
 
-messNumber :: Parser Mess
-messNumber = try node <|> leaf
+-- | Internal megaparsec parser of 'messP'.
+mess' :: Parser Mess
+mess' = try node <|> leaf
 
 leaf :: Parser Mess
-leaf = VLeaf <$> tchunks <* eof
+leaf = VLeaf <$> tchunks
 
 node :: Parser Mess
-node = VNode <$> tchunks <*> sep <*> messNumber
+node = VNode <$> tchunks <*> sep <*> mess'
 
 tchunks :: Parser [Text]
 tchunks = (pack <$> some (letterChar <|> digitChar)) `sepBy` char '.'
diff --git a/versions.cabal b/versions.cabal
--- a/versions.cabal
+++ b/versions.cabal
@@ -3,7 +3,7 @@
 -- see: https://github.com/sol/hpack
 
 name:           versions
-version:        3.0.1.1
+version:        3.0.2
 synopsis:       Types and parsers for software version numbers.
 description:    A library for parsing and comparing software version numbers.
                 We like to give version numbers to our software in a myriad of
