Both the input and output are different:
git applytakes a patch (e.g. the output ofgit diff) and applies it to the working directory (or index, if--indexor--cachedis used).git amtakes a mailbox of commits formatted as an email messages (e.g. the output ofgit format-patch) and applies them to the current branch.
git am uses git apply behind the scenes, but does more work before (reading a Maildir or mbox, and parsing email messages) and after (creating commits).