main achievement frame is AchievementFrame
The tabs are
AchievementFrameTab1 2 3
First is "Achievements", 2nd guild and 3rd statistics
Statistics might also be useful but that would be hard to tell, for now

AchievementFrame > AchievementFrameComparison
The comparison frame is AchievementFrameComparisonContainer (N/A)
Scroll buttons are AchievementFrameComparisonContainerScrollBarScrollDownButton (scrollDown) and AchievementFrameComparisonContainerScrollBarScrollUpButton (scrollUp)

The actual individual achievement data is in
AchievementFrameComparisonContainerScrollChild (ScrollChild) (not a typo)
It has achievements listed as:
AchievementFrameComparisonContainerButton1 .. 10
Always seems to be 10
Scrolling should move 1 new into the view and 1 old out of view

The buttons themselves represent one row (one achievement)
Our achievement is found in 
AchievementFrameComparisonContainerButton1Player (player)
AchievementFrameComparisonContainerButton1Friend (friend)
Ours has names while friend has no names
So we will have to use names from Player and dates from Friend

Name, title, is under AchievementFrameComparisonContainerButton1PlayerLabel (label)
Friend date achieved is under AchievementFrameComparisonContainerButton1FriendStatus (status)

We can also get achievement ID from the button frame
AchievementFrameComparisonContainerButton1P under the "id" property

Categories are under
AchievementFrameCategories (N/A) > AchievementFrameCategoriesContainer (N/A)

Structure is the same as AchievementFrameComparisonContainer
We have scroll child and scroll up/down
Although there's no scrolling so I'm not sure what we scroll
Not true - the buttons are categories to be expanded into
And clicking one does expand
So after we click we have to recalculate their positions

In AchievementFrameCategoriesContainer we have many buttons which correspond to categories
The best way of browsing them that I can see is reading the title of each
Since we are only interested in a few
AchievementFrameCategoriesContainerButton1 .. n

The title is the same structure as the achievement title
AchievementFrameCategoriesContainerButton1Label (label)
Under each button of course

We can also get the category ID and name from the button frame
AchievementFrameCategoriesContainerButton1
Under "categoryID" and "name"


[11:20 PM] [Virag's DT]: 23:20:04 INSPECT_ACHIEVEMENT_READY - (2) table: 000001AF07021540 
Fires when the achievement frame is ready
Argument #2 is the GUID of the player
None is fired when the frame is closed...
I guess we'll have to check each frame we go over

See
canInspect = CanInspect("unit", showError)
Arguments:
    unit - A unit to inspect (string, unitID)
    showError - True to fire a UI_ERROR_MESSAGE event (causing the default UI to display an error message) if the unit cannot be inspected; otherwise false (boolean)
Returns:
    canInspect - 1 if the unit can be inspected; otherwise nil (1nil)

Actually nevermind, this seems much easier and simpler:
completed, month, day, year = GetAchievementComparisonInfo(achievementID)
    completed
        boolean - Returns true/false depending on whether the unit has completed the achievement or not.
    month
        number - Month in which the unit has completed the achievement. Returns nil if completed is false.
    day
        number - Day of the month in which the unit has completed the achievement. Returns nil if completed is false.
    year
        number - Year (two digits, 21st century is assumed) in which the unit has completed the achievement. Returns nil if completed is false.
Only accurate after the after SetAchievementComparisonUnit is called and the INSPECT_ACHIEVEMENT_READY event has fired.

success = SetAchievementComparisonUnit(unit)
    success
        boolean - Returns true/false depending on whether the unit is valid.
-> INSPECT_ACHIEVEMENT_READY

522 -- Somebody Likes Me
523 -- 5 Exalted Reputations
524 -- 10 Exalted Reputations
521 -- 15 Exalted Reputations
520 -- 20 Exalted Reputations
519 -- 25 Exalted Reputations
518 -- 30 Exalted Reputations
1556 -- 25 Fish
1557 -- 50 Fish
1558 -- 100 Fish
238 -- An Honorable Kill
513 -- 100 Honorable Kills
515 -- 500 Honorable Kills
516 -- 1000 Honorable Kills
512 -- 5000 Honorable Kills
509 -- 10000 Honorable Kills
239 -- 25000 Honorable Kills
503 -- 50 Quests Completed
504 -- 100 Quests Completed
505 -- 250 Quests Completed
506 -- 500 Quests Completed
507 -- 1000 Quests Completed
1017 -- Can I Keep Him?
15 -- Plenty of Pets
1248 -- Plethora of Pets
1250 -- Shop Smart, Shop Pet...Smart
2516 -- Lil' Game Hunter
5876 -- Petting Zoo
11188 -- Broken Isles Explorer
11190 -- Broken Isles Pathfinder, Part One
11157 -- Loremaster of Legion
10763 -- Azsuna Matata
10790 -- Vrykul Story, Bro
11124 -- Good Suramaritan
10059 -- Ain't No Mountain High Enough
10698 -- That's Val'sharah Folks!
10672 -- Broken Isles Diplomat
10665 -- Explore Azsuna
10666 -- Explore Val'sharah
10667 -- Explore Highmountain
10668 -- Explore Stormheim
10669 -- Explore Suramar
12069 -- Explore Argus
2141 -- Stable Keeper
2142 -- Filling Up The Barn
2143 -- Leading the Cavalry
7382 -- Dynamic Duo
7383 -- Terrific Trio
7384 -- Quintessential Quintet
245 -- That Takes Class