Use html_form() to extract a form, set values with html_form_set(), and submit it with html_form_submit().

html_form(x, base_url = NULL)

html_form_set(form, ...)

html_form_submit(form, submit = NULL)



A document (from read_html()), node set (from html_elements()), node (from html_element()), or session (from session()).


Base url of underlying HTML document. The default, NULL, uses the url of the HTML document underlying x.


A form


<dynamic-dots> Name-value pairs giving fields to modify.

Provide a character vector to set multiple checkboxes in a set or select multiple values from a multi-select.


Which button should be used to submit the form?

  • NULL, the default, uses the first button.

  • A string selects a button by its name.

  • A number selects a button using its relative position.


  • html_form() returns as S3 object with class rvest_form when applied to a single element. It returns a list of rvest_form objects when applied to multiple elements or a document.

  • html_form_set() returns an rvest_form object.

  • html_form_submit() submits the form, returning an httr response which can be parsed with read_html().

See also


html <- read_html("") search <- html_form(html)[[1]] search <- search %>% html_form_set(q = "My little pony", hl = "fr")
#> Warning: Setting value of hidden field 'hl'.
# Or if you have a list of values, use !!! vals <- list(q = "web scraping", hl = "en") search <- search %>% html_form_set(!!!vals)
#> Warning: Setting value of hidden field 'hl'.
# To submit and get result: if (FALSE) { resp <- html_form_submit(search) read_html(resp) }