+
+### Query params
+
+#### `url` (required)
+
+ - Supports `https://` and `http://` protocols.
+ - If a protocol isn’t found, `http://` is prepended.
+ - e.g. `https://web.scraper.workers.dev/?url=example.com&selector=p`
+
+#### `selector` (required)
+
+ - Supports the same set of CSS selectors as Cloudflare Workers' [`HTMLRewriter` class](https://developers.cloudflare.com/workers/reference/apis/html-rewriter/#selectors)
+ - As of Oct 10, 2019, this includes:
+ - `*` – any element
+ - `E` – any element of type E
+ - `E:not(s)` – an E element that does not match either compound selector s
+ - `E.warning` – an E element belonging to the class warning
+ - `E#myid` – an E element with ID equal to myid.
+ - `E[foo]` – an E element with a foo attribute
+ - `E[foo="bar"]` – an E element whose foo attribute value is exactly equal to bar
+ - `E[foo="bar" i]` – an E element whose foo attribute value is exactly equal to any (ASCII-range) case-permutation of bar
+ - `E[foo="bar" s]` – an E element whose foo attribute value is exactly and case-sensitively equal to bar
+ - `E[foo~="bar"]` – an E element whose foo attribute value is a list of whitespace-separated values, one of which is exactly equal to bar
+ - `E[foo^="bar"]` – an E element whose foo attribute value begins exactly with the string bar
+ - `E[foo$="bar"]` – an E element whose foo attribute value ends exactly with the string bar
+ - `E[foo*="bar"]` – an E element whose foo attribute value contains the substring bar
+ - `E[foo|="en"]` – an E element whose foo attribute value is a hyphen-separated list of values beginning with en
+ - `E F` – an F element descendant of an E element
+ - `E > F` – an F element child of an E element
+ - Supports multiple selectors delimited with a comma.
+
+#### `pretty` (optional)
+
+ - When `false` or not included, JSON is minified.
+ - When `true`, formats the JSON using `JSON.stringify(json, null, 2)`.
+
+#### `spaced` (optional)
+
+ - When `false` or not included, the text nodes of children of the nodes matching selector will be concatenated just as they are.
+ - When `true`, a single space character is added between the end tag of a child.
+
+##### Examples
+
+Consider the following DOM structure:
+
+```
This is the first paragraph.
This is another paragraph.
```
+
+If the `selector` is set to match `div`, by default the resulting text will be:
+
+```This is the first paragraph.This is another paragraph.```
+
+This is because there is no space character between `
` and `
`.
+
+With `spaced` set to `true`, the result is:
+
+```This is the first paragraph.This is another paragraph.```
+
+## Author
+
+Web Scraper was created by [Adam Schwartz](https://adamschwartz.co).
diff --git a/html.js b/html.js
new file mode 100644
index 0000000..e50df9b
--- /dev/null
+++ b/html.js
@@ -0,0 +1,432 @@
+export default `
+
+
Web Scraper makes it effortless to scrape websites. You provide a URL and selector and it will return you JSON containing the text contents of the matching elements.