In addition to the +100 XP for catching a Pokemon, there are three throw bonuses in the game:
Nice Throw - 10 XP
You must hit the Pokemon anywhere inside the shrinking circle to be eligible for this reward.
Great Throw - 50 XP
You must hit the Pokemon within the shrinking circle when the diameter of the circle is no more than 70% the diameter of the white outer ring.
Excellent Throw - 100 XP
You must hit the Pokemon within the shrinking circle when the diameter of the circle is no more than 30% of the diameter of the white outer ring.
Throw bonuses do not stack, and you are only given credit for the last one you are eligible for in this list (For example, a Great Throw will give you the Great Throw bonus, but not the Nice Throw bonus).
These throw bonuses will grant a catch bonus as determined by the size of the circle. The equation for this is
catchBonus = 2 - circleRadius, where 0 is the circle at its smallest possible point, and 1 is the white maxiumum radius.
In addition, there are three (stacking) bonuses that may be granted:
Curve Ball - 10 XP
These require you to throw a curveball and hit the Pokemon anywhere. There is a how-to available on this site. A curveball will increase your catch rate by x1.7 for every successful throw.
Bonus - 100 XP
This bonus is conferred on every 100th catch of a specific type of Pokemon. This bonus may be repeated. [Source, line 258]
New Pokemon - 500 XP
This bonus is conferred upon the first catch of any Pokemon, and is only given once per species.
First Throw - 50 XP
This bonus is conferred upon catching a Pokemon with the first Pokeball thrown. Berries do not negate one's ability to get this bonus.
Additionally, throw bonuses will confer a boost to the base catch rate for that Pokemon for that throw and all future throws.
There are also now catch streak bonuses that are applied upon the first catch of every day in a row:
- Days 1-6 - 500 XP
Upon catching at least one Pokemon anywhere from one to six days in a row, the game will confer a 500 XP bonus in addition to 600 Stardust.
- Day 7 - 2500 XP
After 7 days of continuously catching at least one Pokemon per day, the game will reward 2500 XP and 3000 Stardust.
Note that the streak will automatically reset after the seventh day. In other words, the eighth day of the streak will only confer a 500 XP bonus. The streak counter is also (obviously) reset if a day is missed. This reward can only be gotten once per day, and seems to reset at midnight in a player's local time zone.