$npx skillfedfor your agent

MechanicalSoup

A Python library for automating interaction with websites

Worth itPyPI WWW/HTTPReleased May 2025165.0K downloads / moMITPure Python

Decision gist · record as of 2026-08-14

pure-Python wheel — mechanicalsoup-1.4.0-py3-none-any.whl
v1.4.0 · released 2025-05-30 · Python >=3.9 · 5 runtime deps: requests, beautifulsoup4, lxml, certifi, urllib3

Yes. MechanicalSoup is a solid choice for web automation and scraping when you need form submission and stateful interaction but don't require JavaScript execution. It has low install friction, active maintenance, no known vulnerabilities, and a permissive license. The five runtime dependencies are all widely used and stable. Install it if your target sites serve complete HTML and you want a lighter alternative to a full browser automation framework.AI-flagged interpretation of the facts on this page — verify before relying

Before you install

  • Requires Python 3.9 or later.
  • Does not handle JavaScript-rendered content; pages must be fully formed in the initial HTML response.
  • Low friction: pure Python wheel with five common runtime dependencies (requests, beautifulsoup4, lxml, certifi, urllib3).

License · maintenance · safety

MIT (permissive) — MIT license is permissive—you can use, modify, and distribute MechanicalSoup freely in commercial or private projects with minimal restrictions, only requiring attribution.

last release 2025-05-30 (441 days) · last repo commit 2026-08-04 · 4,888 stars

0 known vulnerabilities (OSV.dev, 2026-08-14) · 164,953 downloads/mo, #10,534 on PyPI

Verify before relying

pip install MechanicalSoup

import mechanicalsoup
browser = mechanicalsoup.StatefulBrowser()
browser.open("https://example.com")
browser.select_form()
browser["field"] = "value"
browser.submit_selected()
  • Performance characteristics with large-scale scraping or concurrent requests
  • Compatibility with modern anti-scraping techniques or rate-limiting headers
Same gist for agents: .md · .json

What it is and what it does

MechanicalSoup is a Python library that automates interaction with websites by wrapping Requests (for HTTP) and BeautifulSoup (for HTML parsing) into a stateful browser interface. It handles the tedious parts of web automation: managing cookies across requests, following redirects, selecting and filling HTML forms, and navigating links. The library maintains session state automatically, so you can interact with a website as if you were a user clicking through pages and submitting forms.

It's designed for straightforward web scraping and automation tasks where the content is server-rendered HTML—not for sites that rely heavily on JavaScript to generate or modify content. The API is simple and intuitive: open a URL, select a form by CSS selector, fill in fields like a dictionary, and submit. It's a modern Python 3 successor to the older Mechanize library, actively maintained by a small team and tested against both CPython and PyPy3.

Use it for

  • Scrape search results or product listings from websites by automating form submission and following result links
  • Automate login workflows and session-based data collection from sites requiring authentication
  • Extract data from multi-page forms or workflows where you need to fill fields, submit, and parse results across requests
  • Test web applications by simulating user interactions like form fills and navigation without a browser driver
  • Monitor or archive web content by periodically fetching and parsing pages that require form interaction

Worth the install?

AI-flagged interpretation of the facts on this page. Verify before relying on it.

Worth it

Yes.

MechanicalSoup is a solid choice for web automation and scraping when you need form submission and stateful interaction but don't require JavaScript execution. It has low install friction, active maintenance, no known vulnerabilities, and a permissive license. The five runtime dependencies are all widely used and stable. Install it if your target sites serve complete HTML and you want a lighter alternative to a full browser automation framework.

Install

mechanicalsoup on PyPI

Before you install

Low friction: pure Python wheel with five common runtime dependencies (requests, beautifulsoup4, lxml, certifi, urllib3). Active maintenance since 2017 with recent commits; last release 441 days ago suggests stable, infrequent updates rather than abandonment.

Requires Python 3.9 or later. Does not handle JavaScript-rendered content; pages must be fully formed in the initial HTML response.

License in practice

MIT license is permissive—you can use, modify, and distribute MechanicalSoup freely in commercial or private projects with minimal restrictions, only requiring attribution.

Quickstart

pip install MechanicalSoup

import mechanicalsoup
browser = mechanicalsoup.StatefulBrowser()
browser.open("https://example.com")
browser.select_form()
browser["field"] = "value"
browser.submit_selected()

Verify before relying

  • Performance characteristics with large-scale scraping or concurrent requests
  • Compatibility with modern anti-scraping techniques or rate-limiting headers

Package facts

LicenseMIT permissive
Python supportSupports the current Python release >=3.9
Install frictionLow. Pure-Python wheel
Runtime dependencies
5 packages
requestsbeautifulsoup4lxmlcertifiurllib3
MaintenanceActively maintained 441 days since the last release
Last repo commit
First released
Downloads164,953 / month, #10,534 on PyPI 30-day window, as of 2026-08-14
Known vulnerabilitiesNone known OSV.dev, checked 2026-08-14
Classifiers
License :: OSI Approved :: MIT LicenseProgramming Language :: Python :: 3Programming Language :: Python :: 3 :: OnlyProgramming Language :: Python :: 3.10Programming Language :: Python :: 3.11Programming Language :: Python :: 3.12Programming Language :: Python :: 3.13Programming Language :: Python :: 3.9

Evidence: mechanicalsoup-1.4.0-py3-none-any.whl

Tags

Capabilities
web scraping with form submissionautomated website interactioncookie and redirect handlingweb automation without javascripthtml form filling and submissionstateful web browser automationmechanize alternative python 3
Topics
web-scrapingform-automationhttp-client

Let your AI agent find packages like this

Example. Real query, live index.

You found this page by searching. An agent finds it by wishing: SkillFed indexes 14,416 PyPI packages by what they can do, searchable in plain language.

wish › “web scraping with form submission”

  • MechanicalSoupMechanicalSoup automates interaction with websites by handling HTTP…
  • mechanizeAutomate programmatic interaction with HTTP web servers by simulating…
  • browser-use-sdkPython SDK for controlling browsers programmatically through the…

Give your agent the search over MCP, or paste the wish link into any chat.

More WWW/HTTP packages

urllib3 Worth it
PyPI · Libraries · released May 2026

urllib3 is an HTTP client library that provides thread-safe connection pooling, SSL/TLS verification, multipart file uploads, request retries, compression support, and proxy handling for Python applications.

MITpure Python · 3.10+
1.8Bdownloads / mo
requests Worth it
PyPI · Libraries · released May 2026

Requests is a Python HTTP library that simplifies sending HTTP/1.1 requests with automatic handling of headers, authentication, cookies, and response parsing.

Apache-2.0pure Python · 3.10+
1.8Bdownloads / mo
h11 With conditions
PyPI · WWW/HTTP · released Apr 2025

h11 is a pure-Python HTTP/1.1 protocol implementation that handles parsing and serializing HTTP messages without any built-in I/O, letting you integrate it with any network layer you choose.

MITpure Python · 3.8+aging
894.9Mdownloads / mo
httpx Worth it
PyPI · WWW/HTTP · released Dec 2024

HTTPX is a fully featured HTTP client library for Python that provides both sync and async APIs, with support for HTTP/1.1 and HTTP/2, plus an integrated command-line client.

Install it if you are building new projects or modernizing existing ones that rely on HTTP.

BSD-3-Clausepure Python · 3.8+
797.0Mdownloads / mo
httpcore With conditions
PyPI · WWW/HTTP · released Apr 2025

A minimal low-level HTTP client library that sends HTTP requests with thread-safe and task-safe connection pooling, supporting HTTP/1.1, HTTP/2, proxies, and both sync and async interfaces.

BSD-3-Clausepure Python · 3.8+aging
783.6Mdownloads / mo
aiohttp Worth it
PyPI · WWW/HTTP · released Jul 2026

aiohttp is an async HTTP client and server framework built on asyncio, supporting both WebSockets and middleware-based routing for building concurrent web applications.

Install it if you need async HTTP client or server capabilities in asyncio-based applications.

permissive licensecompiled wheel · 3.10+
643.6Mdownloads / mo

See also mechanize · browser-cookie3 · shot-scraper · zope.testbrowser · Scrapy · beautifulsoup4 · pycookiecheat · requestium · cookies · BeautifulSoup