diff --git a/lib/extract.js b/lib/extract.js
index <HASH>..<HASH> 100644
--- a/lib/extract.js
+++ b/lib/extract.js
@@ -26,12 +26,20 @@ function extract(html, model, options = {}) {
   const parserOptions = Object.assign({}, HTMLPARSER2_OPTIONS, options.htmlparser2)
   const handlerOptions = Object.assign({}, DOMHANDLER_OPTIONS, options.domhandler)
 
+  let deserializedModel
+
+  try {
+    deserializedModel = JSON.parse(JSON.stringify(model))
+  } catch (error) {
+    throw new ModelError(`The model cannot be serialized; ${error.message}`)
+  }
+
   const handler = new DomHandler(handlerOptions)
   const parser = new Parser(handler, parserOptions)
 
   parser.end(html)
 
-  return getItem(handler.dom, model)
+  return getItem(handler.dom, deserializedModel)
 }
 
 /**
Ensure the model is JSON-serializable