Broker API HubMenu

ib_async vs ib_insync: which one is maintained, and which is archived

The most starred Interactive Brokers Python library, ib_insync, is archived and has not been pushed since 14 Mar 2024, and it is still the one most people install: 617,422 (read 2 October 2026) installs of the archived package on the pypistats.org /recent last_month counter, against 556,555 of the maintained continuation, ib_async, on its own reading of 23 Sep 2026. The two dates do not match, so no gap and no ratio between them is published. Here is how the two differ, what changes when you move, and the cost of the maintained package, each with its source.

Independent and unofficialLast reviewed

Risk warning: CFDs and spread bets are complex instruments and come with a high risk of losing money rapidly due to leverage. You can lose money on these products, and each provider publishes its own loss figure under FCA rules. You should consider whether you understand how they work and whether you can afford to take the high risk of losing your money. Automated and API trading can amplify losses through bugs, connectivity failures and runaway orders.

Carried over from an earlier version of this site. The links below are the sources it was written from, but its statements have not been re-read at source since the date shown, so check anything you rely on.

Correction, 24 Sep 2026: earlier readings on this page recorded the repository owner as ib-async. The repository owner is ib-api-reloaded (github.com/ib-api-reloaded/ib_async); ib-api-reloaded/ib_async and ib-api-reloaded/ib_async are not the maintained project. That earlier reading is withdrawn.

This site's current star count and push date reading for ib_async is published on Which broker API do developers actually use, read 24 Sep 2026. The table below is not re-read against that page on every visit, so treat the figures on this page as the comparison's shape, and the demand page as the current numbers.

The short answer

ib_async is the maintained one. The package that comes top of most searches, ib_insync, is archived, read only and has not been pushed since 14 Mar 2024. ib_async is the same codebase continued by a new organisation, and it is the one receiving pushes.

pip install ib_async

The download figures: what people install, against what is maintained

The archived ib_insync took 617,422 (read 2 October 2026) downloads in the rolling 30 days to that date, superseding the 640,258 read on 23 Sep 2026, while the maintained successor ib_async was last read on 23 Sep 2026 at 556,555. The two were read on different dates, so no ratio between them is given.

PackageDownloadsStateCounterWindowRead
ib_insync640,258 (superseded, read 23 September 2026; 617,422 on 2 October 2026)archivedpypistats.org /recent last_month counterone rolling 30 day window23 Sep 2026
ib_async556,555maintainedpypistats.org /recent last_month counterone rolling 30 day window23 Sep 2026

Both figures come from the 23 Sep 2026 reading, the same counter and the same rolling window. The earlier 755,366 (superseded, read 20 September 2026; 617,422 on 2 October 2026) reading of 20 Sep 2026 is kept in the corrections record below rather than on this chart, so the chart, the table and the quotable line all state one reading. No download counter was read for this page in the latest reading: the next read is due on or after 27 Sep 2026, and a same day re-read produces a false flat rather than a measurement. The pepy.tech readings taken in the same pass are not published here, because pepy.tech is disallowed to automated fetching by its robots.txt, and no npm figure is published for either package.

What GitHub says on 20 Sep 2026

Stars are cumulative and never decay, which is why the archived library still outranks the one that replaced it. The star figures below are a separate reading from a separate counter, and they are not mixed with the download figures above in any ratio.

RepositoryStarsLast pushOpen issuesStateNote
erdewit/ib_insync3,28214 Mar 202419archivedArchived after the author's death. Read only, and not a place to start new work.
ib-api-reloaded/ib_async1,74219 Aug 202692maintainedThe community fork that inherited the codebase. Maintained, with a large issue backlog.

Lift it as it stands. It carries the claim, both figures, the counter, the window, the date of the reading, this site's name and the address of this page. This site is independent and is not affiliated with Interactive Brokers or with either library.

The three libraries, as GitHub reports them

RepositoryStarsLast pushOpen issuesStateNote
ib-api-reloaded/ib_asyncInstall this one.174219 Aug 202692MaintainedThe maintained continuation, pushed 19 Aug 2026. The repository owner is ib-api-reloaded. An earlier reading on this page recorded the owner as ib-async; that reading is withdrawn, corrected 24 Sep 2026.
erdewit/ib_insyncDo not start here.328214 Mar 202419ArchivedArchived by its owner and read only. Still the most starred, which is why newcomers land on it.
blampe/IbPyHistorical interest only.142419 Jan 201727ArchivedArchived and unpushed since January 2017, superseded twice over.

Star, push, archive and open issue figures on this page were read from api.github.com at 09:41:00Z to 10:05:00Z UTC on 20 Sep 2026. They are the values the API returned at that instant, a single reading rather than a rate, and nothing on this page is carried forward from an earlier reading.

Source: Public GitHub API checked 20 Sep 2026

Why the wrong one ranks first

Stars are cumulative and never decay. ib_insync collected 3,282 of them over seven years and keeps them after archiving, so it outranks its own successor, by about 1.15 to one on the 23 Sep 2026 reading. Downloads say the same thing about what people do next: 617,422 (read 2 October 2026) installs of the archived package, against 556,555 of the maintained one on its own earlier reading over the rolling 30 days to 20 Sep 2026, taken between 03:40:09Z and 03:50:30Z UTC. The two are not a matched pair, so no gap between them is given here. Both come from the pypistats.org /recent last_month counter, and the 640,258 reading of the archived package, taken 23 September 2026, is superseded and keeps that date. No pepy.tech figure is published anywhere on this page, because pepy.tech is disallowed to automated fetching by its robots.txt, checked 20 Sep 2026. The two are never mixed in one ratio.

Source: Public GitHub API checked 20 Sep 2026

What people actually install

The deprecated ib_insync was downloaded 617,422 (read 2 October 2026) times over the rolling 30 days to that date. The maintained successor ib_async was last read on 23 Sep 2026, at 556,555 over its own rolling 30 days. The two packages were last read on different dates, so no gap, no ratio and no percentage between them is published here: pypistats.org returned HTTP 429 on three attempts for ib-async on 2 Oct 2026, so there is no matched pair, and the comparison returns when both are read on one date. The earlier ib_insync reading of 640,258, taken 23 September 2026, is superseded and keeps that date. Both figures come from the pypistats.org /recent last_month counter and each carries the date it was read. ib_insync has been archived since March 2024, so a large share of Interactive Brokers users in Python are still installing dead code, much of it through projects that pin it.

  1. ib-insyncInteractive Brokers, community, archived 14 Mar 2024617,422 (read 2 October 2026) supersedes 640,258, read 23 Sep 2026pypistats.org pypistats.org /recent last_month, a rolling 30 days, read 2 Oct 2026. The 23 Sep 2026 reading of 640,258 is superseded and keeps that date.
  2. ib-asyncInteractive Brokers, the maintained successor556,555pypistats.org pypistats.org /recent last_month, a rolling 30 days, read 23 Sep 2026.
  3. ibindInteractive Brokers, the modern Web API clientWithdrawnReading withdrawn Withdrawn. The figure published here was read from pepy.tech, which is disallowed to automated fetching by its robots.txt, so it cannot stand as a source. pypistats.org has no reading for this package on 20 Sep 2026, so no figure replaces it.

The headline finding. Source: pypistats.org and pepy.tech, read 23 Sep 2026. ib_insync, archived by its author in March 2024, still out-downloads its own living successor ib_async, but the two were not read on one date, so the size of the difference is not published. ib_insync: 617,422 (read 2 October 2026). ib_async: 556,555, read 23 Sep 2026. The earlier ib_insync reading of 640,258, taken 23 September 2026, is superseded and keeps that date. No gap, ratio or percentage is computed from an unmatched pair, and pypistats.org returned HTTP 429 on three attempts for ib-async on 2 Oct 2026, so there is no matched pair to compute from yet. Both figures come from the pypistats.org /recent last_month counter. Two and a half years after the handover, most Interactive Brokers users in Python are still installing dead code, and part of why is that the successor's own README never says the old package is deprecated. Moving is small: pip uninstall ib_insync, pip install ib_async, then change the import, because the class and method names are kept. What these counters are worth. They count continuous integration mirrors and automated pulls as well as people, and two of these figures are demonstrably dominated by automated traffic rather than merely coloured by it. On npm, @stoqey/ib records 540,546 installs a month against 331 stars on GitHub, while the comparable Node client pilwon/node-ib records 1,921 installs against 395 stars: two similar clients for the same API, star counts of the same order, and a ratio between the install figures of about 281 to 1. On PyPI, ib-insync recorded 617,422 (read 2 October 2026) downloads a month for a package archived since March 2024. The earlier reading of 640,258, taken 23 September 2026, is superseded and keeps that date. The figures are published as read, because dropping a number for being awkward would be worse than printing what it is worth. No row here is a count of people and no row should be quoted on its own. Every figure in this table is one counter, the pypistats.org /recent last_month reading over a rolling 30 days, taken on 23 Sep 2026. The counter, the page it was read from and the day it was read are printed on the row rather than left to a footnote. pepy.tech is disallowed to automated fetching by its robots.txt, checked 23 Sep 2026, so every reading this site had taken from it is withdrawn rather than carried forward: capitalcom-python and alpaca-py have no figure on this page at all, and their rows say so. No number here is added to, divided by or averaged with a number from any other counter. capital-com-sdk-python is not in this table because it does not exist on PyPI, confirmed by an HTTP 404 on the project page on 23 Sep 2026.

Every wrapper we counted, ranked

What changes when you migrate

The move is mostly a rename. The site's existing migration guide has the full step list; these are the changes that catch people.

  1. The package name and every importInstall ib_async and change from ib_insync import to from ib_async import. The API shape, including IB().connect and util.startLoop for notebooks, is carried over.Sourceib_async README checked 18 Sep 2026
  2. The minimum Python versionib_async 2.1.0 requires Python 3.10 or later. ib_insync allowed Python 3.6, so an old environment may need rebuilding before the rename will even install.SourcePyPI: ib_async checked 18 Sep 2026
  3. Nothing else is guaranteedWe have not tested every call for behavioural differences between the two packages. Run your code against a paper account before you point it at a funded one.Sourceib_async README checked 18 Sep 2026
# pip install ib_async   (Python 3.10 or later)
# Before: from ib_insync import IB, util
from ib_async import IB, util

ib = IB()
# Paper ports: TWS 7497, IB Gateway 4002. readonly=True blocks every order call.
ib.connect("127.0.0.1", 7497, clientId=1, readonly=True)
print(ib.managedAccounts())
ib.disconnect()

Be fair about the 92 open issues

ib_async carries 92 open issues against ib_insync's 19, and that gap is easy to misread. ib_insync is archived, so its issue queue is frozen: nobody can file a new one. ib_async inherited a large user base along with the code, and an open issue queue is what a library with users and an active maintainer looks like. Read it as the cost of inheritance, not as a quality signal against the package. The figure worth weighing is the push date, and ib_async was pushed on 19 Aug 2026 while ib_insync was last pushed on 14 Mar 2024.

Source: Public GitHub API checked 20 Sep 2026

Where to go next

Sections