You are not permitted to download, save or email this image. Visit image gallery to purchase the image.
The centre-left Liberal government of Prime Minister Justin Trudeau acted after prominent right-leaning politicians complained that Ottawa had not done enough to combat a third wave of infections ripping through Canada.
The ban, which takes effect at 11.30pm on Thursday (local time), does not affect cargo flights.
India on Thursday recorded the world's highest daily tally of 314,835 Covid-19 infections amid fears about the ability of crumbling health services to cope.
Canadian Health Minister Patty Hajdu said that while Indian citizens accounted for 20% of all international arrivals, they represented over 50% of the positive tests conducted by Canadian airport officials.
"By eliminating direct travel from these countries, public health experts will have the time to evaluate the ongoing epidemiology of that region and to reassess the situation," she told a news conference.
The conservative premiers of Ontario and Quebec - the most populous of Canada's 10 provinces - wrote to Trudeau earlier on Thursday urging him to crack down on international travel.
Transport Minister Omar Alghabra said Canada would not hesitate to bar flights from other nations if needed.
Britain said earlier that India would be added to its "red-list" of locations from which most travel is banned due to a high number of Covid-19 cases.
On April 8, New Zealand temporarily suspended entry for all travellers from India, including its own citizens, for about two weeks following a high number of positive cases arriving from the South Asian country. It's the first time that New Zealand has extended any bar on entry to its own citizens and residents.
In addition, France is imposing a 10-day quarantine for travellers from Brazil, Chile, Argentina, South Africa and India, while the United Arab Emirates has suspended all flights from India.