U.S. and Canada share the same number format and international dialing code (+1). For international dialing purposes, they can be regarded as one country. I am not sure what is the historical reason behind that.
The number format is 3 digit area code, 3 digit exchange code, 4 digit number. E.g. +1 (404) 555-1234. The area codes (404 in the above example) correspond to U.S. states, Canadian provinces and large metropolitan areas, so that roughly tells you where the number is calling to.
Exchange codes (555 in the example) used to narrow it down further many years ago, but today, at least in the U.S., all numbers are portable and the exchange code means nothing. As long as it is within the same area code, I can move to the other side of the town, switch to a different phone company or mobile carrier and keep my number. The original assignments of exchange codes were specific to areas for land lines and carriers for mobile phones, but there are no restrictions to keep it that way anymore and it's been thoroughly mixed up. There is no simple way to tell whether a number is mobile or a land line, or what carrier the number actually belongs to.
As a side note, unlike many countries where the caller pays it all and there is a different rate depending on the type of the line called, in US and Canada
both the caller and the recipient pay for the call, according to whatever rate plan they each have. Typically this is unlimited for a flat monthly fee for land lines, certain number of included minutes for mobile, with per-minute charges for overages. Thus, there is no reason for callers to be concerned with whether the number is mobile or a land line.
P.S. I am sure this information has been compiled on many websites, particularly those selling long distance calling cards. You may want to
for some.